-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathTF_Query_1_CreateTable.sql
332 lines (294 loc) · 10.3 KB
/
TF_Query_1_CreateTable.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
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
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
-- -----------------------------------------------------------------
-- Data Criacao ...........: 05/01/2023
-- Autor(es) ..............: Felipe Moura e Letícia Araújo
-- Versao ..............: 1.0
-- Banco de Dados .........: PostgreSQL
-- Descricao .........: Criando primeiras tabelas do banco de dados.
-- ------------------------------------------------------------------------------
-- Data Atualizacao ...........: 14/01/2023
-- Autor(es) ..............: Letícia Araújo
-- Descricao .........: Criando tabelas faltantes e modificando o tipo do ID.
-- ------------------------------------------------------------------------------
-- Data Atualizacao ...........: 24/01/2023
-- Autor(es) ..............: Letícia Araújo
-- Descricao .........: Criando transactions para savepoint
-- ------------------------------------------------------------------------------
-- Tabela MAPA
begin;
CREATE SEQUENCE mapa_id_seq START 1;
CREATE TABLE IF NOT EXISTS MAPA(
idMapa int NOT NULL DEFAULT nextval('mapa_id_seq') PRIMARY KEY,
descricao CHAR(60) NOT NULL
);
ALTER SEQUENCE mapa_id_seq OWNED BY MAPA.idMapa;
savepoint create_tb_MAPA;
commit;
-- Tabela REGIAO
begin;
CREATE SEQUENCE regiao_id_seq START 1;
CREATE TABLE IF NOT EXISTS REGIAO(
idRegiao int NOT NULL DEFAULT nextval('regiao_id_seq') PRIMARY KEY,
idMapa INT NOT NULL,
descricao VARCHAR NOT NULL,
nome CHAR(20) NOT NULL,
FOREIGN KEY (idMapa) REFERENCES MAPA (idMapa)
);
ALTER SEQUENCE regiao_id_seq OWNED BY REGIAO.idRegiao;
savepoint create_tb_REGIAO;
commit;
-- Tabela AREA
begin;
CREATE SEQUENCE area_id_seq START 1;
CREATE TABLE IF NOT EXISTS AREA(
idArea int NOT NULL DEFAULT nextval('area_id_seq') PRIMARY KEY,
idRegiao INT NOT NULL,
nome VARCHAR(50) NOT NULL,
areaLeste INT REFERENCES AREA(idArea),
areaOeste INT REFERENCES AREA(idArea),
areaSul INT REFERENCES AREA(idArea),
areaNorte INT REFERENCES AREA(idArea),
FOREIGN KEY (idRegiao) REFERENCES REGIAO (idRegiao)
);
ALTER SEQUENCE area_id_seq OWNED BY AREA.idArea;
savepoint create_tb_AREA;
commit;
-- Tabela FEITICO
begin;
CREATE SEQUENCE feitico_id_seq START 1;
CREATE TABLE IF NOT EXISTS FEITICO(
idFeitico int NOT NULL DEFAULT nextval('feitico_id_seq') PRIMARY KEY,
nome VARCHAR(20) NOT NULL,
efeito VARCHAR NOT NULL,
ponto INT NOT NULL
);
ALTER SEQUENCE feitico_id_seq OWNED BY FEITICO.idFeitico;
savepoint create_tb_FEITICO;
commit;
-- Tabela LOJA
begin;
CREATE SEQUENCE loja_id_seq START 1;
CREATE TABLE IF NOT EXISTS LOJA(
idLoja INT NOT NULL DEFAULT nextval('loja_id_seq') PRIMARY KEY,
idArea INT NOT NULL,
descricao VARCHAR(60) NOT NULL,
FOREIGN KEY (idArea) REFERENCES AREA (idArea)
);
ALTER SEQUENCE loja_id_seq OWNED BY LOJA.idLoja;
savepoint create_tb_LOJA;
commit;
-- Tabela ITEM
begin;
CREATE SEQUENCE item_id_seq START 1;
CREATE TABLE IF NOT EXISTS ITEM(
idItem int NOT NULL DEFAULT nextval('item_id_seq') PRIMARY KEY,
idLoja INT NULL,
nome VARCHAR(30) NOT NULL,
acao VARCHAR(200) NOT NULL,
valor NUMERIC(10,2) NOT NULL,
tipo CHAR(20) NOT NULL,
descricaoItem VARCHAR(60) NOT NULL,
FOREIGN KEY (idLoja) REFERENCES LOJA (idLoja)
);
ALTER SEQUENCE item_id_seq OWNED BY ITEM.idItem;
savepoint create_tb_ITEM;
commit;
-- Tabela NPC
begin;
CREATE SEQUENCE npc_id_seq START 1;
CREATE TABLE IF NOT EXISTS NPC(
idNPC INT NOT NULL DEFAULT nextval('npc_id_seq') PRIMARY KEY,
item INT NOT NULL,
nome VARCHAR(20) NOT NULL,
FOREIGN KEY (item) REFERENCES ITEM (idItem)
);
ALTER SEQUENCE npc_id_seq OWNED BY NPC.idNPC;
savepoint create_tb_NPC;
commit;
-- Tabela CASA
begin;
CREATE SEQUENCE casa_id_seq START 1;
CREATE TABLE IF NOT EXISTS CASA(
idCasa int NOT NULL DEFAULT nextval('casa_id_seq') PRIMARY KEY,
nomeCasa VARCHAR(10) NOT NULL,
petCasa CHAR(8) NOT NULL
);
ALTER SEQUENCE casa_id_seq OWNED BY CASA.idCasa;
savepoint create_tb_CASA;
commit;
-- Tabela DISCIPLINA
begin;
CREATE SEQUENCE disciplina_id_seq START 1;
CREATE TABLE IF NOT EXISTS DISCIPLINA(
idDisciplina int NOT NULL DEFAULT nextval('disciplina_id_seq') PRIMARY KEY,
NPC INT NOT NULL,
nomeDisciplina VARCHAR(20) NOT NULL,
feitico INT NOT NULL,
FOREIGN KEY (NPC) REFERENCES NPC (idNPC),
FOREIGN KEY (feitico) REFERENCES FEITICO (idFeitico)
);
ALTER SEQUENCE disciplina_id_seq OWNED BY DISCIPLINA.idDisciplina;
savepoint create_tb_DISCIPLINA;
commit;
-- Tabela PROFESSOR
begin;
CREATE TABLE IF NOT EXISTS PROFESSOR(
idNPC INT NOT NULL,
casa INT NOT NULL,
disciplina INT NOT NULL,
FOREIGN KEY (idNPC) REFERENCES NPC (idNPC),
FOREIGN KEY (casa) REFERENCES CASA (idCasa),
FOREIGN KEY (disciplina) REFERENCES DISCIPLINA (idDisciplina)
);
savepoint create_tb_PROFESSOR;
commit;
-- Tabela JOGADOR
begin;
CREATE SEQUENCE jogador_id_seq START 1;
CREATE TABLE IF NOT EXISTS JOGADOR(
idJogador INT NOT NULL DEFAULT nextval('jogador_id_seq') PRIMARY KEY,
nome VARCHAR(20) NOT NULL,
idArea INT NOT NULL,
pontosVida INT NOT NULL,
idCasa INT NOT NULL,
estado INT NOT NULL DEFAULT 1,
FOREIGN KEY (idArea) REFERENCES AREA (idArea),
FOREIGN KEY (idCasa) REFERENCES CASA (idCasa),
UNIQUE (nome)
);
ALTER SEQUENCE jogador_id_seq OWNED BY JOGADOR.idJogador;
savepoint create_tb_JOGADOR;
commit;
-- Tabela GRIMORIO
begin;
CREATE SEQUENCE grimorio_id_seq START 1;
CREATE TABLE IF NOT EXISTS GRIMORIO(
idGrimorio INT NOT NULL,
feitico INT NOT NULL,
FOREIGN KEY (idGrimorio) REFERENCES JOGADOR (idJogador),
FOREIGN KEY (feitico) REFERENCES FEITICO (idFeitico),
PRIMARY KEY (idGrimorio,feitico)
);
ALTER SEQUENCE grimorio_id_seq OWNED BY GRIMORIO.idGrimorio;
savepoint create_tb_GRIMORIO;
commit;
-- Tabela INSTANCIA_ITEM
begin;
CREATE SEQUENCE instancia_item_id_seq START 1;
CREATE TABLE IF NOT EXISTS INSTANCIA_ITEM(
idInstanciaItem INT NOT NULL DEFAULT nextval('instancia_item_id_seq') PRIMARY KEY,
idItem INT NOT NULL,
idJogador INT NULL DEFAULT NULL,
FOREIGN KEY (idItem) REFERENCES ITEM (idItem),
FOREIGN KEY (idJogador) REFERENCES JOGADOR (idJogador)
);
ALTER SEQUENCE instancia_item_id_seq OWNED BY INSTANCIA_ITEM.idInstanciaItem;
savepoint create_tb_INSTANCIA_ITEM;
commit;
-- Tabela INVENTARIO
begin;
CREATE TABLE IF NOT EXISTS INVENTARIO(
idJogador INT NOT NULL,
dinheiro INT NULL,
FOREIGN KEY (idJogador) REFERENCES JOGADOR (idJogador)
);
savepoint create_tb_INVENTARIO;
commit;
-- Tabela INSTANCIA_JOGADOR_DISCIPLINA
begin;
CREATE TABLE IF NOT EXISTS INSTANCIA_JOGADOR_DISCIPLINA(
idJogador INT NOT NULL,
idDisciplina INT NULL,
FOREIGN KEY (idJogador) REFERENCES JOGADOR (idJogador),
FOREIGN KEY (idDisciplina) REFERENCES DISCIPLINA (idDisciplina)
);
savepoint create_tb_INSTANCIA_JOGADOR_DISCIPLINA;
commit;
-- Tabela HABILIDADE
begin;
CREATE SEQUENCE habilidade_id_seq START 1;
CREATE TABLE IF NOT EXISTS HABILIDADE(
idHabilidade INT NOT NULL DEFAULT nextval('habilidade_id_seq') PRIMARY KEY,
nomeHabilidade VARCHAR(30) NOT NULL,
dano INT NULL,
descricao VARCHAR(60) NOT NULL
);
ALTER SEQUENCE habilidade_id_seq OWNED BY HABILIDADE.idHabilidade;
savepoint create_tb_HABILIDADE;
commit;
-- Tabela INIMIGO
begin;
CREATE TABLE IF NOT EXISTS INIMIGO(
idNPC INT NOT NULL,
idHabilidade INT NULL,
moedas INT NOT NULL,
FOREIGN KEY (idNPC) REFERENCES NPC (idNPC),
FOREIGN KEY (idHabilidade) REFERENCES HABILIDADE (idHabilidade)
);
savepoint create_tb_INIMIGO;
commit;
-- Tabela INSTANCIA_INIMIGO
begin;
CREATE SEQUENCE instancia_inimigo_id_seq START 1;
CREATE TABLE IF NOT EXISTS INSTANCIA_INIMIGO(
idInstancia_Inimigo INT NOT NULL DEFAULT nextval('instancia_inimigo_id_seq') PRIMARY KEY,
idNPC INT NOT NULL,
idArea INT NOT NULL,
idItem INT NULL,
pontosVidaMax INT NOT NULL,
pontosVida INT NOT NULL,
multiplicador INT NOT NULL,
FOREIGN KEY (idNPC) REFERENCES NPC (idNPC),
FOREIGN KEY (idArea) REFERENCES AREA (idArea),
FOREIGN KEY (idItem) REFERENCES ITEM (idItem)
);
ALTER SEQUENCE instancia_inimigo_id_seq OWNED BY INSTANCIA_INIMIGO.idInstancia_Inimigo;
savepoint create_tb_INSTANCIA_INIMIGO;
commit;
-- Tabela FERRAMENTA
begin;
CREATE TABLE IF NOT EXISTS FERRAMENTA(
idItem INT NOT NULL,
forca INT NULL,
FOREIGN KEY (idItem) REFERENCES ITEM (idItem)
);
savepoint create_tb_FERRAMENTA;
commit;
-- Tabela POCAO
begin;
CREATE TABLE IF NOT EXISTS POCAO(
idItem INT NOT NULL,
ingrediente CHAR(30) NOT NULL,
FOREIGN KEY (idItem) REFERENCES ITEM (idItem)
);
savepoint create_tb_POCAO;
commit;
-- Tabela Livro
begin;
CREATE TABLE IF NOT EXISTS LIVRO(
idItem INT NOT NULL,
feitico INT NOT NULL,
FOREIGN KEY (idItem) REFERENCES ITEM (idItem),
FOREIGN KEY (feitico) REFERENCES FEITICO (idFeitico)
);
savepoint create_tb_LIVRO;
commit;
-- Tabela Falas
begin;
CREATE TABLE IF NOT EXISTS FALAS(
idNPC INT NOT NULL,
idArea INT NOT NULL,
texto VARCHAR(300),
momento INT NOT NULL,
FOREIGN KEY (idNPC) REFERENCES NPC (idNPC),
FOREIGN KEY (idArea) REFERENCES AREA (idArea)
);
commit;
-- Tabela Instancia_NPC_Tipo
begin;
CREATE TABLE IF NOT EXISTS INSTANCIA_NPC_TIPO(
idNPC INT NOT NULL,
tipo CHAR(30) NOT NULL,
FOREIGN KEY (idNPC) REFERENCES NPC (idNPC)
);
savepoint create_tb_INSTANCIA_NPC_TIPO;
commit;