]> git.sesse.net Git - ccbs/blob - ccbs.sql
First shot at writing basic SQL schemas (not finished).
[ccbs] / ccbs.sql
1
2 CREATE TABLE songs (
3         song SERIAL PRIMARY KEY,
4         title VARCHAR NOT NULL,
5         artist VARCHAR NOT NULL
6 );
7
8 CREATE TABLE songratings (
9         song INTEGER NOT NULL REFERENCES songs,
10         playmode VARCHAR NOT NULL CHECK playmode IN ('single','double'),
11         difficulty VARCHAR NOT NULL CHECK difficulty IN ('beginner','standard','difficult','expert','challenge'),
12         feetrating INTEGER NOT NULL CHECK (feetrating >= 0 AND feetrating <= 10)
13
14         PRIMARY KEY (song, playmode, difficulty)
15 );
16
17 CREATE TABLE players (
18         player SERIAL PRIMARY KEY,
19         nick VARCHAR NOT NULL
20 );
21
22 CREATE TABLE seasons (
23         season SERIAL PRIMARY KEY,
24         name VARCHAR NOT NULL
25 );
26
27 CREATE TABLE tournament (
28         tournament SERIAL PRIMARY KEY,
29         season INTEGER NOT NULL REFERENCES seasons,
30         name VARCHAR NOT NULL
31 );
32
33 CREATE TABLE rounds (
34         tournament INTEGER NOT NULL REFERENCES tournaments,
35         level INTEGER NOT NULL,
36         parallel INTEGER NOT NULL
37
38         PRIMARY KEY (tournament, level, parallel)
39 );
40
41 CREATE TABLE roundparticipation (
42         tournament INTEGER NOT NULL,
43         level INTEGER NOT NULL,
44         parallel INTEGER NOT NULL,
45         player INTEGER NOT NULL REFERENCES players,
46
47         FOREIGN KEY ( tournament, level, parallel ) REFERENCES rounds ( tournament, level, parallel ),
48         PRIMARY KEY ( tournament, level, parallel, player )
49 );