From Grupo1 Ahand
CREATE TABLE ATENDE (
ITEM_PEDIDO_PEDIDO_ped_id INTEGER NOT NULL,
ITEM_PEDIDO_LIVRO_liv_id INTEGER NOT NULL,
ITEM_SOLICITACAO_sol_id INTEGER NOT NULL,
ITEM_SOLICITACAO_LIVRO_liv_id INTEGER NOT NULL,
ate_quantidade INTEGER ,
PRIMARY KEY(ITEM_PEDIDO_PEDIDO_ped_id, ITEM_SOLICITACAO_sol_id, ITEM_PEDIDO_LIVRO_liv_id, ITEM_SOLICITACAO_LIVRO_liv_id)
);
CREATE TABLE BOLETO (
bol_id INTEGER NOT NULL ,
bol_numero INTEGER ,
bol_tipo CHAR(1) DEFAULT 'R',
bol_emissao DATE ,
bol_vendimento DATE ,
bol_valor NUMERIC ,
PRIMARY KEY(bol_id)
);
CREATE TABLE CADASTRO (
cad_id INTEGER NOT NULL ,
TIPO_CADASTRO_tca_id INTEGER NOT NULL,
cad_tipo_pessoa CHAR(1) DEFAULT 'F',
cad_nome VARCHAR(80) ,
cad_razao_social VARCHAR(100) ,
cad_cpf_cnpf VARCHAR(18) ,
cad_email VARCHAR(50) ,
cad_tel_ddd INTEGER ,
cad_tel_numero INTEGER ,
cad_end_rua VARCHAR(80) ,
cad_end_numero INTEGER ,
cad_end_complemento VARCHAR(20) ,
cad_end_bairro VARCHAR(30) ,
cad_end_cep INTEGER ,
cad_end_cidade VARCHAR(30) ,
cad_end_uf CHAR(2) ,
PRIMARY KEY(cad_id)
);
CREATE TABLE ITEM_PEDIDO (
PEDIDO_ped_id INTEGER NOT NULL,
LIVRO_liv_id INTEGER NOT NULL,
ipe_quantidade INTEGER ,
ipe_valor_unitario NUMERIC ,
ipe_valor_total NUMERIC COMPUTED BY ( ipe_quantidade * ipe_valor_total),
PRIMARY KEY(PEDIDO_ped_id, LIVRO_liv_id)
);
CREATE TABLE ITEM_SOLICITACAO (
SOLICITACAO_sol_id INTEGER NOT NULL,
LIVRO_liv_id INTEGER NOT NULL,
iso_quantidade INTEGER ,
iso_valor_unitario NUMERIC ,
iso_valor_total NUMERIC COMPUTED BY ( iso_quantidade * iso_valor_total),
PRIMARY KEY(SOLICITACAO_sol_id, LIVRO_liv_id)
);
CREATE TABLE LIVRO (
liv_id INTEGER NOT NULL ,
CADASTRO_cad_id INTEGER NOT NULL,
TEMA_tem_id INTEGER NOT NULL,
lib_isbn INTEGER ,
liv_titulo VARCHAR(100) ,
liv_autor VARCHAR(75) ,
liv_keywords VARCHAR(100) ,
liv_edicao INTEGER ,
liv_paginas INTEGER ,
liv_estoque INTEGER ,
PRIMARY KEY(liv_id)
);
CREATE TABLE PEDIDO (
ped_id INTEGER NOT NULL ,
CADASTRO_cad_id INTEGER NOT NULL,
ped_numero INTEGER ,
ped_data DATE ,
ped_tipo CHAR(1) DEFAULT 'V',
ped_prazo_entrega INTEGER ,
PRIMARY KEY(ped_id)
);
CREATE TABLE PEDIDO_BOLETO (
PEDIDO_ped_id INTEGER NOT NULL,
BOLETO_bol_id INTEGER NOT NULL,
PRIMARY KEY(PEDIDO_ped_id, BOLETO_bol_id)
);
CREATE TABLE SOLICITACAO (
sol_id INTEGER NOT NULL ,
CADASTRO_cad_id INTEGER NOT NULL,
sol_numero INTEGER ,
sol_data DATE ,
sol_tipo INTEGER DEFAULT 'C',
PRIMARY KEY(sol_id)
);
CREATE TABLE TEMA (
tem_id INTEGER NOT NULL ,
tem_nome VARCHAR(45) ,
tem_descricao VARCHAR(255) ,
PRIMARY KEY(tem_id)
);
CREATE TABLE TIPO_CADASTRO (
tca_id INTEGER NOT NULL ,
tca_nome VARCHAR(30) ,
tca_descricao VARCHAR(100) ,
PRIMARY KEY(tca_id)
);
ALTER TABLE CADASTRO ADD CONSTRAINT FK1_CADASTRO
FOREIGN KEY (tipo_cadastro_tca_id) REFERENCES TIPO_CADASTRO (tca_id) ;
ALTER TABLE LIVRO ADD CONSTRAINT FK1_LIVRO
FOREIGN KEY (CADASTRO_CAD_ID) REFERENCES CADASTRO (CAD_ID);
ALTER TABLE LIVRO ADD CONSTRAINT FK2_LIVRO
FOREIGN KEY (TEMA_TEM_ID) REFERENCES TEMA (TEM_ID);
ALTER TABLE SOLICITACAO ADD CONSTRAINT FK1_SOLICITACAO
FOREIGN KEY (CADASTRO_CAD_ID) REFERENCES CADASTRO (CAD_ID);
ALTER TABLE PEDIDO ADD CONSTRAINT FK1_PEDIDO
FOREIGN KEY (CADASTRO_CAD_ID) REFERENCES CADASTRO (CAD_ID);
ALTER TABLE PEDIDO_BOLETO ADD CONSTRAINT FK1_PEDIDO_BOLETO
FOREIGN KEY (PEDIDO_PED_ID) REFERENCES PEDIDO (PED_ID) ON DELETE CASCADE;
ALTER TABLE PEDIDO_BOLETO ADD CONSTRAINT FK2_PEDIDO_BOLETO
FOREIGN KEY (BOLETO_BOL_ID) REFERENCES BOLETO (BOL_ID) ON DELETE CASCADE;
ALTER TABLE ITEM_SOLICITACAO ADD CONSTRAINT FK1_ITEM_SOLICITACAO
FOREIGN KEY (SOLICITACAO_SOL_ID) REFERENCES SOLICITACAO (SOL_ID) ON DELETE CASCADE;
ALTER TABLE ITEM_SOLICITACAO ADD CONSTRAINT FK2_ITEM_SOLICITACAO
FOREIGN KEY (LIVRO_LIV_ID) REFERENCES LIVRO (LIV_ID);
ALTER TABLE ATENDE ADD CONSTRAINT FK1_ATENDE
FOREIGN KEY (ITEM_PEDIDO_PEDIDO_ped_id, ITEM_PEDIDO_LIVRO_liv_id) REFERENCES ITEM_PEDIDO (PEDIDO_ped_id, LIVRO_liv_id) ON DELETE CASCADE;
ALTER TABLE ATENDE ADD CONSTRAINT FK2_ATENDE
FOREIGN KEY (ITEM_SOLICITACAO_sol_id, ITEM_SOLICITACAO_LIVRO_liv_id) REFERENCES ITEM_SOLICITACAO (SOLICITACAO_sol_id, LIVRO_liv_id) ON DELETE CASCADE;
ALTER TABLE ITEM_PEDIDO ADD
CONSTRAINT FK1_ITEM_PEDIDO FOREIGN KEY (PEDIDO_PED_ID) REFERENCES PEDIDO (PED_ID) ON DELETE CASCADE;
ALTER TABLE ITEM_PEDIDO ADD
CONSTRAINT FK2_ITEM_PEDIDO FOREIGN KEY (LIVRO_LIV_ID) REFERENCES LIVRO (LIV_ID);
/*
CREATE INDEX ITEM_PEDIDO_has_ITEM_1 ON ATENDE (ITEM_PEDIDO_PEDIDO_ped_id,ITEM_PEDIDO_LIVRO_liv_id);
CREATE INDEX ITEM_PEDIDO_has_ITEM_2 ON ATENDE (ITEM_SOLICITACAO_sol_id,ITEM_SOLICITACAO_LIVRO_liv_id);
CREATE INDEX CADASTRO_FKIndex1 ON CADASTRO (TIPO_CADASTRO_tca_id);
CREATE INDEX PRODUTO_has_PEDIDO_FKIndex1 ON ITEM_PEDIDO (LIVRO_liv_id);
CREATE INDEX PRODUTO_has_PEDIDO_FKIndex2 ON ITEM_PEDIDO (PEDIDO_ped_id);
CREATE INDEX SOLICIT_has_PRODUTO_FKIndex1 ON ITEM_SOLICITACAO (SOLICITACAO_sol_id) ;
CREATE INDEX SOLICIT_has_PRODUTO_FKIndex2 ON ITEM_SOLICITACAO (LIVRO_liv_id) ;
CREATE INDEX PRODUTO_FKIndex2 ON LIVRO (TEMA_tem_id);
CREATE INDEX LIVRO_FKIndex2 ON LIVRO (CADASTRO_cad_id);
CREATE INDEX PEDIDO_FKIndex1 ON PEDIDO (CADASTRO_cad_id);
CREATE INDEX PEDIDO_has_BOLETO_FKIndex1 ON PEDIDO_BOLETO (PEDIDO_ped_id);
CREATE INDEX PEDIDO_has_BOLETO_FKIndex2 ON PEDIDO_BOLETO (BOLETO_bol_id);
CREATE INDEX SOLICITACAO_FKIndex1 ON SOLICITACAO (CADASTRO_cad_id);
*/