-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodelo.sql
More file actions
174 lines (140 loc) · 4.81 KB
/
Copy pathmodelo.sql
File metadata and controls
174 lines (140 loc) · 4.81 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
DROP TABLE tb_missoes_concluidas;
DROP TABLE tb_itens_comprados;
DROP TABLE tb_loja;
DROP TABLE tb_itens_loja;
DROP TABLE tb_plantas;
DROP TABLE tb_missoes;
DROP TABLE tb_tipo_plantas;
DROP TABLE tb_jardins;
DROP TABLE tb_usuarios;
CREATE TABLE tb_usuarios (
usuario_id INTEGER GENERATED ALWAYS AS IDENTITY,
nome VARCHAR2(120) NOT NULL,
cpf VARCHAR2(14) NOT NULL,
arc_score INTEGER NOT NULL,
status VARCHAR2(20) NOT NULL,
CONSTRAINT tb_usuarios_pk PRIMARY KEY (usuario_id),
CONSTRAINT tb_usuarios_un UNIQUE (cpf),
CONSTRAINT tb_usuarios_ck
CHECK (status IN ('ATIVO', 'INATIVO', 'DESATIVADO'))
);
CREATE TABLE tb_jardins (
jardim_id INTEGER GENERATED ALWAYS AS IDENTITY,
usuario_id INTEGER NOT NULL,
nome VARCHAR2(120) NOT NULL,
tema VARCHAR2(20) NOT NULL,
CONSTRAINT tb_jardins_pk PRIMARY KEY (jardim_id),
CONSTRAINT tb_jardins_fk
FOREIGN KEY (usuario_id)
REFERENCES tb_usuarios (usuario_id),
CONSTRAINT tb_jardins_ck
CHECK (tema IN ('AGUA', 'ENERGIA', 'RENOVACAO', 'NATUREZA'))
);
CREATE TABLE tb_tipo_plantas (
tipo_id INTEGER GENERATED ALWAYS AS IDENTITY,
nome VARCHAR2(120) NOT NULL,
categoria VARCHAR2(20) NOT NULL,
xp_maximo INTEGER NOT NULL,
descricao VARCHAR2(500) NOT NULL,
CONSTRAINT tb_tipo_plantas_pk PRIMARY KEY (tipo_id),
CONSTRAINT tb_tipo_plantas_ck
CHECK (
categoria IN ('AGUA', 'ENERGIA', 'RENOVACAO', 'NATUREZA')
AND xp_maximo > 0
)
);
CREATE TABLE tb_plantas (
planta_id INTEGER GENERATED ALWAYS AS IDENTITY,
jardim_id INTEGER NOT NULL,
tipo_id INTEGER NOT NULL,
raridade VARCHAR2(20) NOT NULL,
level_planta VARCHAR2(1) NOT NULL,
premiada VARCHAR2(1) NOT NULL,
xp_atual INTEGER NOT NULL,
CONSTRAINT tb_plantas_pk PRIMARY KEY (planta_id),
CONSTRAINT tb_plantas_jardim_fk
FOREIGN KEY (jardim_id)
REFERENCES tb_jardins (jardim_id),
CONSTRAINT tb_plantas_tipo_fk
FOREIGN KEY (tipo_id)
REFERENCES tb_tipo_plantas (tipo_id),
CONSTRAINT tb_plantas_ck
CHECK (
raridade IN ('COMUM', 'RARA', 'ULTRARARA', 'BRILHANTE')
AND level_planta IN ('1', '2', '3', '4', '5')
AND premiada IN ('N', 'S')
AND xp_atual >= 0
)
);
CREATE TABLE tb_missoes (
missao_id INTEGER GENERATED ALWAYS AS IDENTITY,
nome VARCHAR2(200) NOT NULL,
descricao VARCHAR2(500) NOT NULL,
dificuldade VARCHAR2(1) NOT NULL,
vezes INTEGER NOT NULL,
recompensa_pontos INTEGER NOT NULL,
CONSTRAINT tb_missoes_pk PRIMARY KEY (missao_id),
CONSTRAINT tb_missoes_ck
CHECK (
dificuldade IN ('F', 'M', 'D')
AND vezes > 0
AND recompensa_pontos >= 0
AND recompensa_pontos <= 100
)
);
CREATE TABLE tb_itens_loja (
item_loja_id INTEGER GENERATED ALWAYS AS IDENTITY,
nome VARCHAR2(120) NOT NULL,
tipo VARCHAR2(20) NOT NULL,
preco_agua NUMERIC(5,2) NOT NULL,
CONSTRAINT tb_itens_loja_pk PRIMARY KEY (item_loja_id),
CONSTRAINT tb_itens_loja_ck
CHECK (
tipo IN ('COSMETICO', 'MELHORIA', 'ROLETA', 'SEMENTE')
AND preco_agua >= 0
)
);
CREATE TABLE tb_loja (
loja_id INTEGER GENERATED ALWAYS AS IDENTITY,
item_loja_id INTEGER NOT NULL,
atualizacao DATE NOT NULL,
CONSTRAINT tb_loja_pk PRIMARY KEY (loja_id),
CONSTRAINT tb_loja_item_loja_fk
FOREIGN KEY (item_loja_id)
REFERENCES tb_itens_loja (item_loja_id)
);
CREATE TABLE tb_itens_comprados (
item_comprado_id INTEGER GENERATED ALWAYS AS IDENTITY,
data_compra DATE NOT NULL,
quantidade INTEGER NOT NULL,
usuario_id INTEGER NOT NULL,
item_loja_id INTEGER NOT NULL,
CONSTRAINT tb_itens_comprados_pk PRIMARY KEY (item_comprado_id),
CONSTRAINT tb_itens_comprados_usuario_fk
FOREIGN KEY (usuario_id)
REFERENCES tb_usuarios (usuario_id),
CONSTRAINT tb_itens_comprados_item_loja_fk
FOREIGN KEY (item_loja_id)
REFERENCES tb_itens_loja (item_loja_id),
CONSTRAINT tb_itens_comprados_ck
CHECK (quantidade > 0)
);
CREATE TABLE tb_missoes_concluidas (
missao_concluida_id INTEGER GENERATED ALWAYS AS IDENTITY,
missao_id INTEGER NOT NULL,
usuario_id INTEGER NOT NULL,
data_conclusao DATE NOT NULL,
pontos_ganhos INTEGER NOT NULL,
CONSTRAINT tb_missoes_concluidas_pk PRIMARY KEY (missao_concluida_id),
CONSTRAINT tb_missoes_concluidas_missoes_fk
FOREIGN KEY (missao_id)
REFERENCES tb_missoes (missao_id),
CONSTRAINT tb_missoes_concluidas_usuario_fk
FOREIGN KEY (usuario_id)
REFERENCES tb_usuarios (usuario_id),
CONSTRAINT tb_missoes_concluidas_ck
CHECK (
pontos_ganhos >= 0
AND pontos_ganhos <= 100
)
);