Skip navigation

Tag Archives: Normalização

“O Objetivo básico do projeto de banco de dados é possibilitar ao usuário obter a informação exata em um limite aceitável de tempo, de maneira a executar sua tarefa dentro da organização” (Teorey e Fry)
“O Objetivo do projeto de um banco de dados relacional é gerar um conjunto de esquemas relacionais que nos permita armazenar informações sem redundância desnecessária, apesar de nos permitir recuperar a informação facilmente” (Korth e Silberschatz)

  • Ciclo de vida para o Desenvolvimento de Sistemas de Bancos de Dados
  1. Análise das Necessidades
  2. Projeto Conceitual (DER)
  3. Projeto Físico
  4. Implementação
  5. Monitoração
  6. Sintonização
  7. (Manutenção -> retorna ao 1)

Sistemas de Gerenciamento de Base de Dados (SGBD) encapsulam do 3 ao 5 em um único processo, necessitando apenas ser Sintonizado (ou configurado)

  • Perigos potenciais no projeto de Banco de Dados Relacionais
    • Repetição da informação
      • Informações repetidas consomem espaço de armazenamento e dificultam a atualização
    • Incapacidade de representar parte da informação
      • Por vezes há a necessidade de se incluir valores nulos
    • Perda de Informação
      • Projetos mal elaborados sugerem a decomposição de esquemas relacionais com muitos atributos
  • Dependências Funcionais
    • Dada uma relação R, o atributo Y de R é funcionalmente dependente do atributo X de R, ou:
      • R.X -> R.Y
    • Se e somente se cada valor X em R for associado precisamente a um mesmo valor Y em R, a qualquer momento
    • (Y e X podem ser compostos)

 

Regras para encontrar Dependências Funcionais

 

 

Separação
A -> BC então A -> B e A -> C Exemplo:
CPF -> nome, endereço então CPF -> nome e CPF -> endereço
Leia o exemplo acima da seguinte maneira:
Se com um número de CPF eu encontro o nome e o endereço de uma pessoa, então com este mesmo número eu posso encontrar apenas o nome e com este mesmo número eu posso encontrar apenas o endereço.

Acumulação
A -> B então AC -> B
Exemplo:
CPF -> endereço então CPF, idade -> endereço
Leia o exemplo acima da seguinte maneira:
Se com um número de CPF eu encontro o endereço de uma pessoa, então com este mesmo número mais a idade da pessoa eu posso encontrar o endereço também.

Transitividade
A -> B e B -> C então A -> C
Exemplo:
CPF -> código-cidade e código-cidade -> nome-cidade então CPF -> nome-cidade
Leia o exemplo acima da seguinte maneira:
Se com um número de CPF eu encontro o código da cidade de uma pessoa, e com o código da cidade eu encontro o nome da cidade, então com o número do CPF eu posso encontrar o nome da cidade.

Pseudo-Transitividade
A -> B e BC -> D então AC -> D
Exemplo:
CPF -> código-funcionário e código-funcionário, mês -> salário-funcionário então CPF, mês -> salário-funcionário
Leia o exemplo acima da seguinte maneira:
Se com um número de CPF eu encontro o código do funcionário, e com o código do funcionário mais um certo mês eu encontro o salário que ele recebeu naquele mês, então com o número do CPF mais um certo mês eu posso encontrar o salário que ele recebeu naquele mês.

 

  • Normalização
    • Processo de transformações das relações (tabelas representando entidades e relacionamentos) em novas relações pela aplicação de projeções (quebra e granularização das tabelas)
    • Consequências:
      • Diminuem problemas de anomalias e inconsistências
      • Relações simplificadas e estrutura regular
      • Aumento da integridade dos dados
      • Necessidade de realização de agregamentos
      • Eventual queda na performance
    • 5 Formas normais
    • 1a. Forma Normal:
      • Todos os atributos admitem apenas valores atômicos1ec455344c8a1517c98c97f5a583641e
    • 2a. Forma Normal
      • Cada atributo não chave é dependente de toda a chave primária238e398f3558556612e5c8d287375225
      • Problemas Solucionados
        • Inserção
          • Fornecedor somente poderá ser cadastrado quando fornecer pelo menos 1 peça
        • Remoção:
          • Ao se remover algum pedido remove-se também a informação de localidadeassociadaao fornecedor a que se refere o pedido
        • Atualização
          • Redundância de informações em diversas tuplas. Ex: Mudança do endereço de um fornecedor
    • 3a. Forma Normal
      • Cada atributo chave é dependente não transitivo da chave primáriac55fdeda421c251c152ab89f7ce9b8d0
      • Problemas Solucionados 3a. FN
        • Inserção:
          • Não se pode registrar o fato de uma cidade ter um determinado porte até que haja um fornecedor daquela cidade
        • Remoção:
          • Removendo-se o último fornecedor de uma cidade perde-se a informação porte
        • Atualização:
          • Quando uma cidade muda de porte pode ser necessário atualizar diversas tuplas de fornecedor

 

