Exemplo projeto-bd-assunto-2a-aval-bsi-lc

16

Click here to load reader

Transcript of Exemplo projeto-bd-assunto-2a-aval-bsi-lc

Page 1: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

1

Exemplo de Projeto de Banco de Dados

1. Dado o Mini-mundo que representa um Banco BOM S.A, constituído de clientes, contas, agências, funcionários e transações, com as seguintes características:

Agência, é o conjunto de todas as agências de um banco. Cada Agência é descrita pelos atributos agência-código, agência-nome, agência-estado-federação e agência-cidade.

Cliente, é o conjunto de todas as pessoas que têm conta no Banco BOM S.A. Cada Cliente é descrito pelos atributos cliente-nome, cliente-cpf, cliente-endereço, cliente-números-telefones, cliente-profissão.

Funcionário, o conjunto de todas as pessoas que trabalham no Banco BOM S.A. Cada Funcionário é descrito pelos atributos funcionário-matrícula, funcionário-cpf, funcionário-nome, funcionário-número-telefone, funcionário-dependentes.

Conta, o conjunto de todas as contas mantidas no Banco BOM S.A. Cada Conta é descrita pelos atributos conta-número conta-saldo.

Transação, o conjunto de todas as transações executadas no Banco BOM S.A. Cada Transação é descrita pelos atributos transação-número, transação-tipo(débito,crédito), transação-data e transação-quantia.

Um cliente não pode ter mais de uma conta na mesma agência.

Uma conta pode pertencer a mais de um cliente.

O Banco BOM S.A. só possui cliente tipo pessoa-física.

Um funcionário só pode trabalhar em uma agência.

Uma transação só pode se feita por um cliente sobre uma conta.

2. Faça as atividades do Projeto de Banco de Dados do Banco BOM S.A. conforme

requerido nos itens abaixo:

a) Criar o Diagrama Entidade-Relacionamento incluindo Entidades, Relacionamentos, Atributos e Cardinalidade. Utilize o BRModelo;

b) Efetuar a migração do Modelo Entidade-Relacionamento para o Modelo

Relacional;

c) Efetuar, caso necessário, o processo de normalização até a 3. forma normal;

d) Criar o Diagrama do modelo Lógico. Utilize o DBDesigner;

e) Elaborar os Scripts de criação do Esquema do Banco de Dados (SQL/DDL). Utilize o gerar de SQL do DBDesigner;

f) Gerar uma Instância de um Banco em Mysql, Postgres ou Firebird;

Page 2: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

2

g) Elabore SQL/DML para efetuar as seguintes consultas:

i. Relação dos clientes por ordem alfabética; ii. Relação dos dependentes do cliente 10; iii. Relação dos dependentes do cliente 10 com nome do cliente, nome do

dependente e descrição do grau de parentesco; iv. Relação das Contas e suas Transações; v. Valor total das movimentações (transações) do mês passado; vi. Relação dos clientes com saldos e movimentações no mês passado (nome

do cliente, número da conta, saldo atual, valores debitados (tipo=’D’) e valores creditados (tipo=’C’)).

__________________Fim do Escopo do Projeto de BD _________________________

Page 3: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

3

RESOLUÇÃO

Projeto de Banco de Dados do Banco BOM S.A a) Modelo Conceitual (MER) (Volume 2)

Analisando melhor o modelo Conceitual podemos identificar algumas anomalias iniciais (1FN) que serão melhores tratadas neste momento: 1) Dependente possui atributos próprios e deve ser tratado como Entidade Fraca 2) Telefones do Cliente é um atributo multivalorado

Page 4: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

4

Page 5: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

5

b) Derivando MR a partir do MER (Capítulo 8)

Mapeando Entidades Fortes

funcionario(fun_num_cpf, fun_nome, fun_num_telefone)

cliente(cli_num_cpf, cli_nome, cli_endereco, cli_numeros_telefones, cli_profissao)

agencia(age_codigo, age_nome, age_sigla_unidade_federativa, age_nome_municipio)

conta(cta_numero, cta_saldo)

