Relational schema (DDL and Database): DML_PT.sql

File DML_PT.sql, 4.1 KB (added by 206046, 4 weeks ago)
Line 
1CREATE TABLE User (
2 id_user INT PRIMARY KEY,
3 username VARCHAR(255) NOT NULL,
4 password VARCHAR(255) NOT NULL,
5 email VARCHAR(255) UNIQUE NOT NULL,
6 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
7);
8
9CREATE TABLE Administration (
10 id_user INT PRIMARY KEY,
11 department VARCHAR(255),
12 FOREIGN KEY (id_user) REFERENCES User(id_user)
13 ON UPDATE CASCADE
14 ON DELETE CASCADE
15);
16
17CREATE TABLE Teacher (
18 id_teacher INT PRIMARY KEY,
19 id_user INT UNIQUE,
20 hire_date DATE,
21 FOREIGN KEY (id_user) REFERENCES User(id_user)
22 ON UPDATE CASCADE
23 ON DELETE CASCADE
24);
25
26CREATE TABLE Student (
27 id_student INT PRIMARY KEY,
28 id_user INT UNIQUE,
29 progress_score FLOAT,
30 FOREIGN KEY (id_user) REFERENCES User(id_user)
31 ON UPDATE CASCADE
32 ON DELETE CASCADE
33);
34
35CREATE TABLE Rates (
36 id_rating INT PRIMARY KEY,
37 id_teacher INT,
38 id_student INT,
39 rating FLOAT NOT NULL,
40 explanation TEXT,
41 FOREIGN KEY (id_teacher) REFERENCES Teacher(id_teacher)
42 ON UPDATE CASCADE
43 ON DELETE SET NULL,
44 FOREIGN KEY (id_student) REFERENCES Student(id_student)
45 ON UPDATE CASCADE
46 ON DELETE SET NULL
47);
48
49CREATE TABLE Subject (
50 id_subject INT PRIMARY KEY,
51 name VARCHAR(255) NOT NULL,
52 description TEXT
53);
54
55CREATE TABLE Course (
56 id_Course INT PRIMARY KEY,
57 num_of_classes INT,
58 created_by INT,
59 FOREIGN KEY (created_by) REFERENCES Teacher(id_teacher)
60 ON UPDATE CASCADE
61 ON DELETE SET NULL
62);
63
64CREATE TABLE Subject_Course (
65 id_subject INT,
66 id_Course INT,
67 PRIMARY KEY (id_subject, id_Course),
68 FOREIGN KEY (id_subject) REFERENCES Subject(id_subject)
69 ON UPDATE CASCADE
70 ON DELETE CASCADE,
71 FOREIGN KEY (id_Course) REFERENCES Course(id_Course)
72 ON UPDATE CASCADE
73 ON DELETE CASCADE
74);
75
76CREATE TABLE Class (
77 id_class INT PRIMARY KEY,
78 start_time TIME,
79 end_time TIME,
80 duration INT,
81 teacher_id INT,
82 FOREIGN KEY (teacher_id) REFERENCES Teacher(id_teacher)
83 ON UPDATE CASCADE
84 ON DELETE SET NULL
85);
86
87CREATE TABLE Course_Class (
88 id_Course INT,
89 id_class INT,
90 PRIMARY KEY (id_Course, id_class),
91 FOREIGN KEY (id_Course) REFERENCES Course(id_Course)
92 ON UPDATE CASCADE
93 ON DELETE CASCADE,
94 FOREIGN KEY (id_class) REFERENCES Class(id_class)
95 ON UPDATE CASCADE
96 ON DELETE CASCADE
97);
98
99CREATE TABLE Assignment (
100 id_assignment INT PRIMARY KEY,
101 description TEXT,
102 score FLOAT,
103 deadline DATE
104);
105
106CREATE TABLE Course_Assignment (
107 id_Course INT,
108 id_assignment INT,
109 PRIMARY KEY (id_Course, id_assignment),
110 FOREIGN KEY (id_Course) REFERENCES Course(id_Course)
111 ON UPDATE CASCADE
112 ON DELETE CASCADE,
113 FOREIGN KEY (id_assignment) REFERENCES Assignment(id_assignment)
114 ON UPDATE CASCADE
115 ON DELETE CASCADE
116);
117
118CREATE TABLE Enrolls (
119 id_enrollment INT PRIMARY KEY,
120 id_student INT,
121 id_Course INT,
122 status VARCHAR(50),
123 en_date DATE,
124 FOREIGN KEY (id_student) REFERENCES Student(id_student)
125 ON UPDATE CASCADE
126 ON DELETE CASCADE,
127 FOREIGN KEY (id_Course) REFERENCES Course(id_Course)
128 ON UPDATE CASCADE
129 ON DELETE CASCADE
130);
131
132CREATE TABLE Attendance (
133 id_attendance INT PRIMARY KEY,
134 id_student INT,
135 id_class INT,
136 attended BOOLEAN,
137 FOREIGN KEY (id_student) REFERENCES Student(id_student)
138 ON UPDATE CASCADE
139 ON DELETE CASCADE,
140 FOREIGN KEY (id_class) REFERENCES Class(id_class)
141 ON UPDATE CASCADE
142 ON DELETE CASCADE
143);
144
145CREATE TABLE Submits (
146 id_submission INT PRIMARY KEY,
147 id_student INT,
148 id_assignment INT,
149 submitted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
150 progress_score FLOAT,
151 FOREIGN KEY (id_student) REFERENCES Student(id_student)
152 ON UPDATE CASCADE
153 ON DELETE CASCADE,
154 FOREIGN KEY (id_assignment) REFERENCES Assignment(id_assignment)
155 ON UPDATE CASCADE
156 ON DELETE CASCADE
157);