Componentes - UESSalexmendoza/Diseno-Software GitHub Wiki

📚 Plataforma de Trueque de Libros – Modelado de Base de Datos

Este repositorio contiene el modelado de la base de datos para la Plataforma de Trueque de Libros entre Estudiantes desarrollada con Django + MySQL como parte del proyecto universitario UEES – Equipo 8.


🎯 Propósito del Modelado

Organizar de manera estructurada los datos de usuarios, libros, contactos y catálogos auxiliares, permitiendo la correcta operación del sistema de publicación e intercambio de libros.


🏗️ Entidades Principales

Entidad Descripción
Perfil Define el tipo de usuario (Administrador, Estudiante).
Usuario Representa a los estudiantes registrados en la plataforma.
Libro Publicaciones de libros disponibles para trueque.
CategoriaLibro Ámbito o temática del libro (Historia, Ciencia, Matemáticas, etc.).
EstadoLibro Condición física del libro (Nuevo, Buen Estado, Aceptable, etc.).
TipoContacto Formas de contacto habilitadas (Formulario, Correo electrónico, WhatsApp).
MensajeContacto Mensajes enviados por usuarios interesados en intercambiar un libro.

🔗 Relaciones entre Entidades

  • Usuario pertenece a un Perfil.
  • Libro es publicado por un Usuario.
  • Libro está clasificado en una Categoría y tiene un Estado.
  • MensajeContacto conecta un Usuario interesado con un Libro publicado.
  • Usuario puede tener definido un Tipo de contacto (opcional).

🛠️ Script de Creación de Tablas (MySQL)

-- Creación de tabla Perfil
CREATE TABLE Perfil (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(50) NOT NULL
);

-- Creación de tabla Usuario
CREATE TABLE Usuario (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    correo VARCHAR(100) NOT NULL UNIQUE,
    contrasena VARCHAR(255) NOT NULL,
    perfil_id INT NOT NULL,
    FOREIGN KEY (perfil_id) REFERENCES Perfil(id)
);

-- Creación de tabla CategoriaLibro
CREATE TABLE CategoriaLibro (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL
);

-- Creación de tabla EstadoLibro
CREATE TABLE EstadoLibro (
    id INT AUTO_INCREMENT PRIMARY KEY,
    descripcion VARCHAR(100) NOT NULL
);

-- Creación de tabla TipoContacto
CREATE TABLE TipoContacto (
    id INT AUTO_INCREMENT PRIMARY KEY,
    descripcion VARCHAR(100) NOT NULL
);

-- Creación de tabla Libro
CREATE TABLE Libro (
    id INT AUTO_INCREMENT PRIMARY KEY,
    titulo VARCHAR(150) NOT NULL,
    autor VARCHAR(100) NOT NULL,
    categoria_id INT NOT NULL,
    estado_id INT NOT NULL,
    usuario_id INT NOT NULL,
    FOREIGN KEY (categoria_id) REFERENCES CategoriaLibro(id),
    FOREIGN KEY (estado_id) REFERENCES EstadoLibro(id),
    FOREIGN KEY (usuario_id) REFERENCES Usuario(id)
);

-- Creación de tabla MensajeContacto
CREATE TABLE MensajeContacto (
    id INT AUTO_INCREMENT PRIMARY KEY,
    libro_id INT NOT NULL,
    usuario_interesado_id INT NOT NULL,
    mensaje TEXT NOT NULL,
    fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (libro_id) REFERENCES Libro(id),
    FOREIGN KEY (usuario_interesado_id) REFERENCES Usuario(id)
);