Skip to content

Instantly share code, notes, and snippets.

@antoniopassos
Created March 5, 2009 03:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save antoniopassos/74161 to your computer and use it in GitHub Desktop.
Save antoniopassos/74161 to your computer and use it in GitHub Desktop.
Script para criação do banco de dados do aplicativo JPratosProntos
DROP TABLE IF EXISTS pessoa;
DROP TABLE IF EXISTS email;
DROP TABLE IF EXISTS endereco;
DROP TABLE IF EXISTS telefone;
DROP TABLE IF EXISTS pessoafisica;
DROP TABLE IF EXISTS cliente;
DROP TABLE IF EXISTS funcionario;
DROP TABLE IF EXISTS pessoajuridica;
DROP TABLE IF EXISTS pedido;
DROP TABLE IF EXISTS item_pedido;
DROP TABLE IF EXISTS prato;
DROP TABLE IF EXISTS prato_pessoajuridica;
CREATE TABLE pessoa
(
idpessoa BIGINT NOT NULL,
nome VARCHAR(45) NOT NULL,
constraint pk_Pessoa PRIMARY KEY(idpessoa)
);
CREATE TABLE email
(
pessoa_idpessoa BIGINT NOT NULL,
tipo TINYINT NOT NULL,
email VARCHAR(60) NOT NULL,
constraint pk_Email PRIMARY KEY(pessoa_idpessoa),
constraint fk_Email_pk_Pessoa FOREIGN KEY (pessoa_idpessoa)
REFERENCES pessoa
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE endereco
(
pessoa_idpessoa BIGINT NOT NULL,
tipo TINYINT NOT NULL,
endereco VARCHAR(50) NOT NULL,
bairro VARCHAR(25) NULL,
cep INT NULL,
cidade VARCHAR(25) NULL,
estado VARCHAR(25) NULL,
constraint pk_Endereco PRIMARY KEY(pessoa_idpessoa),
constraint fk_Endereco_pk_Pessoa FOREIGN KEY (pessoa_idpessoa)
REFERENCES pessoa (idpessoa)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE telefone
(
pessoa_idpessoa BIGINT NOT NULL,
tipo TINYINT NOT NULL,
codigodacidade TINYINT NOT NULL,
numero INT NOT NULL,
constraint pk_Telefone PRIMARY KEY(pessoa_idpessoa),
constraint fk_Telefone_pk_Pessoa FOREIGN KEY (pessoa_idpessoa)
REFERENCES pessoa (idpessoa)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE pessoafisica
(
sexo TINYINT NULL,
cpf INT NULL,
datanascimento DATE NULL,
pessoa_idpessoa BIGINT NOT NULL,
constraint pk_PessoaFisica PRIMARY KEY(pessoa_idpessoa),
constraint fk_PessoaFisica_pk_Pessoa FOREIGN KEY (pessoa_idpessoa)
REFERENCES pessoa (idpessoa)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE pessoajuridica
(
cnpj INT NOT NULL ,
nomefantasia VARCHAR(45) NULL,
pessoa_idpessoa BIGINT NOT NULL,
constraint pk_PessoaJuridica PRIMARY KEY(pessoa_idpessoa),
constraint fk_PessoaJuridica_pk_Pessoa FOREIGN KEY (pessoa_idpessoa)
REFERENCES pessoa (idpessoa)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE cliente
(
tipo TINYINT NOT NULL,
pf_pessoa_idpessoa BIGINT NOT NULL,
constraint pk_Cliente PRIMARY KEY(pf_pessoa_idpessoa),
constraint fk_Cliente_pk_PessoaFisica FOREIGN KEY (pf_pessoa_idpessoa)
REFERENCES pessoafisica (pessoa_idpessoa)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE funcionario
(
matricula INT NOT NULL,
cargo VARCHAR(30) NULL,
dataadmissao DATE NULL,
pf_pessoa_idpessoa BIGINT NOT NULL,
constraint pk_Funcionario PRIMARY KEY(pf_pessoa_idpessoa),
constraint fk_Funcionario_pk_PessoaFisica FOREIGN KEY (pf_pessoa_idpessoa)
REFERENCES pessoafisica (pessoa_idpessoa)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE pedido
(
idpedido BIGINT NOT NULL,
data DATE NULL,
hora TIME NULL,
formapagamento TINYINT NULL,
funci_pf_pessoa_idpessoa BIGINT NULL,
cli_pf_pessoa_idpessoa BIGINT NULL,
constraint pk_Pedido PRIMARY KEY(idpedido),
constraint fk_Pedido_pk_Funcionario FOREIGN KEY (funci_pf_pessoa_idpessoa)
REFERENCES funcionario (pf_pessoa_idpessoa)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
constraint fk_Pedido_pk_Cliente FOREIGN KEY (cli_pf_pessoa_idpessoa)
REFERENCES cliente (pf_pessoa_idpessoa)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
CREATE TABLE prato
(
idprato BIGINT NOT NULL,
nome VARCHAR(25) NOT NULL,
descricao VARCHAR(256) NULL,
preco DECIMAL(6,2) NULL,
constraint pk_Prato PRIMARY KEY(idprato)
);
CREATE TABLE item_pedido
(
quantidade TINYINT NOT NULL ,
prato_idprato BIGINT NOT NULL ,
pedido_idpedido BIGINT NULL ,
constraint pk_ItemPedido PRIMARY KEY(prato_idprato, pedido_idpedido),
constraint fk_Item_Pedido_pk_Prato FOREIGN KEY (prato_idprato)
REFERENCES prato (idprato)
ON UPDATE CASCADE,
constraint fk_Item_Pedido_pk_Pedido FOREIGN KEY (pedido_idpedido)
REFERENCES pedido (idpedido)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE prato_pessoajuridica
(
prato_idprato BIGINT NOT NULL,
pj_pessoa_idpessoa BIGINT NOT NULL,
constraint pk_PratoPessoaJuridica PRIMARY KEY(prato_idprato, pj_pessoa_idpessoa),
constraint fk_PratoPessoaJuridica_pk_Prato FOREIGN KEY (prato_idprato)
REFERENCES prato (idprato)
ON UPDATE CASCADE,
constraint fk_PratoPessoaJuridica_pk_PessoaJuridica FOREIGN KEY (pj_pessoa_idpessoa)
REFERENCES pessoajuridica (pessoa_idpessoa)
ON UPDATE CASCADE
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment