Files
contenedor_ibiza/database.sql

82 lines
3.8 KiB
SQL

-- Sistema de Gestión de Contenedores - Base de Datos
-- Creación de base de datos y tablas
-- NOTA: Se usan DROP TABLE para asegurar una instalación limpia.
USE contenedor_ibiza1;
-- Desactivar checks de llaves foráneas temporalmente para permitir drops
SET FOREIGN_KEY_CHECKS = 0;
-- Eliminar tablas si existen para evitar conflictos de estructura
DROP TABLE IF EXISTS assignments;
DROP TABLE IF EXISTS schedules;
DROP TABLE IF EXISTS users;
SET FOREIGN_KEY_CHECKS = 1;
-- Tabla de usuarios
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
full_name VARCHAR(100) NOT NULL,
role ENUM('admin', 'coordinador', 'ayudante') NOT NULL DEFAULT 'ayudante',
active TINYINT(1) NOT NULL DEFAULT 1,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_role (role),
INDEX idx_active (active)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Tabla de horarios del contenedor
CREATE TABLE schedules (
id INT AUTO_INCREMENT PRIMARY KEY,
day_of_week TINYINT NOT NULL COMMENT '0=Domingo, 1=Lunes, ..., 6=Sábado',
opening_time_1 TIME NULL COMMENT 'Primer horario de apertura',
opening_time_2 TIME NULL COMMENT 'Segundo horario de apertura',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY unique_day (day_of_week)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Tabla de asignaciones/rotaciones
CREATE TABLE assignments (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
week_number INT NOT NULL COMMENT 'Número de semana del año (1-53)',
year INT NOT NULL,
start_date DATE NOT NULL COMMENT 'Fecha de inicio (siempre domingo)',
end_date DATE NOT NULL COMMENT 'Fecha de fin (siempre sábado)',
order_position INT NOT NULL DEFAULT 0 COMMENT 'Posición en el orden para drag & drop',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
UNIQUE KEY unique_week (year, week_number),
INDEX idx_user (user_id),
INDEX idx_dates (start_date, end_date),
INDEX idx_year_week (year, week_number)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Insertar horarios por defecto
INSERT INTO schedules (day_of_week, opening_time_1, opening_time_2) VALUES
(0, '19:00:00', '22:00:00'), -- Domingo
(1, '06:30:00', '09:00:00'), -- Lunes
(2, '19:00:00', '22:00:00'), -- Martes
(3, '06:30:00', '09:00:00'), -- Miércoles
(4, '19:00:00', '22:00:00'), -- Jueves
(5, '06:30:00', '06:30:00'), -- Viernes
(6, NULL, NULL); -- Sábado (cerrado)
-- Insertar usuario administrador por defecto
-- Password: admin123
INSERT INTO users (username, password, full_name, role, active) VALUES
('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Administrador', 'admin', 1);
-- Insertar usuarios helpers de ejemplo
INSERT INTO users (username, password, full_name, role, active) VALUES
('ana', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Ana García', 'ayudante', 1),
('esperanza', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Esperanza López', 'ayudante', 1),
('mary', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Mary Martínez', 'ayudante', 1),
('bety', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Bety Rodríguez', 'ayudante', 1),
('mariela', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Mariela Sánchez', 'ayudante', 1),
('coord1', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Coordinador Ejemplo', 'coordinador', 1);