-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTableCreation.sql
More file actions
179 lines (155 loc) · 8.41 KB
/
TableCreation.sql
File metadata and controls
179 lines (155 loc) · 8.41 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
CREATE TABLE AddressInfo (
AddressId INT PRIMARY KEY IDENTITY(1,1),
Street1 VARCHAR(100) NOT NULL,
Street2 VARCHAR(100) ,
City VARCHAR(50) NOT NULL,
State VARCHAR(50) NOT NULL,
-- zip codes could start with 0 , not advisable to store as integer
-- Assuming no extensions for zip code and is only 5 bytes
ZIP CHAR(5) NOT NULL
);
CREATE TABLE People (
PersonId INT PRIMARY Key IDENTITY(1,1),
NTID VARCHAR(20) NOT NULL,
FirstName VARCHAR(20) NOT NULL,
LastName VARCHAR(20) NOT NULL,
Password VARCHAR(50) ,
-- we just need information about date so chose it instead of datetime
DOB DATE NOT NULL,
SSN VARCHAR(12) CHECK(SSN LIKE '%-%-%'),
HomeAddress INT NOT NULL REFERENCES AddressInfo(AddressId),
LocalAddress INT REFERENCES AddressInfo(AddressId),
IsActive BIT NOT NULL DEFAULT 'Y'
);
CREATE TABLE BenefitSelection (
BenefitSelectionID INT PRIMARY KEY IDENTITY(1,1),
BenefitSelection VARCHAR(10) NOT NULL
);
CREATE TABLE Benefits (
BenefitID INT PRIMARY KEY IDENTITY(1,1),
BenefitCost INT NOT NULL CHECK(BenefitCost >= 0),
BenefitSelectionID INT NOT NULL REFERENCES BenefitSelection(BenefitSelectionID),
BenefitDescription VARCHAR(100)
);
CREATE TABLE JobInformation (
JobID INT PRIMARY KEY IDENTITY(1,1),
JobTitle VARCHAR(50) NOT NULL,
JobDescription VARCHAR(200) NOT NULL,
JobRequirements VARCHAR(500) ,
MinPay INT NOT NULL CHECK(MinPay >= 0),
MaxPay INT NOT NULL, CHECK(MaxPay >= MinPay),
UnionJob BIT NOT NULL DEFAULT 'Y'
);
CREATE TABLE EmployeeInfo (
EmployeeID INT PRIMARY KEY IDENTITY(1,1),
PersonID INT NOT NULL REFERENCES People(PersonId),
YearlyPay INT NOT NULL CHECK(YearlyPay >= 0),
HealthBenefits INT NOT NULL REFERENCES Benefits(BenefitID),
VisionBenefits INT NOT NULL REFERENCES Benefits(BenefitID),
DentalBenefits INT NOT NULL REFERENCES Benefits(BenefitID),
JobInformation INT NOT NULL REFERENCES JobInformation(JobID)
);
CREATE TABLE CourseCatalogue (
ID INT PRIMARY KEY IDENTITY(1,1),
CourseCode VARCHAR(10) NOT NULL,
CourseNumber INT NOT NULL CHECK (CourseNumber >= 0),
CourseTitle VARCHAR(50) NOT NULL,
CourseDesc VARCHAR(500)
);
CREATE TABLE Prerequisites (
ID INT PRIMARY KEY IDENTITY(1,1),
PreRequsisteID INT NOT NULL REFERENCES CourseCatalogue(ID),
ParentID INT NOT NULL REFERENCES CourseCatalogue(ID)
);
CREATE TABLE Buildings (
ID INT PRIMARY KEY IDENTITY(1,1),
BuildingName VARCHAR(100) NOT NULL
);
CREATE TABLE ProjectInfo (
ProjectID INT PRIMARY KEY IDENTITY(1,1),
ProjectText VARCHAR(20) NOT NULL
);
CREATE TABLE ClassRoom (
ClassRoomID INT PRIMARY KEY IDENTITY(1,1),
Building INT NOT NULL REFERENCES Buildings(ID),
RoomNumber VARCHAR(20) NOT NULL,
MaximumSeating INT NOT NULL CHECK(MaximumSeating >= 0),
Projector INT NOT NULL REFERENCES ProjectInfo(ProjectID),
WhiteBoardCount INT NOT NULL CHECK(WhiteBoardCount >= 0),
OtherAV VARCHAR(100)
);
CREATE TABLE StudentStatus (
StudentStatusID INT PRIMARY KEY IDENTITY(1,1),
StudentStatus VARCHAR(20) NOT NULL
);
CREATE TABLE StudentInfo (
StudentID INT PRIMARY KEY IDENTITY(1,1),
PersonID INT NOT NULL REFERENCES People(PersonId),
StudentStatusID INT REFERENCES StudentStatus(StudentStatusID)
);
CREATE TABLE College (
CollegeID INT PRIMARY KEY IDENTITY(1,1),
CollegeName VARCHAR(100) NOT NULL
);
CREATE TABLE AreaOfStudy (
AreaOfStudyID INT PRIMARY KEY IDENTITY(1,1),
StudyTitle VARCHAR(100) NOT NULL,
CollegeID INT NOT NULL REFERENCES College(CollegeID)
);
CREATE TABLE StudentAreaOfStudy (
StudentAreaOfStudyID INT PRIMARY KEY IDENTITY (1,1),
StudentID INT NOT NULL REFERENCES StudentInfo(StudentID),
AreaID INT NOT NULL REFERENCES AreaOfStudy(AreaOfStudyID),
IsMajor BIT NOT NULL
);
CREATE TABLE SemesterText (
SemesterTextID INT PRIMARY KEY IDENTITY(1,1),
SemesterText VARCHAR(20) NOT NULL
);
CREATE TABLE SemesterInfo (
SemesterID INT PRIMARY KEY IDENTITY (1,1),
Semester INT NOT NULL REFERENCES SemesterText(SemesterTextID),
-- we can plan semesters ahead so put a check of year till 2100
YearInfo INT NOT NULL CHECK(YEARInfo >= 1900 AND YEARInfo <= 2100),
FirstDay DATE NOT NULL,
LastDay DATE NOT NULL
);
CREATE TABLE CourseSchedule (
CourseScheduleID INT PRIMARY KEY IDENTITY(1,1),
CourseID INT NOT NULL REFERENCES CourseCatalogue(ID),
NumberOfSeats INT NOT NULL CHECK(NumberOfSeats >= 0),
Location INT REFERENCES ClassRoom(ClassRoomID),
Semester INT NOT NULL REFERENCES SemesterInfo(SemesterId)
);
CREATE TABLE TeachingAssignment (
ID INT PRIMARY KEY IDENTITY(1,1),
EmployeeID INT NOT NULL REFERENCES EmployeeInfo(EmployeeID),
CourseScheduleID INT NOT NULL REFERENCES CourseSchedule(CourseScheduleID)
);
CREATE TABLE Grades (
GradeID INT PRIMARY KEY IDENTITY(1,1),
Grade CHAR(1) NOT NULL,
GradeDescription VARCHAR(100) NOT NULL
);
CREATE TABLE StudentGradingStatus (
StudentStatusId INT PRIMARY KEY IDENTITY(1,1),
StudentStatus VARCHAR(10) NOT NULL
);
CREATE TABLE StudentCourseEnrollment (
EnrollmentID INT PRIMARY KEY IDENTITY(1,1),
CourseID INT NOT NULL REFERENCES CourseSchedule(CourseScheduleID),
StudentID INT NOT NULL REFERENCES StudentInfo(StudentID),
StatusID INT NOT NULL REFERENCES StudentGradingStatus(StudentStatusId),
GradeID INT REFERENCES Grades(GradeID)
);
CREATE TABLE DayOfWeekInfo (
ID INT PRIMARY KEY IDENTITY(1,1),
Text VARCHAR(10) NOT NULL
);
CREATE TABLE CourseDailySchedule (
DailyID INT PRIMARY KEY IDENTITY(1,1),
CourseID INT NOT NULL REFERENCES CourseSchedule(CourseScheduleID),
DayofWeekID INT NOT NULL REFERENCES DayOfWeekInfo(ID),
StartTime TIME NOT NULL,
EndTime TIME NOT NULL
);