transacao(trn_numero, trn_cod_tipo, trn_data, trn_valor)

Mapeando Atributos Multivalorados

cliente(cli_num_cpf, cli_nome, cli_endereco, cli_profissao)

cliente_telefone(cli_num_cpf(FK), tel_numero)

cli_num_cpf referencia cliente

Mapeando Entidades Fracas

dependente(fun_num_cpf(FK), dep_sequencia, dep_nome, dep_grau_parentesco)

fun_num_cpf referencia funcionario

Mapeando Relacionamentos Binários 1:1

O modelo tratado não possui relacionamentos binários 1:1

Mapeando Relacionamentos Binários 1:N

funcionario(fun_num_cpf, fun_nome, fun_num_telefone, age_codigo(FK))

age_codigo referencia agencia

conta(cta_numero, cta_saldo, age_codigo(FK))

age_codigo referencia agencia

transacao(trn_numero, trn_cod_tipo, trn_data, trn_valor, cta_numero(FK))

cta_numero referencia conta

transacao(trn_numero, trn_cod_tipo, trn_data, trn_valor,

cta_numero(FK), cli_codigo(FK))

cta_numero referencia conta

cli_codigo referencia cliente

Mapeando Relacionamentos Binários M:N

cliente_conta(cli_num_cpf(FK), cta_numero(FK))

cli_num_cpf referencia cliente

cta_numero referencia numero

Mapeando Relacionamentos n-ários

O modelo tratado não possui relacionamentos n-ários

Page 6: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

6

Mapeando Especializações e Generalizações

O modelo tratado não possui especializações ou generalizações

Mapeando Agregações Associativas

O modelo tratado não possui agregações associativas

Resultado do Mapeamento MER para MR

funcionario(fun_num_cpf, fun_nome, fun_num_telefone, age_codigo(FK))

age_codigo referencia agencia

cliente(cli_num_cpf, cli_nome, cli_endereco, cli_profissao)

cliente_telefone(cli_num_cpf(FK), tel_numero)

cli_num_cpf referencia cliente

dependente(fun_num_cpf(FK), dep_sequencia, dep_nome, dep_grau_parentesco)

fun_num_cpf referencia funcionario

agencia(age_codigo, age_nome, age_sigla_unidade_federativa, age_nome_municipio)

conta(cta_numero, cta_saldo, age_codigo(FK))

age_codigo referencia agencia

cliente_conta(cli_num_cpf(FK), cta_numero(FK))

cli_num_cpf referencia cliente

cta_numero referencia numero

transacao(trn_numero, trn_cod_tipo, trn_data, trn_valor,

cta_numero(FK), cli_codigo(FK))

cta_numero referencia conta

cli_codigo referencia cliente

Page 7: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

7

c) Normalização (Capítulo 9)

1FN: Atributos Compostos e Multivalorados

alguns atributos multivalorados (telefones) e compostos (dependentes) foram tratados

na fase do modelo conceitual.

O atributo endereço de cliente que pode ser considerado um atributo composto

cliente(cli_num_cpf, cli_nome, cli_profissao, cli_end_logr, cli_end_numero,

cli_end_bairro, cli_end_municipio, cli_end_unidade_federativa,

cli_end_num_cep)

2FN: Atributos Compostos e Multivalorados

O modelo já está na 2FN. dependência total da chave primária. Só aplicado à relações

com chaves compostas.

3FN: Dependência Transitiva

O Atributo profissão não depende de ter clientes para existir

profissao(pro_codigo, pro_descricao)

cliente(cli_num_cpf, cli_nome,pro_codigo(FK), cli_end_logr, cli_end_numero,

cli_end_bairro, cli_end_municipio,cli_end_unidade_federativa, cli_end_num_cep)

pro_codigo referencia profissao

O Atributo grau de parentesco não depende de ter dependentes para existir

grau_parentesco(gpa_codigo, gpa_descricao)

dependente(fun_num_cpf(FK), dep_sequencia, dep_nome, gpa_codigo(FK))

fun_num_cpf referencia funcionario

gpa_codigo referencia grau_parentesco

O Atributo unidade federativa não depende de ter agência para existir

unidade_federativa(ufd_sigla, ufd_nome)

agencia(age_codigo, age_nome, ufd_sigla(FK), age_nome_municipio)

ufd_sigla referencia unidade_federativa

O Atributo unidade federativa não pode ser atributo em Cliente e Referência em Agência

cliente(cli_num_cpf, cli_nome, pro_codigo(FK), cli_end_logr, cli_end_numero,

cli_end_bairro, cli_end_municipio, ufd_sigla(FK), cli_end_num_cep)

pro_codigo referencia profissao

ufd_sigla referencia unidade_federativa

O Atributo nome do município não depende de ter agência para existir

municipio(mun_codigo, mun_nome)

Page 8: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

8

agencia(age_codigo, age_nome, ufd_sigla(FK), mun_codigo(FK))

ufd_sigla referencia unidade_federativa

mun_codigo referencia município

O Atributo município não pode ser atributo em Cliente e Referência em Agência

cliente(cli_num_cpf, cli_nome, pro_codigo(FK),cli_end_logr, cli_end_numero,

cli_end_bairro, mun_codigo(FK),ufd_sigla(FK), cli_end_num_cep)

pro_codigo referencia profissao

ufd_sigla referencia unidade_federativa

mun_codigo referencia municipio

Resultado da Nomalização

funcionario(fun_num_cpf, fun_nome, fun_num_telefone, age_codigo(FK))

age_codigo referencia agencia

profissao(pro_codigo, pro_descricao)

cliente(cli_num_cpf, cli_nome, pro_codigo(FK), cli_end_logr, cli_end_numero,

cli_end_bairro, mun_codigo(FK), ufd_sigla(FK), cli_end_num_cep)

pro_codigo referencia profissao

ufd_sigla referencia unidade_federativa

mun_codigo referencia municipio

cliente_telefone(cli_num_cpf(FK), tel_numero)

cli_num_cpf referencia cliente

grau_parentesco(gpa_codigo, gpa_descricao)

dependente(fun_num_cpf(FK), dep_sequencia, dep_nome, gpa_codigo(FK))

fun_num_cpf referencia funcionario

gpa_codigo referencia grau_parentesco

unidade_federativa(ufd_sigla, ufd_nome)

municipio(mun_codigo, mun_nome)

agencia(age_codigo, age_nome, ufd_sigla(FK), mun_codigo(FK))

ufd_sigla referencia unidade_federativa

mun_codigo referencia município

conta(cta_numero, cta_saldo, age_codigo(FK))

age_codigo referencia agencia

cliente_conta(cli_num_cpf(FK), cta_numero(FK))

cli_num_cpf referencia cliente

cta_numero referencia numero

transacao(trn_numero, trn_cod_tipo, trn_data, trn_valor,

cta_numero(FK), cli_codigo(FK))

cta_numero referencia conta

cli_codigo referencia cliente

Page 9: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

9

d) Modelo Lógico (MER)

Page 10: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

10

e) Scripts de Criação do Esquema do BD (SQL/DDL)

Esquema para MySQL

CREATE TABLE AGENCIA (

AGE_CODIGO INTEGER UNSIGNED NOT NULL

,UFD_SIGLA VARCHAR(2) NOT NULL

,MUN_CODIGO INTEGER UNSIGNED NOT NULL

,AGE_NOME VARCHAR(50) NOT NULL

,CONSTRAINT PK_AGENCIA PRIMARY KEY (AGE_CODIGO)

)

TYPE=InnoDB

;

CREATE INDEX IXFK_AGENCIA_1_UFD_SIGLA ON AGENCIA (UFD_SIGLA);

CREATE INDEX IXFK_AGENCIA_2_MUN_CODIGO ON AGENCIA (MUN_CODIGO);

