-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathcrebas.sql
More file actions
234 lines (206 loc) · 9.24 KB
/
crebas.sql
File metadata and controls
234 lines (206 loc) · 9.24 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
/*==============================================================*/
/* DBMS name: PostgreSQL 8 */
/* Created on: 11/6/2012 5:21:26 PM */
/*==============================================================*/
/*==============================================================*/
/* Table: ATTACH */
/*==============================================================*/
create table ATTACH (
ATTACHID SERIAL not null,
MESSAGEID INT4 not null,
FILE_PATH VARCHAR(1024) not null,
constraint PK_ATTACH primary key (ATTACHID)
);
/*==============================================================*/
/* Index: ATTACH_PK */
/*==============================================================*/
create unique index ATTACH_PK on ATTACH (
ATTACHID
);
/*==============================================================*/
/* Table: COMMENT */
/*==============================================================*/
create table COMMENT (
COMMENTID SERIAL not null,
POSTID INT4 not null,
USERID INT4 not null,
SENDING TIMESTAMP not null,
CONTENT VARCHAR(1024) not null,
constraint PK_COMMENT primary key (COMMENTID)
);
/*==============================================================*/
/* Index: POSTCOMMENT_PK */
/*==============================================================*/
create index POSTCOMMENT_PK on COMMENT (
POSTID
);
/*==============================================================*/
/* Index: CONTAINS_FK */
/*==============================================================*/
create index CONTAINS_FK on ATTACH (
MESSAGEID
);
/*==============================================================*/
/* Table: CHATROOM */
/*==============================================================*/
create table CHATROOM (
CHATID SERIAL not null,
OWNERID INT4 not null,
NAME VARCHAR(1024) not null,
RATING INT4 null,
SUBJECT VARCHAR(1024) not null,
ISCLOSED BOOL not null,
constraint PK_CHATROOM primary key (CHATID),
constraint subject_type CHECK (SUBJECT IN ('economia','mundo','cultura','desporto','ciencia','tecnologia','multimedia','musica'))
);
/*==============================================================*/
/* Index: CHATROOM_PK */
/*==============================================================*/
create unique index CHATROOM_PK on CHATROOM (
CHATID
);
/*==============================================================*/
/* Index: OWNS_FK */
/*==============================================================*/
create index OWNS_FK on CHATROOM (
OWNERID
);
/*==============================================================*/
/* Table: CONNECTION */
/*==============================================================*/
create table CONNECTION (
CHATID INT4 not null,
USERID INT4 not null,
TYPE VARCHAR(1024) not null,
constraint PK_CONNECTION primary key (CHATID, USERID),
constraint message_type CHECK (type IN ('poster','watcher'))
);
/*==============================================================*/
/* Index: CONNECTION_PK */
/*==============================================================*/
create unique index CONNECTION_PK on CONNECTION (
CHATID,
USERID
);
/*==============================================================*/
/* Index: LINKS_FK */
/*==============================================================*/
create index LINKS_FK on CONNECTION (
CHATID
);
/*==============================================================*/
/* Index: HAS_FK */
/*==============================================================*/
create index HAS_FK on CONNECTION (
USERID
);
/*==============================================================*/
/* Table: MESSAGE */
/*==============================================================*/
create table MESSAGE (
MESSAGEID SERIAL not null,
FACEBOOKID VARCHAR(1024) null,
SENDERID INT4 not null,
SENDING TIMESTAMP not null,
CONTENT VARCHAR(1024) not null,
RECEIVERID INT4 null,
RECEIVING TIMESTAMP null,
LAST_ACTIVITY TIMESTAMP not null,
TYPE VARCHAR(8) not null,
constraint PK_MESSAGE primary key (MESSAGEID),
constraint message_type CHECK (type IN ('public','private','post'))
);
/*==============================================================*/
/* Index: MESSAGE_PK */
/*==============================================================*/
create unique index MESSAGE_PK on MESSAGE (
MESSAGEID
);
/*==============================================================*/
/* Table: USERS */
/*==============================================================*/
create table USERS (
USERID SERIAL not null,
NAME VARCHAR(1024) not null,
EMAIL VARCHAR(1024) not null,
FACEBOOKID VARCHAR(1024) null,
CITY VARCHAR(1024) null,
COUNTRY VARCHAR(1024) null,
BDAY DATE null,
SEX VARCHAR(1024) null,
RECOVERING VARCHAR(1024) null,
PASSWORD VARCHAR(1024) not null,
ISACTIVE BOOL not null,
ISPUBLIC BOOL not null,
constraint PK_USER primary key (USERID),
constraint ID_EMAIL unique (EMAIL)
);
/*==============================================================*/
/* Index: USER_PK */
/*==============================================================*/
create unique index USER_PK on USERS (
USERID
);
/*==============================================================*/
/* Index: EMAIL */
/*==============================================================*/
create unique index EMAIL on USERS (
EMAIL
);
/*==============================================================*/
/* Table: VOTE */
/*==============================================================*/
create table VOTE (
CHATID INT4 not null,
USERID INT4 not null,
RATE INT4 not null,
constraint PK_VOTE primary key (CHATID, USERID),
constraint vote_rate CHECK (rate IN (1, 2, 3))
);
/*==============================================================*/
/* Index: VOTE_PK */
/*==============================================================*/
create unique index VOTE_PK on VOTE (
CHATID,
USERID
);
/*==============================================================*/
/* Index: TO_FK */
/*==============================================================*/
create index TO_FK on VOTE (
CHATID
);
/*==============================================================*/
/* Index: GIVES_FK */
/*==============================================================*/
create index GIVES_FK on VOTE (
USERID
);
alter table ATTACH
add constraint FK_ATTACH_CONTAINS_MESSAGE foreign key (MESSAGEID)
references MESSAGE (MESSAGEID)
on delete restrict on update restrict;
alter table CHATROOM
add constraint FK_CHATROOM_OWNS_USER foreign key (OWNERID)
references USERS (USERID)
on delete restrict on update restrict;
alter table CONNECTION
add constraint FK_CONNECTI_HAS_USER foreign key (USERID)
references USERS (USERID)
on delete restrict on update restrict;
alter table CONNECTION
add constraint FK_CONNECTI_LINKS_CHATROOM foreign key (CHATID)
references CHATROOM (CHATID)
on delete restrict on update restrict;
alter table MESSAGE
add constraint FK_MESSAGE_SENDS_USER foreign key (SENDERID)
references USERS (USERID)
on delete restrict on update restrict;
alter table VOTE
add constraint FK_VOTE_GIVES_USER foreign key (USERID)
references USERS (USERID)
on delete restrict on update restrict;
alter table VOTE
add constraint FK_VOTE_TO_CHATROOM foreign key (CHATID)
references CHATROOM (CHATID)
on delete restrict on update restrict;