forked from revaturelabs/BAM-Phoenix
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBamProd.sql
More file actions
188 lines (160 loc) · 6.05 KB
/
BamProd.sql
File metadata and controls
188 lines (160 loc) · 6.05 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
-- tables
-- Table: Batch_Type
CREATE TABLE Batch_Type (
Batch_Type_ID number(3,0) NOT NULL,
Batch_Type_Name varchar2(40) NOT NULL,
Batch_Type_Length number(3,0) NOT NULL,
CONSTRAINT Batch_Type_pk PRIMARY KEY (Batch_Type_ID)
) ;
-- Table: Batches
CREATE TABLE Batches (
Batch_ID number(8,0) NOT NULL,
Batch_Name varchar2(60) NOT NULL,
Start_Date timestamp NOT NULL,
End_Date timestamp NOT NULL,
Trainer_ID number(8,0) NOT NULL,
Batch_Type_ID number(3,0) NOT NULL,
CONSTRAINT Batches_pk PRIMARY KEY (Batch_ID)
) ;
-- Table: Subtopic
CREATE TABLE Subtopic (
Subtopic_ID number(9,0) NOT NULL,
Subtopic_Name_ID number(6,0) NOT NULL,
Subtopic_Batch_ID number(8,0) NOT NULL,
Subtopic_Status_ID number(1,0) NOT NULL,
Subtopic_Date timestamp NOT NULL,
CONSTRAINT Subtopic_pk PRIMARY KEY (Subtopic_ID)
) ;
-- Table: Subtopic_Name
CREATE TABLE Subtopic_Name (
Subtopic_Name_ID number(6,0) NOT NULL,
Subtopic_Name varchar2(80) NOT NULL,
Subtopic_Topic number(6,0) NULL,
Subtopic_Type number(2,0) NOT NULL,
CONSTRAINT Subtopic_Name_pk PRIMARY KEY (Subtopic_Name_ID)
) ;
-- Table: Subtopic_Status
CREATE TABLE Subtopic_Status (
Status_ID number(1,0) NOT NULL,
Status_Name varchar2(40) NOT NULL,
CONSTRAINT Subtopic_Status_pk PRIMARY KEY (Status_ID)
) ;
-- Table: Subtopic_Type
CREATE TABLE Subtopic_Type (
Type_ID number(2,0) NOT NULL,
Type_Name varchar2(40) NOT NULL,
CONSTRAINT Subtopic_Type_pk PRIMARY KEY (Type_ID)
) ;
-- Table: Topic_Name
CREATE TABLE Topic_Name (
Topic_ID number(6,0) NOT NULL,
Topic_Name varchar2(60) NOT NULL,
CONSTRAINT Topic_Name_pk PRIMARY KEY (Topic_ID)
) ;
-- Table: Topic_Week
CREATE TABLE Topic_Week (
Week_ID number(2,0) NOT NULL,
Topic_Name_ID number(6,0) NOT NULL,
Topic_Batch_ID number(8,0) NOT NULL,
Topic_Week_Number number(2,0) NOT NULL,
CONSTRAINT Topic_Week_pk PRIMARY KEY (Week_ID)
) ;
-- Table: Users
CREATE TABLE Users (
User_ID number(8,0) NOT NULL,
First_Name varchar2(40) NOT NULL,
Middle_Name varchar2(40) NULL,
Last_Name varchar2(40) NOT NULL,
eMail varchar2(80) NOT NULL,
Password varchar2(64) NOT NULL,
Role number(2,0) NOT NULL,
Batch_ID number(8,0) NULL,
Main_Phone varchar2(40) NOT NULL,
Second_Phone varchar2(40) NULL,
Skype_ID varchar2(40) NULL,
Password_Bak varchar2(64) NULL,
CONSTRAINT Users_pk PRIMARY KEY (User_ID)
) ;
-- Table: References
CREATE TABLE References (
Reference_ID number(9, 0) NOT NULL,
Reference_URL varchar2(100) NOT NULL,
Subtopic_ID number(9, 0) NOT NULL,
CONSTRAINT Reference_pk PRIMARY KEY (Reference_ID)
);
-- foreign keys
-- Reference: Batch_Trainer_ID (table: Batches)
ALTER TABLE Batches ADD CONSTRAINT Batch_Trainer_ID
FOREIGN KEY (Trainer_ID)
REFERENCES Users (User_ID);
-- Reference: Batches_Batch_Type (table: Batches)
ALTER TABLE Batches ADD CONSTRAINT Batches_Batch_Type
FOREIGN KEY (Batch_Type_ID)
REFERENCES Batch_Type (Batch_Type_ID);
-- Reference: Subtopic_Batches (table: Subtopic)
ALTER TABLE Subtopic ADD CONSTRAINT Subtopic_Batches
FOREIGN KEY (Subtopic_Batch_ID)
REFERENCES Batches (Batch_ID);
-- Reference: Subtopic_Name_Subtopic_Type (table: Subtopic_Name)
ALTER TABLE Subtopic_Name ADD CONSTRAINT Subtopic_Name_Subtopic_Type
FOREIGN KEY (Subtopic_Type)
REFERENCES Subtopic_Type (Type_ID);
-- Reference: Subtopic_Name_Topic_Name (table: Subtopic_Name)
ALTER TABLE Subtopic_Name ADD CONSTRAINT Subtopic_Name_Topic_Name
FOREIGN KEY (Subtopic_Topic)
REFERENCES Topic_Name (Topic_ID);
-- Reference: Subtopic_Subtopic_Name (table: Subtopic)
ALTER TABLE Subtopic ADD CONSTRAINT Subtopic_Subtopic_Name
FOREIGN KEY (Subtopic_Name_ID)
REFERENCES Subtopic_Name (Subtopic_Name_ID);
-- Reference: Subtopic_Subtopic_Status (table: Subtopic)
ALTER TABLE Subtopic ADD CONSTRAINT Subtopic_Subtopic_Status
FOREIGN KEY (Subtopic_Status_ID)
REFERENCES Subtopic_Status (Status_ID);
-- Reference: Topic_Week_Batches (table: Topic_Week)
ALTER TABLE Topic_Week ADD CONSTRAINT Topic_Week_Batches
FOREIGN KEY (Topic_Batch_ID)
REFERENCES Batches (Batch_ID);
-- Reference: Topic_Week_Topic_Name (table: Topic_Week)
ALTER TABLE Topic_Week ADD CONSTRAINT Topic_Week_Topic_Name
FOREIGN KEY (Topic_Name_ID)
REFERENCES Topic_Name (Topic_ID);
-- Reference: Users_Batch_FK (table: Users)
ALTER TABLE Users ADD CONSTRAINT Users_Batch_FK
FOREIGN KEY (Batch_ID)
REFERENCES Batches (Batch_ID);
ALTER TABLE Users ADD CONSTRAINT Users_Email_Unq
UNIQUE (eMail);
-- Reference: Reference_FK (table: References)
ALTER TABLE References ADD CONSTRAINT References_FK
FOREIGN KEY (Subtopic_ID)
REFERENCES Subtopic (Subtopic_ID);
-- End of file.
-- Populate some of the tables with the basic information
INSERT INTO Subtopic_Status (Status_ID, Status_Name) VALUES (1, 'Pending/Missed');
INSERT INTO Subtopic_Status (Status_ID, Status_Name) VALUES (2, 'Completed');
INSERT INTO Subtopic_Status (Status_ID, Status_Name) VALUES (3, 'Canceled');
INSERT INTO Batch_Type (Batch_Type_ID, Batch_Type_Name, Batch_Type_Length) VALUES (1, 'Java', 10);
INSERT INTO Batch_Type (Batch_Type_ID, Batch_Type_Name, Batch_Type_Length) VALUES (2, '.NET', 10);
INSERT INTO Batch_Type (Batch_Type_ID, Batch_Type_Name, Batch_Type_Length) VALUES (3, 'SDET', 10);
INSERT INTO Subtopic_Type (Type_ID, Type_Name) VALUES (1, 'Lesson');
INSERT INTO Subtopic_Type (Type_ID, Type_Name) VALUES (2, 'Evaluation');
INSERT INTO Subtopic_Type (Type_ID, Type_Name) VALUES (3, 'Assignments');
INSERT INTO Subtopic_Type (Type_ID, Type_Name) VALUES (4, 'Meeting');
INSERT INTO Subtopic_Type (Type_ID, Type_Name) VALUES (5, 'Misc');
ALTER TABLE Users
ADD CONSTRAINT Batch_Assign CHECK
((Batch_ID IS NULL) OR (Role = 1));
CREATE SEQUENCE subtopic_seq
START WITH 184
INCREMENT BY 1;
/
create or replace trigger subtopic_seq_trigg
BEFORE INSERT on subtopic
FOR EACH ROW
BEGIN
IF :new.Subtopic_ID is NULL THEN
SELECT subtopic_seq.nextval INTO :new.Subtopic_ID FROM dual;
END IF;
END;
/