CREATE TABLE CLIENTE (

CLI_NUM_CPF INTEGER UNSIGNED AUTO_INCREMENT(11) NOT NULL

,PRO_CODIGO INTEGER UNSIGNED NOT NULL

,MUN_CODIGO INTEGER UNSIGNED NOT NULL

,UFD_SIGLA VARCHAR(2) NOT NULL

,CLI_NOME INTEGER UNSIGNED NULL

,CLI_END_LOGR VARCHAR(50) NULL

,CLI_END_NUMERO INTEGER UNSIGNED NULL

,CLI_END_BAIRRO VARCHAR(30) NULL

,CLI_END_NUM_CEP VARCHAR(8) NULL

,CONSTRAINT PK_CLIENTE PRIMARY KEY (CLI_NUM_CPF)

)

TYPE=InnoDB

;

CREATE INDEX IXFK_CLIENTE_1_PRO_CODIGO ON CLIENTE (PRO_CODIGO);

CREATE INDEX IXFK_CLIENTE_2_UFD_SIGLA ON CLIENTE (UFD_SIGLA);

CREATE INDEX IXFK_CLIENTE_3_MUN_CODIGO ON CLIENTE (MUN_CODIGO);

CREATE TABLE CLIENTE_CONTA (

CLI_NUM_CPF VARCHAR(11) NOT NULL

,CTA_NUMERO INTEGER UNSIGNED NOT NULL

,CONSTRAINT PK_CLIENTE_CONTA PRIMARY KEY (CLI_NUM_CPF, CTA_NUMERO)

)

TYPE=InnoDB

;

CREATE INDEX IXFK_CLIENTE_CONTA_1_CLI_NUM_CPF ON CLIENTE_CONTA (CLI_NUM_CPF);

CREATE INDEX IXFK_CLIENTE_CONTA_2_CTA_NUMERO ON CLIENTE_CONTA (CTA_NUMERO);

CREATE TABLE CONTA (

CTA_NUMERO INTEGER UNSIGNED NOT NULL

,AGE_CODIGO INTEGER UNSIGNED NOT NULL

,CTA_SALDO DECIMAL(12,2) NOT NULL DEFAULT 0

,CONSTRAINT PK_CONTA PRIMARY KEY (CTA_NUMERO)

)

TYPE=InnoDB

;

CREATE INDEX IXFK_CONTA_1_AGE_CODIGO ON CONTA (AGE_CODIGO);

CREATE TABLE DEPENDENTE (

DEP_NUM_SEQUENCIA INTEGER UNSIGNED NOT NULL

,CLI_NUM_CPF VARCHAR(11) NOT NULL

,GPA_CODIGO INTEGER UNSIGNED NOT NULL

,DEP_NOME VARCHAR(50) NOT NULL

,CONSTRAINT PK_DEPENDENTE PRIMARY KEY (DEP_NUM_SEQUENCIA, CLI_NUM_CPF)

)

TYPE=InnoDB

;

CREATE INDEX IXFK_DEPENDENTE_1_CLI_NUM_CPF ON DEPENDENTE (CLI_NUM_CPF);

CREATE INDEX IXFK_DEPENDENTE_2_GPA_CODIGO ON DEPENDENTE (GPA_CODIGO);

Page 11: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

11

CREATE TABLE FUNCIONARIO (

FUN_NUM_CPF VARCHAR(11) NOT NULL

,AGE_CODIGO INTEGER UNSIGNED NOT NULL

,FUN_NOME VARCHAR(50) NOT NULL

,FUN_NUM_TELEFONE VARCHAR(20) NULL

,CONSTRAINT PK_FUNCIONARIO PRIMARY KEY (FUN_NUM_CPF)

)

TYPE=InnoDB

;

CREATE INDEX IXFK_FUNCIONARIO_1_AGE_CODIGO ON FUNCIONARIO (AGE_CODIGO);

CREATE TABLE GRAU_PARENTESCO (

GPA_CODIGO INTEGER UNSIGNED AUTO_INCREMENT NOT NULL

,GPA_DESCRICAO VARCHAR(40) NOT NULL

,CONSTRAINT PK_GRAU_PARENTESCO PRIMARY KEY (GPA_CODIGO)

)

TYPE=InnoDB

;

