Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
-- =============================== -- CREACIÓN DE BASE DE DATOS -- =============================== CREATE DATABASE IF NOT EXISTS AeropuertoDB; USE AeropuertoDB; -- =============================== -- TABLA: Aerolineas -- =============================== CREATE TABLE Aerolineas ( id_aerolinea INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(100) NOT NULL UNIQUE, pais_origen VARCHAR(50), fecha_fundacion DATE, estado ENUM('ACTIVA', 'INACTIVA') DEFAULT 'ACTIVA' ) COMMENT='Información de aerolíneas operantes'; -- =============================== -- TABLA: Aviones -- =============================== CREATE TABLE Aviones ( id_avion INT AUTO_INCREMENT PRIMARY KEY, modelo VARCHAR(50) NOT NULL, capacidad INT NOT NULL CHECK (capacidad > 0), id_aerolinea INT NOT NULL, fecha_compra DATE, FOREIGN KEY (id_aerolinea) REFERENCES Aerolineas(id_aerolinea) ON DELETE CASCADE ON UPDATE CASCADE ) COMMENT='Información de aviones asignados a aerolíneas'; -- =============================== -- TABLA: Vuelos -- =============================== CREATE TABLE Vuelos ( id_vuelo INT AUTO_INCREMENT PRIMARY KEY, numero_vuelo VARCHAR(20) NOT NULL UNIQUE, id_avion INT NOT NULL, origen VARCHAR(50) NOT NULL, destino VARCHAR(50) NOT NULL, fecha_salida DATETIME NOT NULL, fecha_llegada DATETIME NOT NULL, estado ENUM('PROGRAMADO', 'EN_VUELO', 'CANCELADO', 'COMPLETADO') DEFAULT 'PROGRAMADO', FOREIGN KEY (id_avion) REFERENCES Aviones(id_avion) ON DELETE RESTRICT ON UPDATE CASCADE ) COMMENT='Información de vuelos'; -- =============================== -- TABLA: Pasajeros -- =============================== CREATE TABLE Pasajeros ( id_pasajero INT AUTO_INCREMENT PRIMARY KEY, documento_identidad VARCHAR(20) NOT NULL UNIQUE, nombre_completo VARCHAR(100) NOT NULL, nacionalidad VARCHAR(50), fecha_nacimiento DATE ) COMMENT='Información básica de los pasajeros'; -- =============================== -- TABLA: Reservas -- =============================== CREATE TABLE Reservas ( id_reserva INT AUTO_INCREMENT PRIMARY KEY, id_vuelo INT NOT NULL, id_pasajero INT NOT NULL, fecha_reserva DATETIME DEFAULT CURRENT_TIMESTAMP, asiento VARCHAR(5), clase ENUM('ECONOMICA', 'BUSINESS', 'PRIMERA') DEFAULT 'ECONOMICA', estado ENUM('CONFIRMADA', 'CANCELADA', 'CHECKIN') DEFAULT 'CONFIRMADA', FOREIGN KEY (id_vuelo) REFERENCES Vuelos(id_vuelo) ON DELETE CASCADE, FOREIGN KEY (id_pasajero) REFERENCES Pasajeros(id_pasajero) ON DELETE CASCADE, UNIQUE (id_vuelo, id_pasajero) -- evita duplicados en un mismo vuelo ) COMMENT='Relación entre vuelos y pasajeros'; -- =============================== -- TABLA: Equipajes -- =============================== CREATE TABLE Equipajes ( id_equipaje INT AUTO_INCREMENT PRIMARY KEY, id_reserva INT NOT NULL, peso DECIMAL(5,2) CHECK (peso >= 0), tipo ENUM('MANO', 'BODEGA') DEFAULT 'BODEGA', estado ENUM('REGISTRADO', 'CARGADO', 'PERDIDO', 'ENTREGADO') DEFAULT 'REGISTRADO', FOREIGN KEY (id_reserva) REFERENCES Reservas(id_reserva) ON DELETE CASCADE ) COMMENT='Registro y seguimiento de equipajes'; -- =============================== -- TABLA: Empleados -- =============================== CREATE TABLE Empleados ( id_empleado INT AUTO_INCREMENT PRIMARY KEY, nombre_completo VARCHAR(100) NOT NULL, cargo ENUM('PILOTO', 'COPILOTO', 'AUXILIAR_VUELO', 'LOGISTICA_TIERRA', 'MANTENIMIENTO') NOT NULL, documento_identidad VARCHAR(20) NOT NULL UNIQUE, fecha_ingreso DATE NOT NULL, estado ENUM('ACTIVO', 'INACTIVO') DEFAULT 'ACTIVO' ) COMMENT='Personal operativo y de logística del aeropuerto'; -- =============================== -- TABLA: Tripulaciones (asignación a vuelos) -- =============================== CREATE TABLE Tripulaciones ( id_vuelo INT, id_empleado INT, rol ENUM('PILOTO', 'COPILOTO', 'AUXILIAR'), PRIMARY KEY (id_vuelo, id_empleado), FOREIGN KEY (id_vuelo) REFERENCES Vuelos(id_vuelo) ON DELETE CASCADE, FOREIGN KEY (id_empleado) REFERENCES Empleados(id_empleado) ON DELETE CASCADE ) COMMENT='Asignación de empleados a vuelos como tripulación'; -- =============================== -- TABLA: Mantenimientos -- =============================== CREATE TABLE Mantenimientos ( id_mantenimiento INT AUTO_INCREMENT PRIMARY KEY, id_avion INT NOT NULL, fecha DATE NOT NULL, tipo ENUM('PREVENTIVO', 'CORRECTIVO') NOT NULL, descripcion TEXT, id_empleado INT, FOREIGN KEY (id_avion) REFERENCES Aviones(id_avion) ON DELETE CASCADE, FOREIGN KEY (id_empleado) REFERENCES Empleados(id_empleado) ON DELETE SET NULL ) COMMENT='Registro de mantenimientos realizados a aviones'; -- =============================== -- ÍNDICES ADICIONALES PARA CONSULTAS RÁPIDAS -- =============================== CREATE INDEX idx_vuelos_fecha ON Vuelos (fecha_salida); CREATE INDEX idx_reservas_pasajero ON Reservas (id_pasajero); CREATE INDEX idx_mantenimientos_avion_fecha ON Mantenimientos (id_avion, fecha); CREATE INDEX idx_tripulaciones_empleado ON Tripulaciones (id_empleado);

Stuck with a problem? Got Error? Ask AI support!

Copy Clear