-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreate_tables.py
83 lines (69 loc) · 2.55 KB
/
create_tables.py
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
import psycopg
from conection_db import conect_postgres
conn = conect_postgres()
def create_tables():
"""
Cria as tabelas no banco de dados
:return: None
"""
with conn.cursor() as cur:
# Criação das tabelas
try:
# Tabela Dimensão Categoria
cur.execute('''
CREATE TABLE IF NOT EXISTS tb_dim_categoria(
id_categoria SERIAL PRIMARY KEY,
categoria VARCHAR(50)
)
''')
# Adicionar restrição de unicidade para a coluna categoria
cur.execute('''
ALTER TABLE tb_dim_categoria ADD CONSTRAINT unique_categoria UNIQUE (categoria)
''')
# Tabela Dimensão Estoque
cur.execute('''
CREATE TABLE IF NOT EXISTS tb_dim_estoque(
id_estoque SERIAL PRIMARY KEY,
estoque VarChar(50)
)
''')
cur.execute('''
ALTER TABLE tb_dim_estoque ADD CONSTRAINT unique_estoque UNIQUE (estoque)
''')
# Tabela Dimensão Tempo
cur.execute('''
CREATE TABLE IF NOT EXISTS tb_dim_tempo(
id_tempo SERIAL PRIMARY KEY,
data DATE,
hora TIME
)
''')
# Tabela Dimensão Livro
cur.execute('''
CREATE TABLE IF NOT EXISTS tb_dim_livro(
id_livro SERIAL PRIMARY KEY,
titulo VARCHAR(250),
preco NUMERIC(10, 3),
estrelas varchar(20),
fk_dim_categoria INT REFERENCES tb_dim_categoria(id_categoria),
fk_dim_estoque INT REFERENCES tb_dim_estoque(id_estoque)
)
''')
# Tabela Fato (Vendas)
cur.execute('''
CREATE TABLE IF NOT EXISTS tb_fat_vendas_troca (
id_fat_venda SERIAL PRIMARY KEY,
fk_dim_livro INT REFERENCES tb_dim_livro(id_livro),
fk_dim_tempo INT REFERENCES tb_dim_tempo(id_tempo),
quantidade_vendida INT,
valor_total NUMERIC(10, 2)
)
''')
# Confirma as alterações no banco de dados
conn.commit()
print("Tabelas criadas com sucesso!")
except BaseException as e:
print(f"Erro ao criar as tabelas{e}")
conn.rollback()
return conn
create_tables()