95 lines
3.3 KiB
SQL
95 lines
3.3 KiB
SQL
USE TicketFei;
|
|
|
|
CREATE TABLE usuarios (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nombre VARCHAR(255) NOT NULL,
|
|
apellidoPaterno VARCHAR(255) NOT NULL,
|
|
apellidoMaterno VARCHAR(255) NOT NULL,
|
|
usuario VARCHAR(255) NOT NULL,
|
|
contraseña VARCHAR(255) NOT NULL
|
|
);
|
|
INSERT INTO usuarios (nombre, apellidoPaterno, apellidoMaterno, usuario, contraseña) VALUES
|
|
('Aaron', 'Bonilla', 'Gonzalez', 's22', '123'),
|
|
('Carlos', 'Palestina', 'Alducin', 's23', '123'),
|
|
('Miguel', 'Diaz', 'Villa', 's24', '123');
|
|
|
|
SELECT * FROM usuarios;
|
|
DROP TABLE usuarios;
|
|
|
|
-- concierto
|
|
CREATE TABLE conciertos (
|
|
id_concierto INT AUTO_INCREMENT PRIMARY KEY,
|
|
nombre_concierto VARCHAR(255) NOT NULL,
|
|
artista VARCHAR(255) NOT NULL,
|
|
fecha DATE NOT NULL,
|
|
calle VARCHAR(255) NOT NULL,
|
|
colonia VARCHAR(255) NOT NULL,
|
|
numero_direccion VARCHAR(255) NOT NULL,
|
|
codigo_postal VARCHAR(10) NOT NULL,
|
|
estado VARCHAR(255) NOT NULL,
|
|
capacidad_total INT NOT NULL
|
|
);
|
|
INSERT INTO conciertos (nombre_concierto, artista, fecha, calle, colonia, numero_direccion, codigo_postal, estado, capacidad_total)
|
|
SELECT * FROM conciertos;
|
|
DROP TABLE conciertos;
|
|
-- Zona
|
|
CREATE TABLE zonas (
|
|
id_zona INT AUTO_INCREMENT PRIMARY KEY,
|
|
id_concierto INT NOT NULL,
|
|
nombre_zona ENUM('General', 'Plata', 'Oro', 'VIP') NOT NULL,
|
|
capacidad INT NOT NULL,
|
|
precio DECIMAL(10,2) NOT NULL,
|
|
FOREIGN KEY (id_concierto) REFERENCES conciertos(id_concierto) ON DELETE CASCADE
|
|
);
|
|
|
|
DROP TABLE zonas;
|
|
-- Obtener todos los conciertos con sus zonas y precios
|
|
SELECT c.id_concierto, c.nombre_concierto, c.artista, c.fecha,
|
|
z.nombre_zona, z.capacidad, z.precio
|
|
FROM conciertos c
|
|
JOIN zonas z ON c.id_concierto = z.id_concierto;
|
|
|
|
-- Consultar un concierto específico con sus zonas
|
|
SELECT c.nombre_concierto, c.artista, c.fecha,
|
|
z.nombre_zona, z.capacidad, z.precio
|
|
FROM conciertos c
|
|
JOIN zonas z ON c.id_concierto = z.id_concierto
|
|
WHERE c.id_concierto = 1;
|
|
|
|
-- Tabla Asientos
|
|
CREATE TABLE asientos (
|
|
id_asiento INT AUTO_INCREMENT PRIMARY KEY,
|
|
id_zona INT NOT NULL,
|
|
numero_asiento INT NOT NULL,
|
|
estado ENUM('disponible', 'ocupado') NOT NULL DEFAULT 'disponible',
|
|
FOREIGN KEY (id_zona) REFERENCES zonas(id_zona) ON DELETE CASCADE,
|
|
UNIQUE (id_zona, numero_asiento) -- Para evitar asientos duplicados en la misma zona
|
|
);
|
|
DROP TABLE asientos;
|
|
|
|
-- Tabla Boletos
|
|
CREATE TABLE boletos (
|
|
id_boleto INT AUTO_INCREMENT PRIMARY KEY,
|
|
id_concierto INT NOT NULL,
|
|
id_zona INT NOT NULL,
|
|
id_asiento INT NOT NULL,
|
|
nombre_comprador VARCHAR(255) NOT NULL,
|
|
precio DECIMAL(10,2) NOT NULL,
|
|
fecha_concierto DATE NOT NULL,
|
|
artista VARCHAR(255) NOT NULL,
|
|
FOREIGN KEY (id_concierto) REFERENCES conciertos(id_concierto) ON DELETE CASCADE,
|
|
FOREIGN KEY (id_zona) REFERENCES zonas(id_zona) ON DELETE CASCADE,
|
|
FOREIGN KEY (id_asiento) REFERENCES asientos(id_asiento) ON DELETE CASCADE,
|
|
UNIQUE (id_asiento) -- Evita que un asiento se venda dos veces
|
|
);
|
|
DROP TABLE boletos;
|
|
|
|
CREATE TABLE ventas (
|
|
id_venta INT AUTO_INCREMENT PRIMARY KEY,
|
|
id_concierto INT NOT NULL,
|
|
id_boleto INT NOT NULL,
|
|
fecha_venta DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (id_concierto) REFERENCES conciertos(id_concierto) ON DELETE CASCADE,
|
|
FOREIGN KEY (id_boleto) REFERENCES boletos(id_boleto) ON DELETE CASCADE
|
|
);
|