· 8 years ago · Mar 02, 2018, 07:46 AM
1DROP TABLE IF EXISTS pessoa;
2DROP TABLE IF EXISTS email;
3DROP TABLE IF EXISTS endereco;
4DROP TABLE IF EXISTS telefone;
5DROP TABLE IF EXISTS pessoafisica;
6DROP TABLE IF EXISTS cliente;
7DROP TABLE IF EXISTS funcionario;
8DROP TABLE IF EXISTS pessoajuridica;
9DROP TABLE IF EXISTS pedido;
10DROP TABLE IF EXISTS item_pedido;
11DROP TABLE IF EXISTS prato;
12DROP TABLE IF EXISTS prato_pessoajuridica;
13
14CREATE TABLE pessoa
15(
16 idpessoa BIGINT NOT NULL,
17 nome VARCHAR(45) NOT NULL,
18 constraint pk_Pessoa PRIMARY KEY(idpessoa)
19);
20
21CREATE TABLE email
22(
23 pessoa_idpessoa BIGINT NOT NULL,
24 tipo TINYINT NOT NULL,
25 email VARCHAR(60) NOT NULL,
26 constraint pk_Email PRIMARY KEY(pessoa_idpessoa),
27 constraint fk_Email_pk_Pessoa FOREIGN KEY (pessoa_idpessoa)
28 REFERENCES pessoa
29 ON DELETE CASCADE
30 ON UPDATE CASCADE
31);
32
33CREATE TABLE endereco
34(
35 pessoa_idpessoa BIGINT NOT NULL,
36 tipo TINYINT NOT NULL,
37 endereco VARCHAR(50) NOT NULL,
38 bairro VARCHAR(25) NULL,
39 cep INT NULL,
40 cidade VARCHAR(25) NULL,
41 estado VARCHAR(25) NULL,
42 constraint pk_Endereco PRIMARY KEY(pessoa_idpessoa),
43 constraint fk_Endereco_pk_Pessoa FOREIGN KEY (pessoa_idpessoa)
44 REFERENCES pessoa (idpessoa)
45 ON DELETE CASCADE
46 ON UPDATE CASCADE
47);
48
49CREATE TABLE telefone
50(
51 pessoa_idpessoa BIGINT NOT NULL,
52 tipo TINYINT NOT NULL,
53 codigodacidade TINYINT NOT NULL,
54 numero INT NOT NULL,
55 constraint pk_Telefone PRIMARY KEY(pessoa_idpessoa),
56 constraint fk_Telefone_pk_Pessoa FOREIGN KEY (pessoa_idpessoa)
57 REFERENCES pessoa (idpessoa)
58 ON DELETE CASCADE
59 ON UPDATE CASCADE
60);
61
62CREATE TABLE pessoafisica
63(
64 sexo TINYINT NULL,
65 cpf INT NULL,
66 datanascimento DATE NULL,
67 pessoa_idpessoa BIGINT NOT NULL,
68 constraint pk_PessoaFisica PRIMARY KEY(pessoa_idpessoa),
69 constraint fk_PessoaFisica_pk_Pessoa FOREIGN KEY (pessoa_idpessoa)
70 REFERENCES pessoa (idpessoa)
71 ON DELETE CASCADE
72 ON UPDATE CASCADE
73);
74
75CREATE TABLE pessoajuridica
76(
77 cnpj INT NOT NULL ,
78 nomefantasia VARCHAR(45) NULL,
79 pessoa_idpessoa BIGINT NOT NULL,
80 constraint pk_PessoaJuridica PRIMARY KEY(pessoa_idpessoa),
81 constraint fk_PessoaJuridica_pk_Pessoa FOREIGN KEY (pessoa_idpessoa)
82 REFERENCES pessoa (idpessoa)
83 ON DELETE CASCADE
84 ON UPDATE CASCADE
85);
86
87CREATE TABLE cliente
88(
89 tipo TINYINT NOT NULL,
90 pf_pessoa_idpessoa BIGINT NOT NULL,
91 constraint pk_Cliente PRIMARY KEY(pf_pessoa_idpessoa),
92 constraint fk_Cliente_pk_PessoaFisica FOREIGN KEY (pf_pessoa_idpessoa)
93 REFERENCES pessoafisica (pessoa_idpessoa)
94 ON DELETE CASCADE
95 ON UPDATE CASCADE
96);
97
98CREATE TABLE funcionario
99(
100 matricula INT NOT NULL,
101 cargo VARCHAR(30) NULL,
102 dataadmissao DATE NULL,
103 pf_pessoa_idpessoa BIGINT NOT NULL,
104 constraint pk_Funcionario PRIMARY KEY(pf_pessoa_idpessoa),
105 constraint fk_Funcionario_pk_PessoaFisica FOREIGN KEY (pf_pessoa_idpessoa)
106 REFERENCES pessoafisica (pessoa_idpessoa)
107 ON DELETE CASCADE
108 ON UPDATE CASCADE
109);
110
111CREATE TABLE pedido
112(
113 idpedido BIGINT NOT NULL,
114 data DATE NULL,
115 hora TIME NULL,
116 formapagamento TINYINT NULL,
117 funci_pf_pessoa_idpessoa BIGINT NULL,
118 cli_pf_pessoa_idpessoa BIGINT NULL,
119 constraint pk_Pedido PRIMARY KEY(idpedido),
120 constraint fk_Pedido_pk_Funcionario FOREIGN KEY (funci_pf_pessoa_idpessoa)
121 REFERENCES funcionario (pf_pessoa_idpessoa)
122 ON DELETE NO ACTION
123 ON UPDATE NO ACTION,
124 constraint fk_Pedido_pk_Cliente FOREIGN KEY (cli_pf_pessoa_idpessoa)
125 REFERENCES cliente (pf_pessoa_idpessoa)
126 ON DELETE NO ACTION
127 ON UPDATE NO ACTION
128);
129
130CREATE TABLE prato
131(
132 idprato BIGINT NOT NULL,
133 nome VARCHAR(25) NOT NULL,
134 descricao VARCHAR(256) NULL,
135 preco DECIMAL(6,2) NULL,
136 constraint pk_Prato PRIMARY KEY(idprato)
137);
138
139CREATE TABLE item_pedido
140(
141 quantidade TINYINT NOT NULL ,
142 prato_idprato BIGINT NOT NULL ,
143 pedido_idpedido BIGINT NULL ,
144 constraint pk_ItemPedido PRIMARY KEY(prato_idprato, pedido_idpedido),
145 constraint fk_Item_Pedido_pk_Prato FOREIGN KEY (prato_idprato)
146 REFERENCES prato (idprato)
147 ON UPDATE CASCADE,
148 constraint fk_Item_Pedido_pk_Pedido FOREIGN KEY (pedido_idpedido)
149 REFERENCES pedido (idpedido)
150 ON DELETE CASCADE
151 ON UPDATE CASCADE
152);
153
154CREATE TABLE prato_pessoajuridica
155(
156 prato_idprato BIGINT NOT NULL,
157 pj_pessoa_idpessoa BIGINT NOT NULL,
158 constraint pk_PratoPessoaJuridica PRIMARY KEY(prato_idprato, pj_pessoa_idpessoa),
159 constraint fk_PratoPessoaJuridica_pk_Prato FOREIGN KEY (prato_idprato)
160 REFERENCES prato (idprato)
161 ON UPDATE CASCADE,
162 constraint fk_PratoPessoaJuridica_pk_PessoaJuridica FOREIGN KEY (pj_pessoa_idpessoa)
163 REFERENCES pessoajuridica (pessoa_idpessoa)
164 ON UPDATE CASCADE
165)