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,
 PESSOA VARCHAR(100) NOT NULL,
 IDENDERECO INTEGER,
 DATA_NASCIMENTO DATE,
 NUMERO INTEGER);

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

CREATE TABLE ENDERECO
(IDENDERECO INTEGER NOT NULL,
 LOGRADOURO VARCHAR(20) NOT NULL,
 ENDERECO   VARCHAR(50) NOT NULL,
 BAIRRO     VARCHAR(50) NOT NULL,
 CIDADE     VARCHAR(50) NOT NULL,
 ESTADO     VARCHAR(02) NOT NULL,
 PAIS       VARCHAR(50) NOT NULL,
 CEP        VARCHAR(08) NOT NULL);

ALTER TABLE ENDERECO ADD CONSTRAINT PK_ENDERECO
PRIMARY KEY(IDENDERECO)
USING INDEX IDX_ENDERECO;

ALTER TABLE PESSOA ADD CONSTRAINT FK_PESSOA_ENDERECO
FOREIGN KEY(IDENDERECO) REFERENCES ENDERECO (IDENDERECO)
ON DELETE CASCADE
ON UPDATE CASCADE
USING INDEX IDX_PESSOA_ENDERECO;

CREATE TABLE TELEFONE
(IDTELEFONE INTEGER NOT NULL,
 IDPESSOA   INTEGER NOT NULL,
 TELEFONE   VARCHAR(20) NOT NULL);

ALTER TABLE TELEFONE ADD CONSTRAINT PK_TELEFONE
PRIMARY KEY(IDTELEFONE)
USING INDEX IDX_TELEFONE;

ALTER TABLE TELEFONE ADD CONSTRAINT PK_TELEFONE_PESSOA
FOREIGN KEY(IDPESSOA) REFERENCES PESSOA
ON DELETE CASCADE
ON UPDATE CASCADE
USING INDEX IDX_TELEFONE_PESSOA;

CREATE GENERATOR GEN_IDENDERECO;

CREATE GENERATOR GEN_IDPESSOA;

CREATE GENERATOR GEN_IDTELEFONE;

DECLARE EXTERNAL FUNCTION TRIM
    CSTRING(255)
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_ltrim' MODULE_NAME 'ib_udf';

