SET SQL DIALECT 3;
SET NAMES WIN1252;

SET CLIENTLIB '<DIRETRIO DA INSTALAO DO FIREBIRD>\BIN\fbclient.dll';

CREATE DATABASE '<DIRETRIO DO BANCO DE DADOS>\VENDAS.FDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 4096

DEFAULT CHARACTER SET WIN1252;

CREATE TABLE PESSOA
(
  IDPESSOA INTEGER NOT NULL,
  NOME VARCHAR(100) NOT NULL,
  ENDERECO 
VARCHAR(100)
,
  
  
  BAIRRO VARCHAR(100)
,
   
  CIDADE VARCHAR(100)
,
  
  CEP CHAR(8),
  ESTADO


 CHAR(2)
);

ALTER TABLE PESSOA ADD CONSTRAINT PK_PESSOA
PRIMARY KEY (IDPESSOA) USING INDEX IDX_PK_PESSOA;

CREATE TABLE PRODUTO
(
  IDPRODUTO INTEGER NOT NULL,
  PRODUTO VARCHAR(100) NOT NULL,
  QTD_MIN INTEGER NOT NULL,
  QTD INTEGER NOT NULL
,
  VALOR_UNITARIO DOUBLE PRECISION NOT NULL

);

ALTER TABLE PRODUTO ADD CONSTRAINT PK_PRODUTO
PRIMARY KEY (IDPRODUTO) USING INDEX IDX_PK_PRODUTO;

CREATE TABLE VENDA
(
  IDVENDA INTEGER NOT NULL,
  IDPESSOA INTEGER NOT NULL,
  TOTAL_VENDA DOUBLE PRECISION NOT NULL
);

ALTER TABLE VENDA ADD CONSTRAINT PK_VENDA
PRIMARY KEY (IDVENDA) USING INDEX IDX_PK_VENDA;

ALTER TABLE VENDA ADD CONSTRAINT FK_VENDA_PESSOA
FOREIGN KEY (IDPESSOA) REFERENCES PESSOA(IDPESSOA)
USING INDEX IDX_VENDA_PESSOA;


CREATE TABLE VENDA_ITEM
(
  IDVENDA_ITEM INTEGER NOT NULL,
  IDVENDA INTEGER NOT NULL,
  IDPRODUTO INTEGER NOT NULL,
  ITEM NOT NULL,
  VALOR DOUBLE PRECISION NOT NULL,
  QUANTIDADE INTEGER NOT NULL
);

ALTER TABLE VENDA_ITEM ADD CONSTRAINT PK_VENDA_ITEM
PRIMARY KEY (IDVENDA_ITEM) USING INDEX IDX_VENDA_ITEM;

ALTER TABLE VENDA_ITEM ADD CONSTRAINT FK_ITEM_VENDA
FOREIGN KEY (IDVENDA) REFERENCES VENDA(IDVENDA)
ON DELETE CASCADE
ON UPDATE CASCADE
USING INDEX IDX_ITEM_VENDA;

ALTER TABLE VENDA_ITEM ADD CONSTRAINT FK_VENDA_PRODUTO
FOREIGN KEY (IDPRODUTO) REFERENCES PRODUTO(IDPRODUTO)
USING INDEX IDX_VENDA_PRODUTO;

CREATE GENERATOR GEN_IDPRODUTO;

CREATE GENERATOR GEN_IDPESSOA;

CREATE GENERATOR GEN_IDVENDA;

CREATE GENERATOR GEN_IDVENDA_ITEM;