PRAGMA foreign_keys = OFF; -- Drop the tables if they exist DROP TABLE IF EXISTS Reservations; DROP TABLE IF EXISTS Shows; DROP TABLE IF EXISTS Movies; DROP TABLE IF EXISTS Theaters; DROP TABLE IF EXISTS Users; PRAGMA foreign_keys = ON; -- Create the Users table CREATE TABLE IF NOT EXISTS Users ( username VARCHAR(50) PRIMARY KEY, name VARCHAR(100) NOT NULL, address VARCHAR(200), telephone VARCHAR(20) NOT NULL ); -- Create the Theaters table CREATE TABLE IF NOT EXISTS Theaters ( theater_id INTEGER PRIMARY KEY, name VARCHAR(100) NOT NULL, seats INTEGER NOT NULL ); -- Create the Movies table CREATE TABLE IF NOT EXISTS Movies ( movie_id INTEGER PRIMARY KEY, name VARCHAR(100) NOT NULL ); -- Create the Shows table CREATE TABLE IF NOT EXISTS Shows ( show_id INTEGER PRIMARY KEY, movie_id INTEGER NOT NULL, theater_id INTEGER NOT NULL, show_date DATE NOT NULL, FOREIGN KEY (movie_id) REFERENCES Movies (movie_id), FOREIGN KEY (theater_id) REFERENCES Theaters (theater_id) ); -- Create the Reservations table CREATE TABLE IF NOT EXISTS Reservations ( reservation_id INTEGER PRIMARY KEY, username VARCHAR(50) NOT NULL, show_id INTEGER NOT NULL, reservation_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (username) REFERENCES Users (username), FOREIGN KEY (show_id) REFERENCES Shows (show_id) ); -- Index for Users table CREATE INDEX IF NOT EXISTS idx_users_username ON Users (username); -- Index for Shows table CREATE INDEX IF NOT EXISTS idx_shows_movie_id ON Shows (movie_id); CREATE INDEX IF NOT EXISTS idx_shows_theater_id ON Shows (theater_id); -- Index for Reservations table CREATE INDEX IF NOT EXISTS idx_reservations_username ON Reservations (username); CREATE INDEX IF NOT EXISTS idx_reservations_show_id ON Reservations (show_id);