-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.sql
More file actions
63 lines (57 loc) · 2.03 KB
/
Copy pathscript.sql
File metadata and controls
63 lines (57 loc) · 2.03 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
DROP TABLE Usuario CASCADE;
DROP TABLE Post CASCADE;
DROP TABLE Grupo CASCADE;
DROP TABLE GrupoUsuarios CASCADE;
DROP TABLE Follow CASCADE;
DROP TABLE PostReacao CASCADE;
CREATE TABLE Usuario (
usuario VARCHAR(10) NOT NULL,
senha VARCHAR(10) NOT NULL,
nome VARCHAR(30) NOT NULL,
aniversario DATE,
foto VARCHAR(50),
descricao VARCHAR(200),
CONSTRAINT PKusuario PRIMARY KEY (usuario)
);
CREATE TABLE Follow (
usuario VARCHAR(10) NOT NULL,
follow VARCHAR(10) NOT NULL,
CONSTRAINT FKusuario FOREIGN KEY (usuario) REFERENCES Usuario (usuario) ON DELETE CASCADE,
CONSTRAINT FKfollow FOREIGN KEY (follow) REFERENCES Usuario (usuario) ON DELETE CASCADE,
CONSTRAINT PKfollow PRIMARY KEY (usuario, follow)
);
CREATE TABLE Post (
idPost SERIAL NOT NUll,
usuario VARCHAR(10) NOT NULL,
titulo VARCHAR(30) NOT NULL,
conteudo VARCHAR(300) NOT NULL,
data TIMESTAMP DEFAULT CURRENT_TIMESTAMP(2),
CONSTRAINT PKpost PRIMARY KEY (idPost),
CONSTRAINT FKusuario FOREIGN KEY (usuario) REFERENCES Usuario (usuario) ON DELETE CASCADE
);
CREATE TABLE PostReacao (
idPost INTEGER NOT NULL,
usuario VARCHAR(10) NOT NULL,
reacao INTEGER DEFAULT 0,
compartilhou BOOLEAN DEFAULT FALSE,
CONSTRAINT FKpost FOREIGN KEY (idPost) REFERENCES Post (idPost) ON DELETE CASCADE,
CONSTRAINT FKusuario FOREIGN KEY (usuario) REFERENCES Usuario (usuario) ON DELETE CASCADE,
CONSTRAINT PKpostReacao PRIMARY KEY (idPost, usuario),
CONSTRAINT CHreacao CHECK (reacao IN (0, 1, 2))
);
CREATE TABLE Grupo (
idGrupo SERIAL NOT NULL,
usuario VARCHAR(10) NOT NULL,
nome VARCHAR(20) NOT NULL,
foto VARCHAR(50),
descricao VARCHAR(200),
CONSTRAINT PKgrupo PRIMARY KEY (idGrupo),
CONSTRAINT FKusuario FOREIGN KEY (usuario) REFERENCES Usuario (usuario) ON DELETE CASCADE
);
CREATE TABLE GrupoUsuarios (
idGrupo INTEGER NOT NULL,
usuario VARCHAR(10) NOT NULL,
CONSTRAINT FKgrupo FOREIGN KEY (idGrupo) REFERENCES Grupo (idGrupo) ON DELETE CASCADE,
CONSTRAINT FKusuario FOREIGN KEY (usuario) REFERENCES Usuario (usuario) ON DELETE CASCADE,
CONSTRAINT PKgrupoUsuarios PRIMARY KEY (idGrupo, usuario)
);