Repository navigation
Expand file tree
/
Copy pathTable_Create_Query.sql
More file actions
397 lines (361 loc) · 9.61 KB
/
Copy pathTable_Create_Query.sql
File metadata and controls
397 lines (361 loc) · 9.61 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
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'SMSDB')
BEGIN
CREATE DATABASE SMSDB;
END
GO
-- Classes Table
CREATE TABLE Classes (
ClassID INT IDENTITY(1,1) PRIMARY KEY,
ClassName NVARCHAR(50) NOT NULL,
Description NVARCHAR(200)
);
GO
-- Sections Table
CREATE TABLE Sections (
SectionID INT IDENTITY(1,1) PRIMARY KEY,
SectionName NVARCHAR(20) NOT NULL,
ClassID INT NOT NULL,
FOREIGN KEY (ClassID) REFERENCES Classes(ClassID)
);
GO
-- Students Table
CREATE TABLE Students (
StudentID INT IDENTITY(1,1) PRIMARY KEY,
RollNo NVARCHAR(20) NOT NULL,
FullName NVARCHAR(100) NOT NULL,
Gender NVARCHAR(10),
DateOfBirth DATE,
ClassID INT,
SectionID INT,
AdmissionDate DATE DEFAULT GETDATE(),
Address NVARCHAR(255),
Phone NVARCHAR(20),
Email NVARCHAR(100),
FOREIGN KEY (ClassID) REFERENCES Classes(ClassID),
FOREIGN KEY (SectionID) REFERENCES Sections(SectionID)
);
GO
-- Teachers Table
CREATE TABLE Teachers (
TeacherID INT IDENTITY(1,1) PRIMARY KEY,
FullName NVARCHAR(100) NOT NULL,
Gender NVARCHAR(10),
DateOfBirth DATE,
HireDate DATE DEFAULT GETDATE(),
Qualification NVARCHAR(100),
Department NVARCHAR(100),
Phone NVARCHAR(20),
Email NVARCHAR(100)
);
GO
-- Subjects Table
CREATE TABLE Subjects (
SubjectID INT IDENTITY(1,1) PRIMARY KEY,
SubjectName NVARCHAR(50) NOT NULL,
Description NVARCHAR(200)
);
GO
-- ClassSubjects Table
CREATE TABLE ClassSubjects (
ClassID INT NOT NULL,
SubjectID INT NOT NULL,
PRIMARY KEY (ClassID, SubjectID),
FOREIGN KEY (ClassID) REFERENCES Classes(ClassID),
FOREIGN KEY (SubjectID) REFERENCES Subjects(SubjectID)
);
GO
-- TeacherSubjects Table
CREATE TABLE TeacherSubjects (
TeacherID INT NOT NULL,
SubjectID INT NOT NULL,
PRIMARY KEY (TeacherID, SubjectID),
FOREIGN KEY (TeacherID) REFERENCES Teachers(TeacherID),
FOREIGN KEY (SubjectID) REFERENCES Subjects(SubjectID)
);
GO
-- ExamTypes Table
CREATE TABLE ExamTypes (
ExamTypeID INT IDENTITY(1,1) PRIMARY KEY,
ExamTypeName NVARCHAR(50) NOT NULL,
Description NVARCHAR(200)
);
GO
-- Exams Table
CREATE TABLE Exams (
ExamID INT IDENTITY(1,1) PRIMARY KEY,
ExamTypeID INT NOT NULL,
ClassID INT NOT NULL,
SectionID INT,
ExamName NVARCHAR(100),
ExamStartDate DATE,
ExamEndDate DATE,
FOREIGN KEY (ExamTypeID) REFERENCES ExamTypes(ExamTypeID),
FOREIGN KEY (ClassID) REFERENCES Classes(ClassID),
FOREIGN KEY (SectionID) REFERENCES Sections(SectionID)
);
GO
-- ExamSubjects Table
CREATE TABLE ExamSubjects (
ExamID INT NOT NULL,
SubjectID INT NOT NULL,
ExamDate DATE,
FullMarks INT DEFAULT 100,
PassMarks INT DEFAULT 33,
PRIMARY KEY (ExamID, SubjectID),
FOREIGN KEY (ExamID) REFERENCES Exams(ExamID),
FOREIGN KEY (SubjectID) REFERENCES Subjects(SubjectID)
);
GO
-- StudentMarks Table
CREATE TABLE StudentMarks (
MarkID INT IDENTITY(1,1) PRIMARY KEY,
StudentID INT NOT NULL,
ExamID INT NOT NULL,
SubjectID INT NOT NULL,
ObtainedMarks INT,
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (ExamID) REFERENCES Exams(ExamID),
FOREIGN KEY (SubjectID) REFERENCES Subjects(SubjectID)
);
GO
-- Grades Table
CREATE TABLE Grades (
GradeID INT IDENTITY(1,1) PRIMARY KEY,
GradeName NVARCHAR(5),
MinMarks INT,
MaxMarks INT,
GPA DECIMAL(3,2)
);
GO
-- Attendance Table
CREATE TABLE Attendance (
AttendanceID INT IDENTITY(1,1) PRIMARY KEY,
StudentID INT NOT NULL,
Date DATE NOT NULL,
Status NVARCHAR(10) CHECK (Status IN ('Present', 'Absent', 'Late')),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID)
);
GO
-- ClassRoutine Table
CREATE TABLE ClassRoutine (
RoutineID INT IDENTITY(1,1) PRIMARY KEY,
ClassID INT NOT NULL,
SectionID INT NOT NULL,
SubjectID INT NOT NULL,
TeacherID INT NOT NULL,
DayOfWeek NVARCHAR(15),
StartTime TIME,
EndTime TIME,
FOREIGN KEY (ClassID) REFERENCES Classes(ClassID),
FOREIGN KEY (SectionID) REFERENCES Sections(SectionID),
FOREIGN KEY (SubjectID) REFERENCES Subjects(SubjectID),
FOREIGN KEY (TeacherID) REFERENCES Teachers(TeacherID)
);
GO
-- Fees Table
CREATE TABLE Fees (
FeeID INT IDENTITY(1,1) PRIMARY KEY,
FeeType NVARCHAR(50) NOT NULL,
Description NVARCHAR(200),
Amount DECIMAL(10,2) NOT NULL
);
GO
-- StudentFees Table
CREATE TABLE StudentFees (
StudentFeeID INT IDENTITY(1,1) PRIMARY KEY,
StudentID INT NOT NULL,
FeeID INT NOT NULL,
AmountPaid DECIMAL(10,2),
DueAmount DECIMAL(10,2),
PaymentDate DATE DEFAULT GETDATE(),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (FeeID) REFERENCES Fees(FeeID)
);
GO
-- Staffs Table
CREATE TABLE Staffs (
StaffID INT IDENTITY(1,1) PRIMARY KEY,
FullName NVARCHAR(100) NOT NULL,
Gender NVARCHAR(10),
DateOfBirth DATE,
HireDate DATE DEFAULT GETDATE(),
DesignationID INT,
DepartmentID INT,
Phone NVARCHAR(20),
Email NVARCHAR(100)
);
GO
-- Designations Table
CREATE TABLE Designations (
DesignationID INT IDENTITY(1,1) PRIMARY KEY,
DesignationName NVARCHAR(50) NOT NULL
);
GO
-- Departments Table
CREATE TABLE Departments (
DepartmentID INT IDENTITY(1,1) PRIMARY KEY,
DepartmentName NVARCHAR(50) NOT NULL
);
GO
-- Transport Table
CREATE TABLE Transport (
TransportID INT IDENTITY(1,1) PRIMARY KEY,
VehicleNo NVARCHAR(20),
DriverName NVARCHAR(100),
Capacity INT
);
GO
-- Routes Table
CREATE TABLE Routes (
RouteID INT IDENTITY(1,1) PRIMARY KEY,
RouteName NVARCHAR(100),
TransportID INT,
FOREIGN KEY (TransportID) REFERENCES Transport(TransportID)
);
GO
-- BusStudents Table
CREATE TABLE BusStudents (
StudentID INT NOT NULL,
RouteID INT NOT NULL,
PRIMARY KEY (StudentID, RouteID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (RouteID) REFERENCES Routes(RouteID)
);
GO
-- Hostels Table
CREATE TABLE Hostels (
HostelID INT IDENTITY(1,1) PRIMARY KEY,
HostelName NVARCHAR(100),
Location NVARCHAR(255)
);
GO
-- HostelRooms Table
CREATE TABLE HostelRooms (
RoomID INT IDENTITY(1,1) PRIMARY KEY,
HostelID INT NOT NULL,
RoomNo NVARCHAR(20),
Capacity INT,
FOREIGN KEY (HostelID) REFERENCES Hostels(HostelID)
);
GO
-- StudentHostel Table
CREATE TABLE StudentHostel (
StudentID INT NOT NULL,
RoomID INT NOT NULL,
PRIMARY KEY (StudentID, RoomID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (RoomID) REFERENCES HostelRooms(RoomID)
);
GO
-- Roles Table
CREATE TABLE Roles (
RoleID INT IDENTITY(1,1) PRIMARY KEY,
RoleName NVARCHAR(50) NOT NULL
);
GO
-- Users Table
CREATE TABLE Users (
UserID INT IDENTITY(1,1) PRIMARY KEY,
UserName NVARCHAR(50) NOT NULL,
PasswordHash NVARCHAR(255) NOT NULL,
FullName NVARCHAR(100),
RoleID INT,
FOREIGN KEY (RoleID) REFERENCES Roles(RoleID)
);
GO
-- Parents Table
CREATE TABLE Parents (
ParentID INT IDENTITY(1,1) PRIMARY KEY,
ParentName NVARCHAR(100) NOT NULL,
Gender NVARCHAR(10),
Phone NVARCHAR(20),
Email NVARCHAR(100),
Address NVARCHAR(200),
Occupation NVARCHAR(100),
CreatedAt DATETIME DEFAULT GETDATE()
);
GO
-- StudentParent Table
CREATE TABLE StudentParent (
StudentParentID INT IDENTITY(1,1) PRIMARY KEY,
StudentID INT NOT NULL,
ParentID INT NOT NULL,
Relationship NVARCHAR(50),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (ParentID) REFERENCES Parents(ParentID)
);
GO
-- BookCategories Table
CREATE TABLE BookCategories (
CategoryID INT IDENTITY(1,1) PRIMARY KEY,
CategoryName NVARCHAR(100) NOT NULL,
Description NVARCHAR(255)
);
GO
-- LibraryBooks Table
CREATE TABLE LibraryBooks (
BookID INT IDENTITY(1,1) PRIMARY KEY,
Title NVARCHAR(150) NOT NULL,
Author NVARCHAR(100),
ISBN NVARCHAR(50),
PublishedYear INT,
CategoryID INT,
Quantity INT DEFAULT 1,
AvailableCopies INT DEFAULT 1,
FOREIGN KEY (CategoryID) REFERENCES BookCategories(CategoryID)
);
GO
-- BookIssues Table
CREATE TABLE BookIssues (
IssueID INT IDENTITY(1,1) PRIMARY KEY,
BookID INT NOT NULL,
StudentID INT NOT NULL,
IssueDate DATE DEFAULT GETDATE(),
DueDate DATE,
ReturnDate DATE,
FineAmount DECIMAL(10,2) DEFAULT 0,
FOREIGN KEY (BookID) REFERENCES LibraryBooks(BookID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID)
);
GO
-- Periods Table
CREATE TABLE Periods (
PeriodID INT IDENTITY(1,1) PRIMARY KEY,
PeriodName NVARCHAR(50),
StartTime TIME NOT NULL,
EndTime TIME NOT NULL,
CreatedAt DATETIME DEFAULT GETDATE()
);
GO
-- Notices Table
CREATE TABLE Notices (
NoticeID INT IDENTITY(1,1) PRIMARY KEY,
Title NVARCHAR(150) NOT NULL,
Description NVARCHAR(MAX),
CreatedBy INT,
CreatedAt DATETIME DEFAULT GETDATE(),
ExpiryDate DATE,
FOREIGN KEY (CreatedBy) REFERENCES Users(UserID)
);
GO
-- Events Table
CREATE TABLE Events (
EventID INT IDENTITY(1,1) PRIMARY KEY,
EventTitle NVARCHAR(150) NOT NULL,
EventDate DATE NOT NULL,
Location NVARCHAR(100),
Description NVARCHAR(MAX),
CreatedBy INT,
CreatedAt DATETIME DEFAULT GETDATE(),
FOREIGN KEY (CreatedBy) REFERENCES Users(UserID)
);
GO
-- UserRoles Table
CREATE TABLE UserRoles (
UserRoleID INT IDENTITY(1,1) PRIMARY KEY,
UserID INT NOT NULL,
RoleID INT NOT NULL,
AssignedAt DATETIME DEFAULT GETDATE(),
FOREIGN KEY (UserID) REFERENCES Users(UserID),
FOREIGN KEY (RoleID) REFERENCES Roles(RoleID)
);