CREATE TABLE MUNICIPIO (

MUN_CODIGO INTEGER UNSIGNED AUTO_INCREMENT NOT NULL

,MUN_NOME VARCHAR(40) NOT NULL

,CONSTRAINT PK_MUNICIPIO PRIMARY KEY (MUN_CODIGO)

)

TYPE=InnoDB

;

CREATE TABLE PROFISSAO (

PRO_CODIGO INTEGER UNSIGNED AUTO_INCREMENT NOT NULL

,PRO_DESCRICAO VARCHAR(50) NOT NULL

,CONSTRAINT PK_PROFISSAO PRIMARY KEY (PRO_CODIGO)

)

TYPE=InnoDB

;

CREATE TABLE TELEFONE (

CLI_NUM_CPF VARCHAR(11) NOT NULL

,TEL_NUMERO INTEGER UNSIGNED NOT NULL

,CONSTRAINT PK_TELEFONE PRIMARY KEY (CLI_NUM_CPF, TEL_NUMERO)

)

TYPE=InnoDB

;

CREATE INDEX IXFK_TELEFONE_1_CLI_NUM_CPF ON TELEFONE (CLI_NUM_CPF);

CREATE TABLE TRANSACAO (

TRN_NUMERO INTEGER UNSIGNED AUTO_INCREMENT NOT NULL

,CLI_NUM_CPF VARCHAR(11) NOT NULL

,CTA_NUMERO INTEGER UNSIGNED NOT NULL

,TRN_COD_TIPO CHAR(1) NULL

,TRN_DATA TIMESTAMP NULL

,TRN_VALOR DECIMAL(12,2) NULL

,CONSTRAINT PK_TRANSACAO PRIMARY KEY (TRN_NUMERO)

)

TYPE=InnoDB

;

CREATE INDEX IXFK_TRANSACAO_1_CTA_NUMERO ON TRANSACAO (CTA_NUMERO);

CREATE INDEX IXFK_TRANSACAO_2_CLI_NUM_CPF ON TRANSACAO (CLI_NUM_CPF);

CREATE TABLE UNIDADE_FEDERATIVA (

UFD_SIGLA VARCHAR(2) NOT NULL

,UFD_NOME VARCHAR(40) NOT NULL

,CONSTRAINT PK_UNIDADE_FEDERATIVA PRIMARY KEY (UFD_SIGLA)

)

TYPE=InnoDB

;

ALTER TABLE AGENCIA

ADD CONSTRAINT FK_AGENCIA_UNIDADE_FEDERATIVA FOREIGN KEY (UFD_SIGLA)

REFERENCES UNIDADE_FEDERATIVA (UFD_SIGLA)

;

ALTER TABLE AGENCIA

ADD CONSTRAINT FK_AGENCIA_MUNICIPIO FOREIGN KEY (MUN_CODIGO)

REFERENCES MUNICIPIO (MUN_CODIGO)

;

Page 12: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

12

ALTER TABLE CLIENTE

ADD CONSTRAINT FK_CLIENTE_PROFISSAO FOREIGN KEY (PRO_CODIGO)

REFERENCES PROFISSAO (PRO_CODIGO)

;

ALTER TABLE CLIENTE

ADD CONSTRAINT FK_CLIENTE_UNIDADE_FEDERATIVA FOREIGN KEY (UFD_SIGLA)

REFERENCES UNIDADE_FEDERATIVA (UFD_SIGLA)

;

ALTER TABLE CLIENTE

ADD CONSTRAINT FK_CLIENTE_MUNICIPIO FOREIGN KEY (MUN_CODIGO)

REFERENCES MUNICIPIO (MUN_CODIGO)

;

ALTER TABLE CLIENTE_CONTA

ADD CONSTRAINT FK_CLIENTE_CONTA_CLIENTE FOREIGN KEY (CLI_NUM_CPF)

REFERENCES CLIENTE (CLI_NUM_CPF)

;

ALTER TABLE CLIENTE_CONTA

ADD CONSTRAINT FK_CLIENTE_CONTA_CONTA FOREIGN KEY (CTA_NUMERO)

