/* SCORE TRACKER DATABASE LAYOUT scores: sports: *sport_id* | sport_name | currently_active divisions: *division_id* | division_name | gender | *sport_id* | currently_active teams: *team_id* | team_name | ~sport_id~ | currently_active seasons: *season_id* | school_year games: *game_id* | ~division_id~ | ~season_id~ | game_date | ~team1_id~ | ~team2_id~ | team1_score | team2_score | ~submitter_id~ | updated_timestamp accounts: users: *user_id* | email | salt | password_hash | role | approved sessions: *session_id* | ~user_id~ | expiration_date */ BEGIN; CREATE SCHEMA IF NOT EXISTS scores; CREATE TABLE IF NOT EXISTS scores.sports( sport_id BIGINT GENERATED ALWAYS AS IDENTITY, sport_name TEXT UNIQUE NOT NULL, currently_active BOOLEAN DEFAULT TRUE, PRIMARY KEY(sport_id) ); CREATE TABLE IF NOT EXISTS scores.divisions( division_id BIGINT GENERATED ALWAYS AS IDENTITY, division_name TEXT NOT NULL, gender VARCHAR(1) CHECK (gender IN ( 'F', 'M' ) ), sport_id BIGINT, currently_active BOOLEAN DEFAULT TRUE, PRIMARY KEY(division_id), CONSTRAINT fk_sport FOREIGN KEY(sport_id) REFERENCES scores.sports(sport_id) ); CREATE TABLE IF NOT EXISTS scores.teams( team_id BIGINT GENERATED ALWAYS AS IDENTITY, team_name TEXT NOT NULL, sport_id BIGINT, currently_active BOOLEAN DEFAULT TRUE, PRIMARY KEY(team_id), CONSTRAINT fk_sport FOREIGN KEY(sport_id) REFERENCES scores.sports(sport_id) ); CREATE TABLE IF NOT EXISTS scores.seasons( season_id BIGINT GENERATED ALWAYS AS IDENTITY, school_year INTEGER NOT NULL, PRIMARY KEY(season_id) ); CREATE TABLE IF NOT EXISTS scores.games( game_id BIGINT GENERATED ALWAYS AS IDENTITY, division_id BIGINT, season_id BIGINT, game_date DATE, team1_id BIGINT, team2_id BIGINT, team1_score INTEGER, team2_score INTEGER, /* submitter_id BIGINT,*/ updated_timestamp TIMESTAMP WITH TIME ZONE DEFAULT now(), PRIMARY KEY(game_id), CONSTRAINT fk_division FOREIGN KEY(division_id) REFERENCES scores.divisions(division_id), CONSTRAINT fk_season FOREIGN KEY(season_id) REFERENCES scores.seasons(season_id), CONSTRAINT fk_team1 FOREIGN KEY(team1_id) REFERENCES scores.teams(team_id), CONSTRAINT fk_team2 FOREIGN KEY(team2_id) REFERENCES scores.teams(team_id) /* CONSTRAINT fk_submitter FOREIGN KEY(submitter_id) REFERENCES accounts.users(user_id)*/ ); COMMIT;