-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript1.0.sql
245 lines (178 loc) · 6.09 KB
/
script1.0.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
CREATE TABLE formaDePagamento (
id INTEGER NOT NULL ,
descricao VARCHAR(45) ,
lancamentoCaixa CHAR(1) ,
PRIMARY KEY(id));
CREATE TABLE versaoBanco (
id INTEGER NOT NULL ,
numeroVersao INTEGER ,
autenticacao CHAR(1) ,
PRIMARY KEY(id));
CREATE TABLE permissao (
id INTEGER NOT NULL ,
descricao VARCHAR(60) ,
PRIMARY KEY(id) );
CREATE UNIQUE INDEX permissao_descricao_un ON permissao (descricao);
CREATE TABLE cidade (
id INTEGER NOT NULL ,
nome VARCHAR(45) ,
uf VARCHAR(2) ,
PRIMARY KEY(id) );
CREATE UNIQUE INDEX cidade_nome_un ON cidade (nome);
CREATE TABLE funcionario (
id INTEGER NOT NULL ,
cidade_id INTEGER NOT NULL ,
nome VARCHAR(255) ,
cpf VARCHAR(11) ,
login VARCHAR(50) ,
senha VARCHAR(50) ,
celular VARCHAR(12) ,
telefone VARCHAR(12) ,
rua VARCHAR(45) ,
numerorua VARCHAR(4) ,
PRIMARY KEY(id) ,
FOREIGN KEY(cidade_id)
REFERENCES cidade(id));
CREATE INDEX Funcionario_cidade_FK ON funcionario (cidade_id);
CREATE UNIQUE INDEX Funcionario_un ON funcionario (cpf, login, senha);
CREATE INDEX IFK_Rel_04 ON funcionario (cidade_id);
CREATE TABLE estabelecimento (
id INTEGER NOT NULL ,
cidade_id INTEGER NOT NULL ,
nomefantasia VARCHAR(60) ,
apelidoRazao VARCHAR(60) ,
telefone VARCHAR(12) ,
celular VARCHAR(12) ,
rua VARCHAR(45) ,
numeroRua VARCHAR(4) ,
PRIMARY KEY(id) ,
FOREIGN KEY(cidade_id)
REFERENCES cidade(id));
CREATE INDEX estabelecimento_FKIndex1 ON estabelecimento (cidade_id);
CREATE INDEX IFK_Rel_18 ON estabelecimento (cidade_id);
CREATE TABLE cliente (
id INTEGER NOT NULL ,
cidade_id INTEGER NOT NULL ,
nome VARCHAR(255) ,
celular VARCHAR(12) ,
telefone VARCHAR(12) ,
cpfcnpj VARCHAR(14) ,
rua VARCHAR(100) ,
numerodarua VARCHAR(4) ,
PRIMARY KEY(id) ,
FOREIGN KEY(cidade_id)
REFERENCES cidade(id));
CREATE UNIQUE INDEX cliente_un ON cliente (cpfcnpj);
CREATE INDEX cliente_cidade_FK ON cliente (cidade_id);
CREATE INDEX IFK_Rel_03 ON cliente (cidade_id);
CREATE TABLE fornecedor (
id INTEGER NOT NULL ,
cidade_id INTEGER NOT NULL ,
nome VARCHAR(255) ,
celular VARCHAR(12) ,
telefone VARCHAR(12) ,
cpfCnpj VARCHAR(14) ,
rua VARCHAR(45) ,
numeroRua VARCHAR(4) ,
PRIMARY KEY(id) ,
FOREIGN KEY(cidade_id)
REFERENCES cidade(id));
CREATE INDEX Fornecedor_FKIndex1 ON fornecedor (cidade_id);
CREATE INDEX IFK_Rel_08 ON fornecedor (cidade_id);
CREATE TABLE venda (
id INTEGER NOT NULL ,
funcionario_id INTEGER NOT NULL ,
cliente_id INTEGER NOT NULL ,
valorDesconto NUMERIC(5,3) ,
valorTotal NUMERIC(5,3) ,
valorAcrescimo NUMERIC(5,3) ,
PRIMARY KEY(id) ,
FOREIGN KEY(cliente_id)
REFERENCES cliente(id),
FOREIGN KEY(funcionario_id)
REFERENCES funcionario(id));
CREATE INDEX Venda_FKIndex1 ON venda (cliente_id);
CREATE INDEX Venda_FKIndex2 ON venda (funcionario_id);
CREATE INDEX IFK_Rel_05 ON venda (cliente_id);
CREATE INDEX IFK_Rel_06 ON venda (funcionario_id);
CREATE TABLE permissaofuncionario (
id INTEGER NOT NULL ,
permissao_id INTEGER NOT NULL ,
funcionario_id INTEGER NOT NULL ,
PRIMARY KEY(id) ,
FOREIGN KEY(funcionario_id)
REFERENCES funcionario(id),
FOREIGN KEY(permissao_id)
REFERENCES permissao(id));
CREATE INDEX permissaofuncionario_FKIndex1 ON permissaofuncionario (funcionario_id);
CREATE INDEX permissaofuncionario_FKIndex2 ON permissaofuncionario (permissao_id);
CREATE INDEX IFK_Rel_16 ON permissaofuncionario (funcionario_id);
CREATE INDEX IFK_Rel_17 ON permissaofuncionario (permissao_id);
CREATE TABLE recebimento (
id INTEGER NOT NULL ,
cliente_id INTEGER NOT NULL ,
formaDePagamento_id INTEGER NOT NULL ,
venda_id INTEGER NOT NULL ,
valor NUMERIC(5,3) ,
dataRecebimento DATE ,
PRIMARY KEY(id) ,
FOREIGN KEY(venda_id)
REFERENCES venda(id),
FOREIGN KEY(formaDePagamento_id)
REFERENCES formaDePagamento(id),
FOREIGN KEY(cliente_id)
REFERENCES cliente(id));
CREATE INDEX recebimento_venda_FK ON recebimento (venda_id);
CREATE INDEX recebimento_formapagamento_FKIndex2 ON recebimento (formaDePagamento_id);
CREATE INDEX recebimento_cliente_FK ON recebimento (cliente_id);
CREATE INDEX IFK_Rel_11 ON recebimento (venda_id);
CREATE INDEX IFK_Rel_12 ON recebimento (formaDePagamento_id);
CREATE INDEX IFK_Rel_13 ON recebimento (cliente_id);
CREATE TABLE produto (
id INTEGER NOT NULL ,
fornecedor_id INTEGER NOT NULL ,
descricao VARCHAR(50) ,
precocusto NUMERIC(5,3) ,
precovenda NUMERIC(5,3) ,
estoque NUMERIC(5,3) ,
estoquenegativo CHAR(1) ,
PRIMARY KEY(id) ,
FOREIGN KEY(fornecedor_id)
REFERENCES fornecedor(id));
CREATE INDEX produto_FKIndex1 ON produto (fornecedor_id);
CREATE UNIQUE INDEX produto_descricao_un ON produto (descricao);
CREATE INDEX IFK_Rel_09 ON produto (fornecedor_id);
CREATE TABLE Parcela (
id INTEGER NOT NULL ,
formaDePagamento_id INTEGER NOT NULL ,
recebimento_id INTEGER NOT NULL ,
valor NUMERIC(5,3) ,
datalancamento DATE ,
datarecebimento DATE ,
descricao VARCHAR(45) ,
compensado CHAR(1) ,
PRIMARY KEY(id) ,
FOREIGN KEY(recebimento_id)
REFERENCES recebimento(id),
FOREIGN KEY(formaDePagamento_id)
REFERENCES formaDePagamento(id));
CREATE INDEX Parcela_FKIndex1 ON Parcela (recebimento_id);
CREATE INDEX Parcela_FKIndex2 ON Parcela (formaDePagamento_id);
CREATE INDEX IFK_Rel_14 ON Parcela (recebimento_id);
CREATE INDEX IFK_Rel_15 ON Parcela (formaDePagamento_id);
CREATE TABLE ItemVenda (
id INTEGER NOT NULL ,
produto_id INTEGER NOT NULL ,
venda_id INTEGER NOT NULL ,
totalUnitario NUMERIC(5,3) ,
quantidade NUMERIC(5,3) ,
precounitario NUMERIC(5,3) ,
PRIMARY KEY(id) ,
FOREIGN KEY(venda_id)
REFERENCES venda(id),
FOREIGN KEY(produto_id)
REFERENCES produto(id));
CREATE INDEX ItemVenda_FKIndex1 ON ItemVenda (venda_id);
CREATE INDEX ItemVenda_FKIndex2 ON ItemVenda (produto_id);
CREATE INDEX IFK_Rel_07 ON ItemVenda (venda_id);
CREATE INDEX IFK_Rel_10 ON ItemVenda (produto_id);