Newer
Older
#!/usr/bin/env python3
import sqlite3 as sqlite
conn = sqlite.connect('database.db')
conn.isolation_level = None # so we don't have to use self.connection.commit()
curs = conn.cursor()
curs.execute(
Jakub Štercl
committed
'''
CREATE TABLE Groups (
Jakub Štercl
committed
group_id INTEGER PRIMARY KEY,
name VARCHAR UNIQUE
NOT NULL
Jakub Štercl
committed
);
'''
Jakub Štercl
committed
)
Jakub Štercl
committed
'''
CREATE TABLE Member (
member_id INTEGER PRIMARY KEY AUTOINCREMENT,
Jakub Štercl
committed
name VARCHAR,
surname VARCHAR,
Jakub Štercl
committed
group_id INTEGER REFERENCES Groups (group_id) ON DELETE CASCADE
);
'''
)
curs.execute(
'''
CREATE VIEW Member_history_view AS
SELECT t1.member_id member_id,
t2.member_id With_member_id,
name,
surname,
group_id,
count( * ) times_together
FROM Member_to_Team t1
JOIN
Member_to_Team t2 ON t1.team_id = t2.team_id AND
t1.member_id != t2.member_id
JOIN
Member ON t2.member_id = Member.member_id
GROUP BY t1.member_id,
t2.member_id;
'''
curs.execute(
'''
CREATE TABLE Distribution (
distribution_id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR NOT NULL,
Jakub Štercl
committed
creation_time DATETIME DEFAULT (CURRENT_TIMESTAMP),
group_id REFERENCES Groups (group_id) ON DELETE CASCADE
);
'''
)
curs.execute(
'''
CREATE TABLE Team (
team_id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR,
Jakub Štercl
committed
distribution_id INTEGER REFERENCES Distribution (distribution_id) ON DELETE CASCADE
Jakub Štercl
committed
);'''
)
curs.execute(
'''
CREATE TABLE Member_to_Team (
Jakub Štercl
committed
member_id INTEGER REFERENCES Member (member_id) ON DELETE CASCADE,
team_id INTEGER REFERENCES Team (team_id) ON DELETE CASCADE,
Jakub Štercl
committed
);
'''