-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMF_Sales_DB.sql
382 lines (356 loc) · 7.57 KB
/
MF_Sales_DB.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
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
CREATE TYPE caterers AS ENUM (
'Suzano',
'Bracell',
'Eldorado',
'Klabin',
'Cenibra',
'W3B',
'IP',
'TF'
);
CREATE TYPE brands AS ENUM (
'Greenbag',
'Greenpack',
'loop',
'Bluecup',
'BluecupBio',
'liN',
'Report',
'Senninha',
'Couché',
'Pólen',
'AltaAlvura',
'Reciclato',
'Paperfect',
'SUPER6',
'TPWHITE',
'PPTPWHITE',
'AASUPREMO',
'DDSUPREMO'
);
CREATE TYPE types AS ENUM (
'PapelCartão',
'nRevestido',
'Revestido',
'CutSize',
'Especial'
);
CREATE TYPE colors AS ENUM (
'branco',
'cinza',
'bege',
'rosa',
'amarelo',
'azul',
'verde',
'marrom',
'vermelho',
'roxo'
);
CREATE TYPE unif AS ENUM (
'RJ',
'SP',
'ES',
'MG',
'PR',
'SC',
'RS',
'MS',
'GO',
'MT',
'BA',
'SE',
'AL',
'PE',
'PI',
'MA',
'PB',
'RN',
'CE',
'AC',
'RO',
'AM',
'TO',
'PA',
'AP',
'RR'
);
CREATE TYPE states AS ENUM (
'Rio de Janeiro',
'São Paulo',
'Espírito Santo',
'Minas Gerais',
'Paraná',
'Santa Catarina',
'Rio Grande do Sul',
'Mato Grosso do Sul',
'Goiânia',
'Mato Grosso',
'Bahia',
'Sergipe',
'Alagoas',
'Pernambuco',
'Piauí',
'Marnhão',
'Paraíba',
'Rio Grande do Norte',
'Ceará',
'Rondônia',
'Amazonas',
'Tocantins',
'Pará',
'Amapá',
'RO'
);
CREATE TYPE payment AS ENUM (
'Cartão de Crédito',
'Cartão de Débito',
'Boleto Bancário',
'PIX'
);
CREATE TYPE shipping AS ENUM (
'Retirar',
'Standard',
'Premium'
);
CREATE TYPE cards AS ENUM (
'Débito',
'Crédito'
);
CREATE TYPE stars AS ENUM (
'1',
'2',
'3',
'4',
'5'
);
CREATE TYPE banks AS ENUM (
'Itaú',
'Santander',
'Nubank',
'C6',
'Bradesco',
'Banco do Brasil',
'Cixa',
'BTG',
'Banrisul'
);
CREATE TYPE op AS ENUM (
'Compra',
'Venda'
);
CREATE TABLE public.fornecedores (
id SERIAL PRIMARY KEY,
nome VARCHAR(100),
cnpj VARCHAR(18),
address VARCHAR(80),
cep VARCHAR(8),
estado states,
uf unif,
added_at DATE,
updated_at DATE,
deleted_at DATE
);
CREATE TABLE public.armazem (
id SERIAL PRIMARY KEY,
cep VARCHAR(8),
address VARCHAR(150),
numero SMALLINT,
estado states,
uf unif,
bairro VARCHAR(50),
added_at DATE,
updated_at DATE,
deleted_at DATE
);
CREATE TABLE public.produtos (
id SERIAL PRIMARY KEY,
local INTEGER REFERENCES public.armazem(id),
fornecedor INTEGER REFERENCES public.fornecedores(id),
quantidade_estoque SMALLINT,
codigo_barras VARCHAR(13),
marca brands,
tipo types,
descricao VARCHAR(100),
altura_embalagem REAL,
largura_embalagem REAL,
comprimento_embalagem REAL,
peso REAL,
qtd_folhas SMALLINT,
cor colors,
gramatura REAL,
altura_folha REAL,
comprimento_folha REAL,
valor_compra REAL,
valor_venda REAL,
added_at DATE,
updated_at DATE,
deleted_at DATE
);
CREATE TABLE public.clientes (
id SERIAL PRIMARY KEY,
nome VARCHAR(80),
cpf VARCHAR(11),
email VARCHAR(80),
telefone VARCHAR(15),
cartao VARCHAR(30),
senha VARCHAR(30),
added_at DATE,
updated_at DATE,
deleted_at DATE
);
CREATE TABLE public.entrega (
id SERIAL PRIMARY KEY,
tipo_entrega shipping,
cep VARCHAR(8),
address VARCHAR(150),
complemento VARCHAR(50),
numero SMALLINT,
estado states,
uf unif,
bairro VARCHAR(50),
added_at DATE,
updated_at DATE,
deleted_at DATE
);
CREATE TABLE public.nota_fiscal (
id SERIAL PRIMARY KEY,
nome_empresa VARCHAR(70),
entrada_saida BOOLEAN,
numero_nf VARCHAR(43),
chave_acesso VARCHAR(54),
natureza_operacao op,
protocolo VARCHAR(40),
cnpj VARCHAR(18),
address VARCHAR(150),
numero SMALLINT,
estado states,
uf unif,
bairro VARCHAR(50),
cep VARCHAR(8),
telefone VARCHAR(15),
base_icms REAL,
valor_icms REAL,
valor_frete REAL,
desconto REAL,
total_tributos REAL,
total_produtos REAL,
total_nf REAL,
added_at DATE,
updated_at DATE,
deleted_at DATE
);
CREATE TABLE public.carrinho (
id SERIAL PRIMARY KEY,
produto INTEGER REFERENCES public.produtos(id),
quantidade SMALLINT,
preco_total_produto REAL,
added_at DATE,
updated_at DATE,
deleted_at DATE
);
CREATE TABLE public.pedidos (
id SERIAL PRIMARY KEY,
id_pedido SERIAL,
destino INTEGER REFERENCES public.entrega(id),
cliente INTEGER REFERENCES public.clientes(id),
frete REAL,
total_carrinho REAL,
forma_pagamento payment,
cupom VARCHAR(12),
valor_desconto REAL,
total_a_pagar REAL,
confirmacao_pagamento BOOLEAN,
added_at DATE,
updated_at DATE,
deleted_at DATE,
carrinho INTEGER REFERENCES public.carrinho(id)
);
CREATE TABLE public.pedidos_arquivados (
id SERIAL PRIMARY KEY,
pedido INTEGER REFERENCES public.pedidos(id),
nf INTEGER REFERENCES public.nota_fiscal(id),
data_pedido DATE,
cliente INTEGER REFERENCES public.clientes(id),
carrinho INTEGER REFERENCES public.carrinho(id),
forma_pagamento payment,
total_a_pagar REAL,
added_at DATE,
updated_at DATE,
deleted_at DATE
);
CREATE TABLE public.cartoes (
id SERIAL PRIMARY KEY,
cliente INTEGER REFERENCES public.clientes(id),
banco banks,
numero VARCHAR(16),
tipo cards,
mes_validade SMALLINT,
ano_validade SMALLINT,
nome_titular VARCHAR(40),
added_at DATE,
updated_at DATE,
deleted_at DATE
);
CREATE TABLE public.avaliacao_pedido (
id SERIAL PRIMARY KEY,
usuario INTEGER REFERENCES public.clientes(id),
pedido INTEGER REFERENCES public.pedidos(id),
produto INTEGER REFERENCES public.produtos(id),
descricao VARCHAR(100),
added_at DATE,
updated_at DATE,
deleted_at DATE,
cod_verificacao SMALLINT
);
-- CREATE TABLE public.wishlist_cliente (
-- id SERIAL PRIMARY KEY,
-- cliente INT NOT NULL,
-- produto INT NOT NULL,
-- data_adicao DATE NOT NULL,
-- adicionado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- atualizado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- deletado_em TIMESTAMP,
-- origem VARCHAR(50),
-- status ENUM('ativo', 'inativo') DEFAULT 'ativo',
-- FOREIGN KEY (cliente) REFERENCES clientes(id),
-- FOREIGN KEY (produto) REFERENCES produtos(id)
-- );
CREATE TABLE public.cupons_sales (
id SERIAL PRIMARY KEY,
codigo VARCHAR(20) NOT NULL,
descricao VARCHAR(100),
data_inicio DATE NOT NULL,
data_fim DATE NOT NULL,
quantidade_disponivel INT NOT NULL DEFAULT 0,
percentual_desconto DECIMAL(5,2) DEFAULT 0,
quantidade_usada INT NOT NULL DEFAULT 0,
vigente BOOLEAN DEFAULT FALSE,
added_at DATE DEFAULT now(),
updated_at DATE,
deleted_at DATE
);
-- CREATE TABLE public.compras_cliente (
-- id SERIAL PRIMARY KEY,
-- cliente INT NOT NULL,
-- produto INT NOT NULL,
-- data_compra DATE NOT NULL DEFAULT now(),
-- quantidade INT NOT NULL,
-- valor_total DECIMAL(10,2) NOT NULL,
-- -- adicionado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- -- modificado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- -- excluido_em TIMESTAMP,
-- added_at DATE,
-- updated_at DATE,
-- deleted_at DATE,
-- FOREIGN KEY (cliente) REFERENCES clientes(id),
-- FOREIGN KEY (produto) REFERENCES produtos(id)
-- );
-- Tabela destino ETL
-- CREATE TABLE public.business (
-- id SERIAL PRIMARY KEY,
-- assessment_code VARCHAR(20) --YYYY+mm+assessment+random_number_sequence(4),
-- total_ativos FLOAT --Fazer trigger que preencha esse campo ao inserir na tabela produtos
-- -- trazer faixa do imposto baseado no total_ativos
-- -- trazer
-- )