Base de Datos

El sistema utiliza una base de datos relacional con 8 tablas principales gestionadas a través de Eloquent ORM.

1. Diagrama ER

2. Tablas

2.1 Tabla: users

Almacena la información de los usuarios del sistema.

Columna Tipo Nulo Clave Descripción
id BIGINT UNSIGNED NO PK Identificador único
name VARCHAR(255) NO - Nombre completo
email VARCHAR(255) NO UNIQUE Correo electrónico
password VARCHAR(255) NO - Contraseña hasheada
role_id BIGINT UNSIGNED YES FK Referencia a roles
email_verified_at TIMESTAMP YES - Verificación de email
remember_token VARCHAR(100) YES - Token de sesión
created_at TIMESTAMP YES - Fecha de creación
updated_at TIMESTAMP YES - Fecha de actualización

2.2 Tabla: roles

Define los roles disponibles en el sistema.

Columna Tipo Nulo Clave Descripción
id BIGINT UNSIGNED NO PK Identificador único
name VARCHAR(255) NO - Nombre del rol
created_at TIMESTAMP YES - Fecha de creación
updated_at TIMESTAMP YES - Fecha de actualización
Datos por defecto: asistente (id=1), ponente (id=2), admin (id=3)

2.3 Tabla: posters

Almacena los pósters del congreso.

Columna Tipo Nulo Clave Descripción
id BIGINT UNSIGNED NO PK Identificador único
title VARCHAR(255) NO - Título del póster
summary TEXT NO - Resumen o abstract
url_file VARCHAR(255) NO - Ruta al archivo PDF
type_presentation_id BIGINT UNSIGNED NO FK Tipo de presentación
user_id BIGINT UNSIGNED NO FK Autor del póster
category_id BIGINT UNSIGNED NO FK Categoría
published BOOLEAN NO - Estado de publicación
created_at TIMESTAMP YES - Fecha de creación
updated_at TIMESTAMP YES - Fecha de actualización

2.4 Tabla: presentations

Almacena las presentaciones del congreso.

Columna Tipo Nulo Clave Descripción
id BIGINT UNSIGNED NO PK Identificador único
title VARCHAR(255) NO - Título
summary TEXT NO - Resumen
url_file VARCHAR(255) NO - Ruta al archivo
type_file VARCHAR(50) NO - Tipo (PDF, POWERPOINT, etc.)
type_presentation_id BIGINT UNSIGNED NO FK Tipo de presentación
user_id BIGINT UNSIGNED NO FK Autor
category_id BIGINT UNSIGNED NO FK Categoría
published BOOLEAN NO - Estado
created_at TIMESTAMP YES - Fecha de creación
updated_at TIMESTAMP YES - Fecha de actualización

2.5 Tabla: sponsors

Almacena los patrocinadores del congreso.

Columna Tipo Nulo Clave Descripción
id BIGINT UNSIGNED NO PK Identificador único
name VARCHAR(255) NO - Nombre
email VARCHAR(255) NO UNIQUE Correo electrónico
phone VARCHAR(20) NO - Teléfono
amount_contributed DECIMAL(15,2) NO - Monto contribuido
type_sponsor_id BIGINT UNSIGNED NO FK Tipo de patrocinador
created_at TIMESTAMP YES - Fecha de creación
updated_at TIMESTAMP YES - Fecha de actualización

2.6 Tabla: categories

Categorías para clasificar presentaciones y pósters.

Columna Tipo Nulo Clave Descripción
id BIGINT UNSIGNED NO PK Identificador único
name VARCHAR(255) NO - Nombre
description TEXT YES - Descripción
created_at TIMESTAMP YES - Fecha de creación
updated_at TIMESTAMP YES - Fecha de actualización

2.7 Tabla: type_sponsors

Tipos de patrocinadores (oro, plata, bronce, etc.).

Columna Tipo Nulo Clave Descripción
id BIGINT UNSIGNED NO PK Identificador único
name VARCHAR(255) NO - Nombre del tipo
created_at TIMESTAMP YES - Fecha de creación
updated_at TIMESTAMP YES - Fecha de actualización
Datos por defecto: oro (id=1), plata (id=2), bronce (id=3), colaborador (id=4), institucional (id=5)

2.8 Tabla: type_presentations

Tipos de presentaciones (oral, poster).

Columna Tipo Nulo Clave Descripción
id BIGINT UNSIGNED NO PK Identificador único
name VARCHAR(255) NO - Nombre
description TEXT YES - Descripción
created_at TIMESTAMP YES - Fecha de creación
updated_at TIMESTAMP YES - Fecha de actualización
Datos por defecto: oral (id=1), poster (id=2)

3. Migraciones

Las migraciones se encuentran en database/migrations/:

Archivo Tabla Descripción
0001_01_01_000000_create_users_table.php users Tabla base de usuarios + sessions
0001_01_01_000001_create_cache_table.php cache Tabla de caché
0001_01_01_000002_create_jobs_table.php jobs Cola de trabajos
2026_02_25_182641_create_roles_table.php roles Tabla de roles
2026_02_26_090107_update_users_table.php users Añade columna role_id
2026_03_08_103502_create_type_sponsors_table.php type_sponsors Tipos de patrocinadores
2026_03_08_104113_create_sponsors_table.php sponsors Patrocinadores
2026_03_09_203435_create_categories_table.php categories Categorías
2026_03_11_093845_create_type_presentations_table.php type_presentations Tipos de presentaciones
2026_03_11_095215_create_presentations_table.php presentations Presentaciones
2026_03_11_111538_update_presentations_table.php presentations Añade FK
2026_03_17_181524_create_posters_table.php posters Pósters
2026_03_17_183000_update_posters_table.php posters Añade FK

Ejemplo de Migración

return Blueprint::table('posters', function (Blueprint $table) {
    $table->id();
    $table->string('title');
    $table->text('summary');
    $table->string('url_file');
    $table->foreignId('type_presentation_id')
          ->constrained('type_presentations')
          ->onDelete('cascade');
    $table->foreignId('user_id')
          ->constrained('users')
          ->onDelete('cascade');
    $table->foreignId('category_id')
          ->constrained('categories')
          ->onDelete('cascade');
    $table->boolean('published')->default(false);
    $table->timestamps();
});