REFERENCES CONTA (CTA_NUMERO)

;

ALTER TABLE CONTA

ADD CONSTRAINT FK_CONTA_AGENCIA FOREIGN KEY (AGE_CODIGO)

REFERENCES AGENCIA (AGE_CODIGO)

;

ALTER TABLE DEPENDENTE

ADD CONSTRAINT FK_DEPENDENTE_CLIENTE FOREIGN KEY (CLI_NUM_CPF)

REFERENCES CLIENTE (CLI_NUM_CPF)

;

ALTER TABLE DEPENDENTE

ADD CONSTRAINT FK_DEPENDENTE_GRAU_PARENTESCO FOREIGN KEY (GPA_CODIGO)

REFERENCES GRAU_PARENTESCO (GPA_CODIGO)

;

ALTER TABLE FUNCIONARIO

ADD CONSTRAINT FK_FUNCIONARIO_AGENCIA FOREIGN KEY (AGE_CODIGO)

REFERENCES AGENCIA (AGE_CODIGO)

;

ALTER TABLE TELEFONE

ADD CONSTRAINT FK_TELEFONE_CLIENTE FOREIGN KEY (CLI_NUM_CPF)

REFERENCES CLIENTE (CLI_NUM_CPF)

;

ALTER TABLE TRANSACAO

ADD CONSTRAINT FK_TRANSACAO_CONTA FOREIGN KEY (CTA_NUMERO)

REFERENCES CONTA (CTA_NUMERO)

;

ALTER TABLE TRANSACAO

ADD CONSTRAINT FK_TRANSACAO_CLIENTE FOREIGN KEY (CLI_NUM_CPF)

REFERENCES CLIENTE (CLI_NUM_CPF)

Esquema para Postgres

CREATE TABLE AGENCIA (

AGE_CODIGO INTEGER NOT NULL

,UFD_SIGLA VARCHAR(2) NOT NULL

,MUN_CODIGO INTEGER NOT NULL

,AGE_NOME VARCHAR(50) NOT NULL

,CONSTRAINT PK_AGENCIA PRIMARY KEY (AGE_CODIGO)

)

;

CREATE INDEX IXFK_AGENCIA_1_UFD_SIGLA ON AGENCIA (UFD_SIGLA);

CREATE INDEX IXFK_AGENCIA_2_MUN_CODIGO ON AGENCIA (MUN_CODIGO);

CREATE TABLE CLIENTE (

CLI_NUM_CPF SERIAL(11) NOT NULL

,PRO_CODIGO INTEGER NOT NULL

,MUN_CODIGO INTEGER NOT NULL

,UFD_SIGLA VARCHAR(2) NOT NULL

,CLI_NOME INTEGER

,CLI_END_LOGR VARCHAR(50)

,CLI_END_NUMERO INTEGER

,CLI_END_BAIRRO VARCHAR(30)

,CLI_END_NUM_CEP VARCHAR(8)

,CONSTRAINT PK_CLIENTE PRIMARY KEY (CLI_NUM_CPF)

)

Page 13: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

13

;

CREATE INDEX IXFK_CLIENTE_1_PRO_CODIGO ON CLIENTE (PRO_CODIGO);

CREATE INDEX IXFK_CLIENTE_2_UFD_SIGLA ON CLIENTE (UFD_SIGLA);

CREATE INDEX IXFK_CLIENTE_3_MUN_CODIGO ON CLIENTE (MUN_CODIGO);

CREATE TABLE CLIENTE_CONTA (

CLI_NUM_CPF VARCHAR(11) NOT NULL

,CTA_NUMERO INTEGER NOT NULL

,CONSTRAINT PK_CLIENTE_CONTA PRIMARY KEY (CLI_NUM_CPF, CTA_NUMERO)

)

;

CREATE INDEX IXFK_CLIENTE_CONTA_1_CLI_NUM_CPF ON CLIENTE_CONTA (CLI_NUM_CPF);

CREATE INDEX IXFK_CLIENTE_CONTA_2_CTA_NUMERO ON CLIENTE_CONTA (CTA_NUMERO);

