Base de Datos
El sistema utiliza una base de datos relacional con 8 tablas principales gestionadas a través de Eloquent ORM.
Tabla de Contenidos
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 |
| 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 |
| 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();
});