esquema base datos - ManuelJDonoso/Proyecto_daw GitHub Wiki

8 - Esquema de Base de Datos

Propósito y Alcance

Este documento describe el esquema de base de datos para la aplicación Crónicas de Mérida. Detalla todas las tablas, vistas, relaciones y desencadenadores (triggers) que respaldan la funcionalidad de la aplicación. Este esquema sirve como base para el almacenamiento y recuperación de datos en todos los módulos de la aplicación, incluyendo el sistema de foros, gestión de materiales, gestión de usuarios y gestión de eventos.

Para información sobre la conexión a la base de datos en el código, consulta la sección de Arquitectura Principal. Para información sobre la implementación de la Gestión de Materiales, consulta la sección de Gestión de Materiales.

Visión General de la Base de Datos

La base de datos proyecto_daw es una base de datos MySQL/MariaDB que proporciona almacenamiento persistente para todos los datos de la aplicación. Contiene 15 tablas, 10 vistas y 1 desencadenador para respaldar la funcionalidad de la aplicación.

Diagrama de Relaciones de Entidad

imagen

El siguiente diagrama ilustra las tablas principales y sus relaciones en el esquema de la base de datos:

Nota: Aquí se incluiría un diagrama ER si estuviera disponible.

Tablas de Gestión de Usuarios

El sistema de gestión de usuarios utiliza dos tablas principales para gestionar los usuarios y sus roles.

usuarios

Almacena información de cuentas de usuario, incluyendo detalles de autenticación y asignación de roles.

Columna Tipo Descripción
id int Clave primaria
nombre_usuario varchar(50) Nombre de usuario único
nombre varchar(100) Nombre completo
email varchar(100) Dirección de correo electrónico única
password varchar(255) Contraseña encriptada
rol_id int Clave foránea a la tabla roles
reset_token varchar(255) Token para restablecimiento de contraseña
token_expiracion datetime Expiración del token de restablecimiento

roles

Define los roles de usuario disponibles en el sistema con los permisos correspondientes.

Columna Tipo Descripción
id int Clave primaria
nombre varchar(50) Nombre del rol (visitante, jugador, moderador, administrador)

Tablas del Sistema de Foros

El sistema de foros utiliza cuatro tablas principales para organizar las discusiones en una estructura jerárquica.

categorias

Unidades organizativas de nivel superior para los temas del foro.

Columna Tipo Descripción
id int Clave primaria
nombre varchar(100) Nombre de la categoría
permitir_crear_temas tinyint(1) Si los usuarios pueden crear temas en esta categoría

temas

Temas dentro de las categorías que contienen hilos de discusión.

Columna Tipo Descripción
id int Clave primaria
categoria_id int Clave foránea a la tabla categorias
titulo varchar(255) Título del tema
contenido text Contenido de la publicación inicial
usuario_id int Clave foránea a la tabla usuarios
created_at timestamp Marca de tiempo de creación
permitir_publicaciones tinyint(1) Si se permiten respuestas

publicaciones

Publicaciones individuales dentro de los temas.

Columna Tipo Descripción
id int Clave primaria
tema_id int Clave foránea a la tabla temas
contenido text Contenido de la publicación
usuario_id int Clave foránea a la tabla usuarios
created_at timestamp Marca de tiempo de la publicación

me_gustas

Rastrea los "me gusta" en las publicaciones.

Columna Tipo Descripción
id int Clave primaria
publicacion_id int Clave foránea a la tabla publicaciones
usuario_id int Clave foránea a la tabla usuarios
created_at timestamp Marca de tiempo del "me gusta"

Tablas de Gestión de Materiales

El sistema de gestión de materiales utiliza cinco tablas para rastrear los elementos físicos que pueden ser prestados a los miembros.

tipo_material

Categoriza los materiales por tipo.

Columna Tipo Descripción
id int Clave primaria
nombre varchar(50) Nombre del tipo (e.g., "Cartas", "Libros")

material

Define los tipos de materiales disponibles.

Columna Tipo Descripción
id int Clave primaria
nombre varchar(100) Nombre del material
descripcion text Descripción del material
edad_minima int Edad mínima recomendada
tipo_id int Clave foránea a la tabla tipo_material
stock int Cantidad disponible

prestamos

Registra los préstamos de materiales a los usuarios.

Columna Tipo Descripción
id int Clave primaria
material_id int Clave foránea a la tabla material
usuario_id int Clave foránea a la tabla usuarios
fecha_inicio date Fecha de inicio del préstamo
fecha_fin date Fecha de finalización del préstamo
devuelto tinyint(1) Indicador de si el material ha sido devuelto

devoluciones

Registra las devoluciones de materiales.

Columna Tipo Descripción
id int Clave primaria
prestamo_id int Clave foránea a la tabla prestamos
fecha date Fecha de devolución
estado varchar(50) Estado del material al ser devuelto

inventario

Mantiene el inventario de materiales.

Columna Tipo Descripción
id int Clave primaria
material_id int Clave foránea a la tabla material
cantidad int Cantidad total disponible