Académique Documents
Professionnel Documents
Culture Documents
_________________________________________________________________
1.
descrita
pelos
atributos
transao-nmero,
transaotipo(dbito,crdito), transao-data e transao-quantia.
Um cliente no pode ter mais de uma conta na mesma agncia.
Uma conta pode pertencer a mais de um cliente.
O Banco BOM S.A. s possui cliente tipo pessoa-fsica.
Um funcionrio s pode trabalhar em uma agncia.
Uma transao s pode se feita por um cliente sobre uma conta.
2.
b)
c)
d)
e)
f)
_________________________________________________________________
g)
_________________________________________________________________
RESOLUO
Projeto de Banco de Dados do Banco BOM S.A
a)
Dependente possui atributos prprios e deve ser tratado como Entidade Fraca
Telefones do Cliente um atributo multivalorado
_________________________________________________________________
_________________________________________________________________
b)
_________________________________________________________________
Mapeando Especializaes e Generalizaes
O modelo tratado no possui especializaes ou generalizaes
_________________________________________________________________
c)
Normalizao (Captulo 9)
1FN: Atributos Compostos e Multivalorados
_________________________________________________________________
agencia(age_codigo, age_nome, ufd_sigla(FK), mun_codigo(FK))
ufd_sigla referencia unidade_federativa
mun_codigo referencia municpio
Resultado da Nomalizao
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 municpio
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
_________________________________________________________________
d)
_________________________________________________________________
e)
10
_________________________________________________________________
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)
;
11
_________________________________________________________________
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)
12
_________________________________________________________________
;
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)
13
_________________________________________________________________
)
;
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)
14
_________________________________________________________________
;
ALTER TABLE TRANSACAO
ADD CONSTRAINT FK_TRANSACAO_CLIENTE FOREIGN KEY (CLI_NUM_CPF)
REFERENCES CLIENTE (CLI_NUM_CPF)
;
15
_________________________________________________________________
f)
16