-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoracle.sql
More file actions
185 lines (149 loc) · 5.25 KB
/
oracle.sql
File metadata and controls
185 lines (149 loc) · 5.25 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
CREATE USER DEBATE IDENTIFIED BY password DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
ALTER SESSION SET CURRENT_SCHEMA = DEBATE;
CREATE TABLE DEBATE_USERS
(
id NUMBER(10) NOT NULL,
password_hash RAW(64) NOT NULL,
first_name VARCHAR2(30) NOT NULL,
last_name VARCHAR2(30) NOT NULL,
email VARCHAR2(254) NOT NULL UNIQUE,
username VARCHAR2(64) NOT NULL UNIQUE,
age NUMBER(3) NOT NULL,
date_joined DATE DEFAULT SYSTIMESTAMP NOT NULL,
CONSTRAINT PK_SIJL_UserID PRIMARY KEY (id)
);
-- Generate ID using sequence and trigger
CREATE SEQUENCE DEBATE_USERS_seq START WITH 1 INCREMENT BY 1;
CREATE OR REPLACE TRIGGER DEBATE_USERS_seq_tr
BEFORE INSERT ON DEBATE_USERS FOR EACH ROW
WHEN (NEW.id IS NULL)
BEGIN
SELECT DEBATE_USERS_seq.NEXTVAL INTO :NEW.id FROM DUAL;
END;
/
ALTER TABLE DEBATE_USERS
ADD github varchar(60) NULL;
ALTER TABLE DEBATE_USERS
ADD home VARCHAR(300) NULL;
ALTER TABLE DEBATE_USERS
ADD about VARCHAR(1500) NULL;
ALTER TABLE DEBATE_USERS
ADD twitter VARCHAR(40) NULL;
-- SQLINES LICENSE FOR EVALUATION USE ONLY
CREATE TABLE ARGUMENTS
(
id NUMBER(10) NOT NULL,
sijl_id NUMBER(10) NOT NULL,
in_response NUMBER(10) NULL,
argument NVARCHAR(MAX) NOT NULL, -- SQLINES DEMO *** ize in the backend
title NVARCHAR2(200) NULL,
argument_start NUMBER(5) NULL, -- SQLINES DEMO *** int [0-index] for responses
argument_end NUMBER(5) NULL, -- SQLINES DEMO *** t [0-index] for responses
CONSTRAINT PK_DISCUSS_ArgumentID PRIMARY KEY (id),
FOREIGN KEY (in_response) REFERENCES ARGUMENTS (id),
FOREIGN KEY (sijl_id) REFERENCES DEBATE_USERS (id),
CONSTRAINT CHECK1 CHECK
(
(argument_end IS NOT NULL
AND argument_start IS NOT NULL
AND in_response IS NOT NULL
AND argument_end > 0
)
OR
(argument_start IS NULL
AND argument_end IS NULL
AND in_response IS NULL)
)
);
DROP TABLE ARGUMENTS
CREATE TABLE ARGUMENTS
(
id NUMBER(10) NOT NULL,
sijl_id NUMBER(10) NOT NULL,
in_response NUMBER(10) NULL,
argument NVARCHAR2(2000) NOT NULL,
title NVARCHAR2(200) NULL,
date_created DATE DEFAULT SYSTIMESTAMP NOT NULL,
argument_start NUMBER(5) NULL,
argument_end NUMBER(5) NULL,
CONSTRAINT PK_DISCUSS_ArgumentID PRIMARY KEY (id),
FOREIGN KEY (in_response) REFERENCES ARGUMENTS (id),
FOREIGN KEY (sijl_id) REFERENCES DEBATE_USERS (id),
CONSTRAINT CHECK1 CHECK
(
(argument_end IS NOT NULL
AND argument_start IS NOT NULL
AND in_response IS NOT NULL
AND argument_end > 0
)
OR
(argument_start IS NULL
AND argument_end IS NULL
AND in_response IS NULL)
)
);
-- Generate ID using sequence and trigger
CREATE SEQUENCE ARGUMENTS_seq START WITH 1 INCREMENT BY 1;
CREATE OR REPLACE TRIGGER ARGUMENTS_seq_tr
BEFORE INSERT ON ARGUMENTS FOR EACH ROW
WHEN (NEW.id IS NULL)
BEGIN
SELECT ARGUMENTS_seq.NEXTVAL INTO :NEW.id FROM DUAL;
END;
/
-- SQLINES LICENSE FOR EVALUATION USE ONLY
CREATE TABLE DEBATE_TAGS
(
id NUMBER(10) NOT NULL,
tag_name NVARCHAR2(200) UNIQUE,
CONSTRAINT PK_DISCUSS_TagsID PRIMARY KEY (id)
);
-- Generate ID using sequence and trigger
CREATE SEQUENCE DEBATE_TAGS_seq START WITH 1 INCREMENT BY 1;
CREATE OR REPLACE TRIGGER DEBATE_TAGS_seq_tr
BEFORE INSERT ON DEBATE_TAGS FOR EACH ROW
WHEN (NEW.id IS NULL)
BEGIN
SELECT DEBATE_TAGS_seq.NEXTVAL INTO :NEW.id FROM DUAL;
END;
/
-- SQLINES LICENSE FOR EVALUATION USE ONLY
CREATE TABLE ARGUMENTS_TAGS
(
id NUMBER(10) NOT NULL,
argument_id NUMBER(10) NOT NULL,
tag_id NUMBER(10) NOT NULL,
UNIQUE (argument_id, tag_id),
CONSTRAINT PK_DISCUSS_ArgumentTagsID PRIMARY KEY (id),
FOREIGN KEY (argument_id) REFERENCES ARGUMENTS (id),
FOREIGN KEY (tag_id) REFERENCES DEBATE_TAGS (id)
);
-- Generate ID using sequence and trigger
CREATE SEQUENCE ARGUMENTS_TAGS_seq START WITH 1 INCREMENT BY 1;
CREATE OR REPLACE TRIGGER ARGUMENTS_TAGS_seq_tr
BEFORE INSERT ON ARGUMENTS_TAGS FOR EACH ROW
WHEN (NEW.id IS NULL)
BEGIN
SELECT ARGUMENTS_TAGS_seq.NEXTVAL INTO :NEW.id FROM DUAL;
END;
/
-- SQLINES LICENSE FOR EVALUATION USE ONLY
CREATE TABLE VOTES
(
id NUMBER(10) NOT NULL,
sijl_id NUMBER(10) NOT NULL,
argument_id NUMBER(10) NOT NULL,
UNIQUE (sijl_id, argument_id),
CONSTRAINT PK_DISCUSS_Vote_ID PRIMARY KEY (id),
FOREIGN KEY (argument_id) REFERENCES ARGUMENTS (id),
FOREIGN KEY (sijl_id) REFERENCES DEBATE_USERS (id)
);
-- Generate ID using sequence and trigger
CREATE SEQUENCE VOTES_seq START WITH 1 INCREMENT BY 1;
CREATE OR REPLACE TRIGGER VOTES_seq_tr
BEFORE INSERT ON VOTES FOR EACH ROW
WHEN (NEW.id IS NULL)
BEGIN
SELECT VOTES_seq.NEXTVAL INTO :NEW.id FROM DUAL;
END;
/