Draft
This commit is contained in:
parent
0abe31abf0
commit
371eb7e8b3
7 changed files with 140 additions and 9 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1 +1 @@
|
||||||
lab.db
|
db.sqlite
|
0
001.sql
0
001.sql
0
002.sql
0
002.sql
22
makefile
22
makefile
|
@ -1,14 +1,20 @@
|
||||||
DB_NAME := lab.db
|
DB_FILE := db.sqlite
|
||||||
SQL_FILES := 001.sql 002.sql
|
SCRIPTS_DIR := scripts
|
||||||
|
SQL_SCRIPTS := $(wildcard $(SCRIPTS_DIR)/*.sql)
|
||||||
|
|
||||||
.PHONY: all clean
|
.PHONY: all clean
|
||||||
|
|
||||||
all: $(SQL_FILES:.sql=.db)
|
all: $(DB_FILE)
|
||||||
|
|
||||||
%.db: %.sql
|
$(DB_FILE): $(SQL_SCRIPTS)
|
||||||
sqlite3 $(DB_NAME) < $<
|
@echo "Creating database: $@"
|
||||||
@echo ==============================
|
@for script in $^; do \
|
||||||
|
echo "Running script: $$script"; \
|
||||||
|
sqlite3 $@ < $$script; \
|
||||||
|
done
|
||||||
|
@echo "Database creation completed."
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(DB_NAME)
|
@echo "Cleaning up"
|
||||||
|
@rm -f $(DB_FILE)
|
||||||
|
@echo "Cleanup completed."
|
||||||
|
|
67
scripts/001.sql
Normal file
67
scripts/001.sql
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
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);
|
44
scripts/002.sql
Normal file
44
scripts/002.sql
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
-- Insert sample data into the Users table
|
||||||
|
INSERT
|
||||||
|
OR IGNORE INTO Users (username, name, address, telephone)
|
||||||
|
VALUES
|
||||||
|
('john_doe', 'John Doe', '123 Main St', '555-1234'),
|
||||||
|
(
|
||||||
|
'jane_smith',
|
||||||
|
'Jane Smith',
|
||||||
|
'456 Elm St',
|
||||||
|
'555-5678'
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Insert sample data into the Theaters table
|
||||||
|
INSERT
|
||||||
|
OR IGNORE INTO Theaters (theater_id, name, seats)
|
||||||
|
VALUES
|
||||||
|
(1, 'Theater A', 100),
|
||||||
|
(2, 'Theater B', 150);
|
||||||
|
|
||||||
|
-- Insert sample data into the Movies table
|
||||||
|
INSERT
|
||||||
|
OR IGNORE INTO Movies (movie_id, name)
|
||||||
|
VALUES
|
||||||
|
(1, 'Movie X'),
|
||||||
|
(2, 'Movie Y');
|
||||||
|
|
||||||
|
-- Insert sample data into the Shows table
|
||||||
|
INSERT
|
||||||
|
OR IGNORE INTO Shows (show_id, movie_id, theater_id, show_date)
|
||||||
|
VALUES
|
||||||
|
(1, 1, 1, '2022-01-01'),
|
||||||
|
(2, 2, 2, '2022-01-02');
|
||||||
|
|
||||||
|
-- Insert sample data into the Reservations table
|
||||||
|
INSERT
|
||||||
|
OR IGNORE INTO Reservations (
|
||||||
|
reservation_id,
|
||||||
|
username,
|
||||||
|
show_id,
|
||||||
|
reservation_date
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(1, 'john_doe', 1, CURRENT_TIMESTAMP),
|
||||||
|
(2, 'jane_smith', 2, CURRENT_TIMESTAMP);
|
14
scripts/003.sql
Normal file
14
scripts/003.sql
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
-- Select everything from the Users table
|
||||||
|
SELECT * FROM Users;
|
||||||
|
|
||||||
|
-- Select everything from the Theaters table
|
||||||
|
SELECT * FROM Theaters;
|
||||||
|
|
||||||
|
-- Select everything from the Movies table
|
||||||
|
SELECT * FROM Movies;
|
||||||
|
|
||||||
|
-- Select everything from the Shows table
|
||||||
|
SELECT * FROM Shows;
|
||||||
|
|
||||||
|
-- Select everything from the Reservations table
|
||||||
|
SELECT * FROM Reservations;
|
Loading…
Add table
Reference in a new issue