-
Notifications
You must be signed in to change notification settings - Fork 1
/
tables_creation.sql
143 lines (115 loc) · 4.23 KB
/
tables_creation.sql
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
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- ############################################################################################################################################################### --
-- ##################################################################### CRIAÇÃO DAS TABELAS ##################################################################### --
-- ############################################################################################################################################################### --
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE TABLE ALUNO
(
COD_ALUNO SERIAL NOT NULL PRIMARY KEY,
NOME VARCHAR(30) NOT NULL,
CPF VARCHAR(11),
DATA_NASCIMENTO DATE NOT NULL,
EMAIL VARCHAR(30) NOT NULL,
SENHA VARCHAR(30) NOT NULL,
SALDO FLOAT DEFAULT 0
);
CREATE TABLE PROFESSOR
(
COD_PROFESSOR SERIAL NOT NULL PRIMARY KEY,
NOME VARCHAR(30) NOT NULL,
CPF VARCHAR(11) NOT NULL,
DATA_NASCIMENTO DATE NOT NULL,
EMAIL VARCHAR(30) NOT NULL,
SENHA VARCHAR(30) NOT NULL,
SALDO FLOAT DEFAULT 0,
DATA_ULTIMO_PAGAMENTO DATE DEFAULT NULL
);
CREATE TABLE CURSO
(
COD_CURSO SERIAL NOT NULL PRIMARY KEY,
NOME VARCHAR(60) NOT NULL,
DESCRICAO VARCHAR(300),
DURACAO INT DEFAULT 0,
PRECO FLOAT,
NUMERO_MODULOS INT DEFAULT 0,
PUBLICADO BOOLEAN DEFAULT FALSE,
DISPONIBILIDADE BOOLEAN DEFAULT FALSE,
COD_PROFESSOR INT NOT NULL REFERENCES PROFESSOR(COD_PROFESSOR) ON DELETE CASCADE
);
CREATE TABLE ALUNO_CURSO
(
COD_ALUNO_CURSO SERIAL NOT NULL PRIMARY KEY,
DATA_COMPRA DATE,
NOTA_AVALIACAO FLOAT,
COD_ALUNO INT NOT NULL REFERENCES ALUNO(COD_ALUNO) ON DELETE CASCADE,
COD_CURSO INT NOT NULL REFERENCES CURSO(COD_CURSO) ON DELETE CASCADE
);
CREATE TABLE MODULO
(
COD_MODULO SERIAL NOT NULL PRIMARY KEY,
NOME VARCHAR(100),
DESCRICAO VARCHAR(300),
COD_CURSO INT NOT NULL REFERENCES CURSO(COD_CURSO) ON DELETE CASCADE
);
CREATE TABLE ALUNO_MODULO
(
COD_ALUNO_MODULO SERIAL NOT NULL PRIMARY KEY,
ACESSIVEL BOOLEAN,
META_CONCLUIDA BOOLEAN,
COD_ALUNO INT NOT NULL REFERENCES ALUNO(COD_ALUNO) ON DELETE CASCADE,
COD_MODULO INT NOT NULL REFERENCES MODULO(COD_MODULO) ON DELETE CASCADE
);
CREATE TABLE PRE_REQUISITO
(
COD_PRE_REQUISITO SERIAL NOT NULL PRIMARY KEY,
COD_MODULO INT NOT NULL REFERENCES MODULO(COD_MODULO) ON DELETE CASCADE,
COD_MODULO_PRE_REQUISITO INT NOT NULL REFERENCES MODULO(COD_MODULO) ON DELETE CASCADE,
UNIQUE (COD_PRE_REQUISITO, COD_MODULO) -- PAR DE VALORES ÚNICOS (1, 2), (2, 1), PORÉM (1, 2) NOVAMENTE NÃO PODE.
);
CREATE TABLE DISCIPLINA
(
COD_DISCIPLINA SERIAL NOT NULL PRIMARY KEY,
NOME VARCHAR(100),
DESCRICAO VARCHAR(300),
COD_MODULO INT NOT NULL REFERENCES MODULO(COD_MODULO) ON DELETE CASCADE
);
CREATE TABLE VIDEO_AULA
(
COD_VIDEO_AULA SERIAL PRIMARY KEY,
NOME VARCHAR(30) NOT NULL,
DESCRICAO VARCHAR(300),
DURACAO FLOAT,
COD_DISCIPLINA INT NOT NULL REFERENCES DISCIPLINA(COD_DISCIPLINA) ON DELETE CASCADE
);
CREATE TABLE ALUNO_VIDEO_ASSISTIDO
(
COD_ALUNO_VIDEO_ASSISTIDO SERIAL NOT NULL PRIMARY KEY,
COD_ALUNO INT NOT NULL REFERENCES ALUNO(COD_ALUNO) ON DELETE CASCADE,
COD_VIDEO_AULA INT NOT NULL REFERENCES VIDEO_AULA(COD_VIDEO_AULA) ON DELETE CASCADE
);
CREATE TABLE QUESTAO
(
COD_QUESTAO SERIAL NOT NULL PRIMARY KEY,
TEXTO VARCHAR(500),
COD_DISCIPLINA INT NOT NULL REFERENCES DISCIPLINA(COD_DISCIPLINA) ON DELETE CASCADE
);
CREATE TABLE QUESTIONARIO
(
COD_QUESTIONARIO SERIAL NOT NULL PRIMARY KEY,
NOME VARCHAR(30),
COD_DISCIPLINA INT NOT NULL REFERENCES DISCIPLINA(COD_DISCIPLINA) ON DELETE CASCADE
);
CREATE TABLE QUESTAO_QUESTIONARIO
(
COD_QUESTAO_QUESTIONARIO SERIAL NOT NULL PRIMARY KEY,
COD_QUESTAO INT NOT NULL REFERENCES QUESTAO(COD_QUESTAO) ON DELETE CASCADE,
COD_QUESTIONARIO INT NOT NULL REFERENCES QUESTIONARIO(COD_QUESTIONARIO) ON DELETE CASCADE
);
CREATE TABLE QUESTAO_ALUNO
(
COD_QUESTAO_ALUNO SERIAL NOT NULL PRIMARY KEY,
RESPOSTA_ALUNO VARCHAR(500),
RESPOSTA_CORRETA VARCHAR(13) DEFAULT 'NÃO ANALISADA',
COD_QUESTAO INT NOT NULL REFERENCES QUESTAO(COD_QUESTAO),
COD_ALUNO INT NOT NULL REFERENCES ALUNO(COD_ALUNO)
);