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;
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 _________________________
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
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
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
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
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)
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
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)
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);
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)
;
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)
)
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)
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)
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)
;
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 ________________________