CREATE TABLE CONTA (

CTA_NUMERO INTEGER NOT NULL

,AGE_CODIGO INTEGER NOT NULL

,CTA_SALDO DECIMAL(12,2) NOT NULL DEFAULT 0

,CONSTRAINT PK_CONTA PRIMARY KEY (CTA_NUMERO)

)

;

CREATE INDEX IXFK_CONTA_1_AGE_CODIGO ON CONTA (AGE_CODIGO);

CREATE TABLE DEPENDENTE (

DEP_NUM_SEQUENCIA INTEGER NOT NULL

,CLI_NUM_CPF VARCHAR(11) NOT NULL

,GPA_CODIGO INTEGER NOT NULL

,DEP_NOME VARCHAR(50) NOT NULL

,CONSTRAINT PK_DEPENDENTE PRIMARY KEY (DEP_NUM_SEQUENCIA, CLI_NUM_CPF)

)

;

CREATE INDEX IXFK_DEPENDENTE_1_CLI_NUM_CPF ON DEPENDENTE (CLI_NUM_CPF);

CREATE INDEX IXFK_DEPENDENTE_2_GPA_CODIGO ON DEPENDENTE (GPA_CODIGO);

CREATE TABLE FUNCIONARIO (

FUN_NUM_CPF VARCHAR(11) NOT NULL

,AGE_CODIGO INTEGER NOT NULL

,FUN_NOME VARCHAR(50) NOT NULL

,FUN_NUM_TELEFONE VARCHAR(20)

,CONSTRAINT PK_FUNCIONARIO PRIMARY KEY (FUN_NUM_CPF)

)

;

CREATE INDEX IXFK_FUNCIONARIO_1_AGE_CODIGO ON FUNCIONARIO (AGE_CODIGO);

CREATE TABLE GRAU_PARENTESCO (

GPA_CODIGO SERIAL NOT NULL

,GPA_DESCRICAO VARCHAR(40) NOT NULL

,CONSTRAINT PK_GRAU_PARENTESCO PRIMARY KEY (GPA_CODIGO)

)

;

CREATE TABLE MUNICIPIO (

MUN_CODIGO SERIAL NOT NULL

,MUN_NOME VARCHAR(40) NOT NULL

,CONSTRAINT PK_MUNICIPIO PRIMARY KEY (MUN_CODIGO)

)

;

CREATE TABLE PROFISSAO (

PRO_CODIGO SERIAL NOT NULL

,PRO_DESCRICAO VARCHAR(50) NOT NULL

,CONSTRAINT PK_PROFISSAO PRIMARY KEY (PRO_CODIGO)

)

;

CREATE TABLE TELEFONE (

CLI_NUM_CPF VARCHAR(11) NOT NULL

,TEL_NUMERO INTEGER NOT NULL

,CONSTRAINT PK_TELEFONE PRIMARY KEY (CLI_NUM_CPF, TEL_NUMERO)

Page 14: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

14

)

;

CREATE INDEX IXFK_TELEFONE_1_CLI_NUM_CPF ON TELEFONE (CLI_NUM_CPF);

CREATE TABLE TRANSACAO (

TRN_NUMERO SERIAL NOT NULL

,CLI_NUM_CPF VARCHAR(11) NOT NULL

,CTA_NUMERO INTEGER NOT NULL

,TRN_COD_TIPO CHAR(1)

,TRN_DATA TIMESTAMP

,TRN_VALOR DECIMAL(12,2)

,CONSTRAINT PK_TRANSACAO PRIMARY KEY (TRN_NUMERO)

)

;

CREATE INDEX IXFK_TRANSACAO_1_CTA_NUMERO ON TRANSACAO (CTA_NUMERO);

CREATE INDEX IXFK_TRANSACAO_2_CLI_NUM_CPF ON TRANSACAO (CLI_NUM_CPF);

CREATE TABLE UNIDADE_FEDERATIVA (

UFD_SIGLA VARCHAR(2) NOT NULL

,UFD_NOME VARCHAR(40) NOT NULL

,CONSTRAINT PK_UNIDADE_FEDERATIVA PRIMARY KEY (UFD_SIGLA)

)

