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
		Add a link
		
	
		Reference in a new issue
	
	 Imbus
						Imbus