Captura de Tela 2014-09-17 às 20.35.10

 

 

    • Restrições de Integridade
      • Integridade de Chave
      • Integridade de Entidade
      • Integridade Referencial
    • Tipos:
      • Restrições implícitas
      • Restrições Explícitas
        • Especificação procedimental
        • Especificação declarativa
        • Especificação de Triggers
  •  Forma normal de Boyce-Codd – FNBC
    Uma relação R está na forma normal de Boyce-Codd
    se para toda dependência funcional X → Y associada
    com R uma das seguintes afirmações é verdadeira:

    • Y ⊆ X (i.e, X → Y é DF trivial);ou
    •  X é superchave de R;

Exemplo:
Está na FNBC: emp(ecod, ename, title), pay(title, sal),
É raro uma relação estar na 3FN e não estar na
FNBC, mas vejamos dois exemplos.

 

Exemplo de normalização até a FNBC
Seja o esquema de lotes a venda em um Estado:
lotes(propriedadeNum, cidade, loteNum, area, preco, imposto)
chaves primária: propriedadeNum;
DF1: propriedadeNum é chave primária
DF2: (cidade, loteNum) é chave candidata
DF3: cidade → imposto; % imposto fixo por cidade
DF4: area → preco; % preço por área independente
.                                   % dos demais atributos
DF5: area → cidade; % domínio de tamanhos
.                                     % disjuntos por cidade

Está na 1FN? E na 2FN? E na 3FN? E na FNBC?

Exemplo lotes: 1FN

lotes(propriedadeNum, cidade, loteNum, area, preco, imposto)
Está na 1FN, mas não na 2FN, pois:
DF2: (cidade, loteNum) → propriedadeNum, area, preco, imposto
DF3: cidade → imposto
Imposto é parcialmente dependente da chave
(cidade, loteNum)

Exemplo lotes1 e lotes2: 2FN
lotes1(propriedadeNum, cidade, loteNum, area, preco)
lotes2(cidade, imposto)
lotes2 está na 3FN;
lotes1 está na 2FN, mas não na 3FN, pois:
DF4: area → preco;
– area não é superchave e preço não é atributo principal

Exemplo lotes1 e lotes2: 3FN
lotes1a(propriedadeNum, cidade, loteNum, area)
lotes1b(area, preco)
lotes2(cidade, imposto)
Lotes1a, lotes1b e lotes2 estão na 3FN, mas
lotes1a não está na FNBC, pois:
DF5: area → cidade;
Observe que lotes1a está na 3FN porque, embora area
não seja superchave, cidade é atributo principal.
Entretanto isso não é relevante para a FNBC

 

Exemplo lotes na FNBC
lotes1ax(propriedadeNum, loteNum, area)
lotes1ay(area, cidade)
lotes1b(area, preco)
lotes2(cidade, imposto)
Observe que a DF2 foi perdida nesta decomposição

Outro Exemplo de 3FN x FNBC
ensina(aluno, disciplina, professor)
DF1: {aluno, disciplina} → professor;
DF2: professor → disciplina; % cada professor
% leciona uma disciplina
1FN: atributos são atômicos? Sim
2FN: há dependência parcial? Não, logo está na 2FN
3FN: dependências de superchaves ou apontando para
atributos principais? sim, logo está na 3FN
FNBC: dependências de superchaves? Não, veja DF2
Como decompor ensina?

Alternativas de decomposição na FNBC
1. (aluno, professor), (aluno, disciplina)
2. (disciplina, professor), (aluno, disciplina)
3. (disciplina, professor), (aluno, professor)
Todas perdem DF1, mas em 3. evitamos tuplas falsas após
uma junção. Ex. de instância:

 

Captura de Tela 2014-09-17 às 21.10.57

 

 

 

Estudo para a Prova:

Construa um Diagrama Modelo Entidade Relacionamento tabular (Relacional) agrupando os atributos nas tabelas que vão representar as entidades e os relacionamentos do seu banco de dados

Construa os diagramas de dependências funcionais para as tabelas propostas (Diagrama relacional)
Garanta que cada atributo será atômico (isto, é, não pode ser dividido) para se obter um modelo na 1a. FN
Elimine as dependências parciais da chave primária em suas tabelas para obter um projeto na 2a. FN
Elimine as dependências transitivas nas tabelas (se houver), obtendo um esquena na 3a. FN