;

ALTER TABLE AGENCIA

ADD CONSTRAINT FK_AGENCIA_UNIDADE_FEDERATIVA FOREIGN KEY (UFD_SIGLA)

REFERENCES UNIDADE_FEDERATIVA (UFD_SIGLA)

;

ALTER TABLE AGENCIA

ADD CONSTRAINT FK_AGENCIA_MUNICIPIO FOREIGN KEY (MUN_CODIGO)

REFERENCES MUNICIPIO (MUN_CODIGO)

;

ALTER TABLE CLIENTE

ADD CONSTRAINT FK_CLIENTE_PROFISSAO FOREIGN KEY (PRO_CODIGO)

REFERENCES PROFISSAO (PRO_CODIGO)

;

ALTER TABLE CLIENTE

ADD CONSTRAINT FK_CLIENTE_UNIDADE_FEDERATIVA FOREIGN KEY (UFD_SIGLA)

REFERENCES UNIDADE_FEDERATIVA (UFD_SIGLA)

;

ALTER TABLE CLIENTE

ADD CONSTRAINT FK_CLIENTE_MUNICIPIO FOREIGN KEY (MUN_CODIGO)

REFERENCES MUNICIPIO (MUN_CODIGO)

;

ALTER TABLE CLIENTE_CONTA

ADD CONSTRAINT FK_CLIENTE_CONTA_CLIENTE FOREIGN KEY (CLI_NUM_CPF)

REFERENCES CLIENTE (CLI_NUM_CPF)

;

ALTER TABLE CLIENTE_CONTA

ADD CONSTRAINT FK_CLIENTE_CONTA_CONTA FOREIGN KEY (CTA_NUMERO)

REFERENCES CONTA (CTA_NUMERO)

;

ALTER TABLE CONTA

ADD CONSTRAINT FK_CONTA_AGENCIA FOREIGN KEY (AGE_CODIGO)

REFERENCES AGENCIA (AGE_CODIGO)

;

ALTER TABLE DEPENDENTE

ADD CONSTRAINT FK_DEPENDENTE_CLIENTE FOREIGN KEY (CLI_NUM_CPF)

REFERENCES CLIENTE (CLI_NUM_CPF)

;

ALTER TABLE DEPENDENTE

ADD CONSTRAINT FK_DEPENDENTE_GRAU_PARENTESCO FOREIGN KEY (GPA_CODIGO)

REFERENCES GRAU_PARENTESCO (GPA_CODIGO)

;

ALTER TABLE FUNCIONARIO

ADD CONSTRAINT FK_FUNCIONARIO_AGENCIA FOREIGN KEY (AGE_CODIGO)

REFERENCES AGENCIA (AGE_CODIGO)

;

ALTER TABLE TELEFONE

ADD CONSTRAINT FK_TELEFONE_CLIENTE FOREIGN KEY (CLI_NUM_CPF)

REFERENCES CLIENTE (CLI_NUM_CPF)

;

ALTER TABLE TRANSACAO

ADD CONSTRAINT FK_TRANSACAO_CONTA FOREIGN KEY (CTA_NUMERO)

REFERENCES CONTA (CTA_NUMERO)

Page 15: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

15

;

ALTER TABLE TRANSACAO

ADD CONSTRAINT FK_TRANSACAO_CLIENTE FOREIGN KEY (CLI_NUM_CPF)

REFERENCES CLIENTE (CLI_NUM_CPF)

;

Page 16: Exemplo projeto-bd-assunto-2a-aval-bsi-lc

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

UNIVERSIDADE ABERTA DO BRASIL Curso de Bacharelado em Sistemas de Informação

Curso de Licenciatura em Computação

Banco de Dados Professores executores: João Murilo Dourado de Azevedo e Mônica Simões Bandeira

_________________________________________________________________

16

f) Scripts das Consulta SQL (SQL/DML)

Aguardem em nova versão...

_________________ Fim do Exemplo de Projeto de BD ________________________