Você está na página 1de 2

Cursos: Análise e Des. De Sist.

, Ciência da Computação e Sistemas de Informação


Prof. Gilberto Irajá Müller
Banco de Dados I
Respostas Engenharia Reversa e Normalização

Exercício 5.1
1FN:
CURSO(Cod-Curso, Nome-Curso, Numero-Vagas-Curso)
CANDIDATO(Cod-Curso, Cod-Cand, Nome-Cand, Escore-Cand)

Exercício 5.2
1FN:
ALUNO(Cod-Al, Nome-Al)
CURSO(Cod-Al, Cod-Curso, Sem-ingresso)
DISCIPLINA(Cod-Al, Cod-Disc)
SEM-DISCIPLINA(Cod-Al, Cod-Disc, Sem-Disc-Cursada, Nota-Disc)

Exercício 5.3
ÑN
PACIENTE(nro_paciente, nome_paciente, nro_quarto, descrição_quarto,
nro_cômodos_quarto, (cod_médico, nome_médico, fone_médico))

1FN: (Eliminar tabelas aninhadas)


PACIENTE(nro_paciente, nome_paciente, nro_quarto, descrição_quarto,
nro_cômodos_quarto)
PACIENTE_MEDICO(nro_paciente, cod_médico, nome_médico, fone_médico)

2FN: (Dependência Funcional Parcial)


PACIENTE(nro_paciente, nome_paciente, nro_quarto, descrição_quarto,
nro_cômodos_quarto)
PACIENTE_MEDICO(nro_paciente, cod_médico)
MEDICO(cod_médico, nome_médico, fone_médico)
Observem que a coluna
3FN: (Dependência Funcional Transitiva) nro_quarto será um atributo
PACIENTE(nro_paciente, nome_paciente, nro_quarto) (chave estrangeira) da tabela
PACIENTE_MEDICO(nro_paciente, cod_médico) QUARTO.
MEDICO(cod_médico, nome_médico, fone_médico)
QUARTO(nro_quarto, descrição_quarto, nro_cômodos_quarto)

ÑN
ALUNO(nro_aluno, nome_aluno, nro_créditos, nro_depto, nome_depto, (nro_curso,
descrição_curso, ano_ingresso))

1FN: (Eliminar tabelas aninhadas)


ALUNO(nro_aluno, nome_aluno, nro_creditos, nro_depto, nome_depto)
ALUNO_CURSO(nro_aluno, nro_curso, descrição_curso, ano_ingresso)

2FN: (Dependência Funcional Parcial)


Primeiro modelo
ALUNO(nro_aluno, nome_aluno, nro_creditos, nro_depto, nome_depto)
ALUNO_CURSO(nro_aluno, nro_curso, ano_ingresso)
CURSO(nro_curso, descrição_curso)
Cursos: Análise e Des. De Sist., Ciência da Computação e Sistemas de Informação
Prof. Gilberto Irajá Müller
Banco de Dados I
Respostas Engenharia Reversa e Normalização

Segundo modelo
Observem que: o modelo normalizado possui um problema de posição dos atributos
no domínio correto, pois nro_depto e nome_depto fazem parte da tabela CURSO e, o
atributo nro_créditos, faz parte da tabela ALUNO_CURSO.
De forma a melhorar o modelo, precisaremos verificar a dependência funcional
parcial de alguns atributos (similar ao exemplo anterior, porém, alguns atributos
estão soltos no meio da tabela não-normalizada). Nas primeiras lâminas havia
comentado que, para a 1FN, iríamos utilizar a separação das tabelas aninhadas.
Neste caso, o ideal seria em uma única tabela tal que possamos fazer a relação
abaixo (o conceito continua o mesmo):
1FN:
ALUNO(nro_aluno, nome_aluno, nro_créditos, nro_depto, nome_depto, nro_curso,
descrição_curso, ano_ingresso)

2FN: (Utilizando apenas uma tabela com todas as colunas)


Dependência Funcional
nro_aluno -> nome_aluno
nro_curso -> nro_depto, nome_depto, descrição_curso
nro_aluno, nro_curso -> nro_creditos, ano_ingresso

ALUNO(nro_aluno, nome_aluno)
ALUNO_CURSO(nro_aluno, nro_curso, nro_creditos, ano_ingresso)
CURSO(nro_curso, descrição_curso, nro_depto, nome_depto)

3FN: (Dependência Funcional Transitiva) Observem que a coluna


Primeiro modelo
nro_depto será um atributo
ALUNO(nro_aluno, nome_aluno, nro_creditos, nro_depto)
(chave estrangeira) da tabela
ALUNO_CURSO(nro_aluno, nro_curso, ano_ingresso)
DEPTO.
CURSO(nro_curso, descrição_curso)
DEPTO(nro_depto, nome_depto)

Segundo modelo
ALUNO(nro_aluno, nome_aluno)
ALUNO_CURSO(nro_aluno, nro_curso, nro_créditos, ano_ingresso)
CURSO(nro_curso, descrição_curso, nro_depto)
DEPTO(nro_depto, nome_depto)

CONSIDERAÇÃO REFERENTE AO ÚLTIMO EXERCÍCIO:


• Separar em tabelas na 1FN poderá causar perda de informações conforme
comentado nas lâminas. Porém, partimos do pressuposto que os atributos estarão
no seu domínio;
• Normalmente, o modelo vem com as tabelas aninhadas organizadas. Reforçando a
tese acima;
• Neste último exemplo, os atributos não estavam corretamente na tabela aninhada;
• Utilizando a 1FN com somente um “tabelão”, resultaria na informação mais correta
em virtude da dependência funcional parcial;
• Ferramentas de automação utilizam o primeiro modelo;
• Dois atributos ficaram no domínio errado (Primeiro modelo) em conseqüência de
estarem fora do contexto.

Você também pode gostar