Escolar Documentos
Profissional Documentos
Cultura Documentos
1 Introdução
O controle de consistência de uma BD pode ser realizado:
- pelo SGBD;
- pelos Aplicativos;
- pela própria construção do sistema.
2 Dependência Funcional
Uma dependência funcional é uma restrição entre dois conjuntos de atributos de uma
relação da BD.
Suponha-se o esquema de relação R = { A1, A2, ..., An }. Uma dependência funcional,
denotada por X→Y, entre dois conjuntos de atributos X e Y que são subconjuntos de R,
especifica uma restrição sobre as possíveis tuplas que podem existir na relação instância r de
R. A restrição estabelece que para quaisquer tuplas t1 e t2 em r:
1
Uma dependência funcional é uma propriedade do significado ou semântica dos
atributos em um esquema de relação R. Utiliza-se o entendimento da semântica de atributos
de R, isto é, como eles se relacionam, para especificar as dependências funcionais envolvidas
em todas as instâncias r da relação R. Assim, a principal utilização das dependências
funcionais é o de descrever um esquema de relação R especificando restrições sobre seus
atributos que devem ser válidas sempre.
Por exemplo, de acordo com a o esquema da relação Emp_Proj :
A primeira vista, pode-se dizer que texto → curso, porém não é possível confirmar
isso, a menos que se saiba que isso seja verdade para todas as instâncias de Ensino. Por outro
lado, é suficiente para demonstrar um contra-exemplo para refutar uma dependência
funcional. Por exemplo: Estrutura de Dados é ensinada por Rogério e por Mauro, então pode-
se concluir que professor não depende funcionalmente de curso.
Dada uma instância de uma relação é possível verificar se dois conjuntos de atributos
quaisquer atendem a uma dependência funcional. Por exemplo: Considerando o esquema de
relação Alunos e a instância r(Alunos):
2
Alunos = {nome, curso, idade}
r(Alunos) = {<Mario, comput, 21>,
<Paulo, elétrica, 22>,
<Mauro, física, 22>,
<Ricardo, comput, 21>,
<Adriana, elétrica, 22>}
idade → curso
Não, pois tem-se:
21 => comput
22 => elétrica
22 => física
curso → idade
Sim, pois :
comput => 21
elétrica => 22
física => 22
Reflexiva
Se A B B→ A
Aumentativa
Se A → B AC → B
Separação
Se A → BC A → B, A → C
Aditiva
Se A → B, A → C A → BC
Transitiva
Se A → B, B → C A → C
Pseudo-transitiva
Se A → B, BC → D AC → D
3
3 Normalização
O processo de normalização permite ao projetista controlar quanto de consistência é
garantida pela maneira de construção do sistema e quanto deve ser de responsabilidade dos
aplicativos e/ou do SGBD.
Normalizar demais diminui a eficiência dos aplicativos e de menos abre caminhos para
inconsistências.
A 1a. Forma Normal é uma das maneiras de controlar consistência. As formas normais
seguintes estão relacionadas ao conceito de dependência funcional e também permitem o
controle da consistência.
4
2a. Forma Normal (2FN)
Uma relação está na 2a. Forma Normal se :
• está na 1a. Forma Normal;
• todos os atributos que não participam da chave primária são dependentes de toda a
chave primária.
Exemplo:
Ministra = {professor, sigla, livro}
Turma = {número, sigla, sala, num_créditos}
Dependências funcionais:
Ministra:
professor → sigla
sigla → livro
Turma:
número, sigla → sala
sigla → num_créditos
Logo, a relação Ministra está na 2a. Forma Normal, pois os atributos sigla e livro
dependem de professor, o que não ocorre na relação Turma, pois num_créditos não depende
da chave primária inteira, mas apenas de sigla.
Exemplo :
Turma = {número, sigla, sala, num_creditos}
Dependências funcionais:
número, sigla → sala
sigla → num_creditos
sigla - grupo de atributos que faz parte da chave e determina o outro grupo;
num_creditos - grupo de atributos que depende de parte da chave.
Transforma-se em:
5
A 2a. Forma Normal evita:
- inconsistência devido à duplicidade de informações;
- perda de dados em operações de remoção/alteração na relação.
Exemplo:
Turma = {sigla, número, sala, num_créditos}
r(Turma) = {<COM122, 1, 10, 2>,
<COM122, 2, 14, 2>,
<COM189, 1, 8, 3>,
<COM189, 2, 15, 4>,
<COM134, 1, 16, 2>}
Dependências funcionais:
sigla, número → sala
sigla → num_créditos
Observa-se que:
- pode ter inconsistência pois uma mesma disciplina (mesma sigla) pode ter número de
créditos diferentes (no exemplo a sigla COM189);
- se não houver uma turma da disciplina em um semestre, há perda da informação de
quantos créditos tem essa disciplina!
Logo, deve-se ter:
Exemplos :
Ministra = {professor, sigla, livro}
Turma = {número, sigla, sala}
Dependências funcionais:
Ministra:
professor → sigla
sigla → livro
6
Turma:
número, sigla → sala
A relação Turma está na 3a. Forma Normal, porém isso não ocorre com a relação
Ministra, já que nem todos os seus atributos dependem diretamente da chave primária, mas
sim transitivamente.
Exemplo:
Turma = {número, sigla, sala, prédio}
Dependências funcionais:
número, sigla → sala
sala → prédio