Add CT3531 Database Systems II
This commit is contained in:
@ -0,0 +1,82 @@
|
||||
CREATE TABLE teams (
|
||||
team_name VARCHAR(255) NOT NULL, -- assuming team name is unique
|
||||
home_venue VARCHAR(255) NOT NULL, -- assuming that two teams could share a home venue (e.g, A teams and B teams)
|
||||
manager VARCHAR(255), -- assuming no other information is known/required for managers other than name
|
||||
|
||||
PRIMARY KEY (team_name)
|
||||
);
|
||||
|
||||
CREATE TABLE players (
|
||||
player_id INT NOT NULL AUTO_INCREMENT,
|
||||
team_name VARCHAR(255) NOT NULL,
|
||||
squad_number INT NOT NULL, -- assuming squad number is unique within squads
|
||||
player_name VARCHAR(255) NOT NULL,
|
||||
|
||||
PRIMARY KEY (player_id),
|
||||
FOREIGN KEY (team_name) REFERENCES teams(team_name)
|
||||
);
|
||||
|
||||
CREATE TABLE games (
|
||||
game_id INT NOT NULL AUTO_INCREMENT, -- no other uniquely identifying information about a game (there could be two otherwise identical games)
|
||||
home_team VARCHAR(255) NOT NULL, -- venue can be inferred from this
|
||||
away_team VARCHAR(255) NOT NULL,
|
||||
path_to_heap_file VARCHAR(255),
|
||||
|
||||
PRIMARY KEY (game_id),
|
||||
FOREIGN KEY (home_team) REFERENCES teams(team_name),
|
||||
FOREIGN KEY (away_team) REFERENCES teams(team_name)
|
||||
);
|
||||
|
||||
-- this table should only be inserted into upon the completion of a game
|
||||
CREATE TABLE results (
|
||||
game_id INT NOT NULL,
|
||||
winner VARCHAR(255), -- NULL value indicates a draw
|
||||
|
||||
PRIMARY KEY (game_id),
|
||||
FOREIGN KEY (winner) REFERENCES teams(team_name)
|
||||
);
|
||||
|
||||
-- data redundancy here: players rarely change during match
|
||||
CREATE TABLE active_players (
|
||||
active_time TIMESTAMP NOT NULL,
|
||||
game_id INT NOT NULL,
|
||||
player_id INT NOT NULL,
|
||||
|
||||
PRIMARY KEY (active_time, player_id),
|
||||
FOREIGN KEY (game_id) REFERENCES games(game_id),
|
||||
FOREIGN KEY (player_id) REFERENCES players(player_id)
|
||||
);
|
||||
|
||||
CREATE TABLE substitutions (
|
||||
substitution_time TIMESTAMP NOT NULL,
|
||||
game_id INT NOT NULL,
|
||||
off_player_id INT NOT NULL,
|
||||
on_player_id INT NOT NULL,
|
||||
|
||||
PRIMARY KEY (substitution_time, off_player_id), -- assuming two substitutions could be done at the same time
|
||||
FOREIGN KEY (game_id) REFERENCES games(game_id),
|
||||
FOREIGN KEY (off_player_id) REFERENCES players(player_id),
|
||||
FOREIGN KEY (on_player_id) REFERENCES players(player_id)
|
||||
);
|
||||
|
||||
CREATE TABLE sendoffs (
|
||||
sendoff_time TIMESTAMP NOT NULL,
|
||||
game_id INT NOT NULL,
|
||||
player_id INT NOT NULL,
|
||||
|
||||
PRIMARY KEY (sendoff_time, player_id), -- assuming two sendoffs could be done at the same time - otherwise could just use time
|
||||
FOREIGN KEY (game_id) REFERENCES games(game_id),
|
||||
FOREIGN KEY (player_id) REFERENCES players(player_id)
|
||||
);
|
||||
|
||||
CREATE TABLE goals (
|
||||
goal_time TIMESTAMP NOT NULL, -- assuming two goals can't be scored at the same time
|
||||
game_id INT NOT NULL,
|
||||
player_id INT NOT NULL, -- cam infer squad number from this
|
||||
benefitting_team VARCHAR(255) NOT NULL, -- the team to which the points are awarded for this goal
|
||||
|
||||
PRIMARY KEY (goal_time, game_id),
|
||||
FOREIGN KEY (game_id) REFERENCES games(game_id),
|
||||
FOREIGN KEY (player_id) REFERENCES players(player_id),
|
||||
FOREIGN KEY (benefitting_team) REFERENCES teams(team_name)
|
||||
);
|
Reference in New Issue
Block a user