Files
klice25/create.sql
2025-10-28 17:01:20 +01:00

64 lines
1.9 KiB
SQL

DROP TABLE IF EXISTS TEAMS;
DROP TABLE IF EXISTS POSITIONS;
DROP TABLE IF EXISTS QR_CODES;
DROP TABLE IF EXISTS CIPHERS;
DROP TABLE IF EXISTS DIFFICULTY_LEVELS;
DROP TABLE IF EXISTS TASKS;
DROP TABLE IF EXISTS ADMINS;
DROP TABLE IF EXISTS PENALTIES;
CREATE TABLE TEAMS (
id INTEGER PRIMARY KEY,
name VARCHAR(100) NOT NULL,
difficulty_level INTEGER NOT NULL,
password VARCHAR(255) NOT NULL,
last_cipher INTEGER DEFAULT 0, -- index of cipher which team is solving or searching now
last_loaded_cipher INTEGER DEFAULT 0, -- index of cipher which team has loaded last time
penalty INTEGER DEFAULT 0,
FOREIGN KEY (difficulty_level) REFERENCES DIFFICULTY_LEVELS(id)
);
CREATE TABLE POSITIONS (
id INTEGER PRIMARY KEY,
gps VARCHAR(100) NOT NULL,
clue TEXT NOT NULL
);
CREATE TABLE QR_CODES (
id INTEGER PRIMARY KEY,
position_id INTEGER NOT NULL,
uid VARCHAR(100) UNIQUE NOT NULL,
FOREIGN KEY (position_id) REFERENCES positions(id)
);
CREATE TABLE CIPHERS (
id INTEGER PRIMARY KEY,
assignment TEXT NOT NULL,
solution TEXT NOT NULL,
clue TEXT NOT NULL
);
CREATE TABLE DIFFICULTY_LEVELS (
id INTEGER PRIMARY KEY,
level_name VARCHAR(100) NOT NULL
);
CREATE TABLE TASKS (
id INTEGER PRIMARY KEY,
cipher_id INTEGER NOT NULL,
position_id INTEGER NOT NULL,
difficulty_level INTEGER NOT NULL,
order_num INTEGER NOT NULL,
end_clue TEXT NOT NULL,
FOREIGN KEY (cipher_id) REFERENCES CIPHERS(id),
FOREIGN KEY (position_id) REFERENCES POSITIONS(id),
FOREIGN KEY (difficulty_level) REFERENCES DIFFICULTY_LEVELS(id)
);
CREATE TABLE ADMINS (
id INTEGER PRIMARY KEY,
username VARCHAR(100) NOT NULL,
password VARCHAR(255) NOT NULL
);
CREATE TABLE PENALTIES (
id INTEGER PRIMARY KEY,
team_id INTEGER NOT NULL,
task_id INTEGER NOT NULL,
minutes INTEGER NOT NULL DEFAULT 0,
FOREIGN KEY (team_id) REFERENCES TEAMS(id),
FOREIGN KEY (task_id) REFERENCES TASKS(id)
);