-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTableCreation.sql
More file actions
76 lines (69 loc) · 1.94 KB
/
TableCreation.sql
File metadata and controls
76 lines (69 loc) · 1.94 KB
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
use UniversityReservationSystem;
CREATE TABLE Resources
(
Res_ID INT IDENTITY(1,1) NOT NULL,
Name VARCHAR(128) NOT NULL,
Description VARCHAR(256) NOT NULL,
PRIMARY KEY (Res_ID)
);
CREATE TABLE Priorities
(
Priority_ID INT IDENTITY(1,1) NOT NULL,
Level VARCHAR(50) NOT NULL,
Value INT NOT NULL,
PRIMARY KEY (Priority_ID)
);
CREATE TABLE States
(
State_ID INT IDENTITY(1,1) NOT NULL,
Name VARCHAR(50) NOT NULL UNIQUE,
PRIMARY KEY (State_ID)
);
CREATE TABLE Users
(
User_ID VARCHAR(10) NOT NULL,
Email VARCHAR(128) NOT NULL UNIQUE,
Phone VARCHAR(50) NOT NULL,
CurrentPriority INT NOT NULL,
BasePriority INT NOT NULL,
PRIMARY KEY (Email),
FOREIGN KEY (CurrentPriority) REFERENCES Priorities(Priority_ID),
FOREIGN KEY (BasePriority) REFERENCES Priorities(Priority_ID)
);
CREATE TABLE Reservations
(
Reserv_ID INT IDENTITY(1,1) NOT NULL,
Created_At DATETIME NOT NULL,
Started_At DATETIME NOT NULL,
isEssential TINYINT NOT NULL CHECK(isEssential IN (0,1)),
ReservPeriod INT NOT NULL,
Status INT NOT NULL,
Res_ID INT NOT NULL,
Email VARCHAR(128) NOT NULL,
PRIMARY KEY (Reserv_ID),
UNIQUE(Res_ID, Started_At),
FOREIGN KEY (Status) REFERENCES States(State_ID),
FOREIGN KEY (Res_ID) REFERENCES Resources(Res_ID),
FOREIGN KEY (Email) REFERENCES Users(Email)
);
CREATE TABLE Requisitions
(
--Req_ID INT IDENTITY(1,1) NOT NULL,
Req_ID VARCHAR(8) NOT NULL,
Generated_At DATETIME NOT NULL,
Reserv_ID INT NOT NULL,
Status INT NOT NULL,
PRIMARY KEY (Req_ID),
FOREIGN KEY (Reserv_ID) REFERENCES Reservations(Reserv_ID),
FOREIGN KEY (Status) REFERENCES States(State_ID)
);
CREATE TABLE Penalties
(
Penalty_ID INT IDENTITY(1,1) NOT NULL,
Reason VARCHAR(128) NOT NULL,
Timestamp DATETIME NOT NULL,
Email VARCHAR(128) NOT NULL,
PRIMARY KEY (Penalty_ID),
UNIQUE (Email, Reason, Timestamp),
FOREIGN KEY (Email) REFERENCES Users(Email)
);