-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathschema.sql
106 lines (89 loc) · 2.38 KB
/
schema.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
----------------------------------------------------------------
---------------------------- SCHEMA ----------------------------
----------------------------------------------------------------
DROP TABLE IF EXISTS Departments, Employees, MeetingRooms, Junior, Booker, Senior, Manager, HealthDeclaration, Updates, Sessions, Joins CASCADE;
CREATE TABLE Departments (
did INTEGER,
dname TEXT,
PRIMARY KEY (did)
);
CREATE TABLE Employees (
eid INTEGER,
ename TEXT,
email TEXT,
primary_contact TEXT,
secondary_contact TEXT,
resigned_date DATE,
did INTEGER NOT NULL,
PRIMARY KEY (eid),
UNIQUE (email),
FOREIGN KEY (did) REFERENCES Departments (did)
);
CREATE TABLE MeetingRooms (
room INTEGER,
floor INTEGER,
rname TEXT,
did INTEGER NOT NULL,
PRIMARY KEY (room, floor),
FOREIGN KEY (did) REFERENCES Departments (did)
);
CREATE TABLE Junior (
eid INTEGER,
PRIMARY KEY (eid),
FOREIGN KEY (eid) REFERENCES Employees (eid) ON DELETE CASCADE
);
CREATE TABLE Booker (
eid INTEGER,
PRIMARY KEY (eid),
FOREIGN KEY (eid) REFERENCES Employees (eid) ON DELETE CASCADE
);
CREATE TABLE Senior (
eid INTEGER,
PRIMARY KEY (eid),
FOREIGN KEY (eid) REFERENCES Booker (eid) ON DELETE CASCADE
);
CREATE TABLE Manager (
eid INTEGER,
PRIMARY KEY (eid),
FOREIGN KEY (eid) REFERENCES Booker (eid) ON DELETE CASCADE
);
CREATE TABLE HealthDeclaration (
eid INTEGER,
date DATE,
temp NUMERIC NOT NULL,
fever BIT,
PRIMARY KEY (eid, date),
FOREIGN KEY (eid) REFERENCES Employees(eid)
);
CREATE TABLE Updates (
room INTEGER,
floor INTEGER,
eid INTEGER,
date DATE,
new_cap INTEGER NOT NULL,
PRIMARY KEY (room, floor, eid, date),
FOREIGN KEY (room, floor) REFERENCES MeetingRooms (room, floor),
FOREIGN KEY (eid) REFERENCES Manager (eid)
);
CREATE TABLE Sessions (
room INTEGER,
floor INTEGER,
time TIME,
date DATE,
meid INTEGER,
beid INTEGER NOT NULL,
PRIMARY KEY (room, floor, time, date),
FOREIGN KEY (meid) REFERENCES Manager (eid),
FOREIGN KEY (beid) REFERENCES Booker (eid),
FOREIGN KEY (room, floor) REFERENCES MeetingRooms (room, floor)
);
CREATE TABLE Joins (
eid INTEGER,
room INTEGER,
floor INTEGER,
time TIME,
date DATE,
PRIMARY KEY (eid, room, floor, time, date),
FOREIGN KEY (eid) REFERENCES Employees (eid),
FOREIGN KEY (room, floor, time, date) REFERENCES Sessions (room, floor, time, date) ON DELETE CASCADE
);