first commit
This commit is contained in:
84
wfl.sql
Normal file
84
wfl.sql
Normal file
@@ -0,0 +1,84 @@
|
||||
-- =========================
|
||||
-- TEAMS
|
||||
-- =========================
|
||||
CREATE TABLE teams (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
external_id VARCHAR(100) UNIQUE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
short_name VARCHAR(100),
|
||||
logo_url TEXT,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_teams_external_id ON teams(external_id);
|
||||
|
||||
|
||||
-- =========================
|
||||
-- PLAYERS
|
||||
-- =========================
|
||||
CREATE TABLE players (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
external_id VARCHAR(100) UNIQUE,
|
||||
team_id BIGINT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
|
||||
full_name VARCHAR(255) NOT NULL,
|
||||
first_name VARCHAR(100),
|
||||
last_name VARCHAR(100),
|
||||
number VARCHAR(20),
|
||||
position VARCHAR(50),
|
||||
birth_date DATE,
|
||||
height_cm INTEGER,
|
||||
weight_kg INTEGER,
|
||||
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_players_team_id ON players(team_id);
|
||||
CREATE INDEX idx_players_external_id ON players(external_id);
|
||||
|
||||
|
||||
-- =========================
|
||||
-- MATCHES (расписание)
|
||||
-- =========================
|
||||
CREATE TABLE matches (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
external_id VARCHAR(100) UNIQUE,
|
||||
home_team_id BIGINT NOT NULL REFERENCES teams(id),
|
||||
away_team_id BIGINT NOT NULL REFERENCES teams(id),
|
||||
match_date TIMESTAMP,
|
||||
status VARCHAR(50) NOT NULL DEFAULT 'scheduled',
|
||||
home_score INTEGER,
|
||||
away_score INTEGER,
|
||||
tour VARCHAR(100),
|
||||
season VARCHAR(50),
|
||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_matches_external_id ON matches(external_id);
|
||||
CREATE INDEX idx_matches_season ON matches(season);
|
||||
CREATE INDEX idx_matches_date ON matches(match_date);
|
||||
|
||||
|
||||
-- =========================
|
||||
-- STANDINGS (таблица турнира)
|
||||
-- =========================
|
||||
CREATE TABLE standings (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
team_id BIGINT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
|
||||
season VARCHAR(50) NOT NULL,
|
||||
played INTEGER NOT NULL DEFAULT 0,
|
||||
wins INTEGER NOT NULL DEFAULT 0,
|
||||
losses INTEGER NOT NULL DEFAULT 0,
|
||||
draws INTEGER NOT NULL DEFAULT 0,
|
||||
points_for INTEGER NOT NULL DEFAULT 0,
|
||||
points_against INTEGER NOT NULL DEFAULT 0,
|
||||
points INTEGER NOT NULL DEFAULT 0,
|
||||
position INTEGER,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
UNIQUE(team_id, season)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_standings_season ON standings(season);
|
||||
Reference in New Issue
Block a user