MODELAGEM EM BANCO DE DADOS NORMALIZAÇÃO Prof. Marcos Alexandruk UNINOVE
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO ©  PROF. MARCOS ALEXANDRUK NORMALIZAÇÃO Conceito introduzido em 1970 por E. F. Codd (1FN) Processo matemático formal fundamentado na  teoria dos conjuntos Aplica uma série de regras sobre as tabelas de um banco de dados para verificar se estas foram corretamente projetadas
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO ©  PROF. MARCOS ALEXANDRUK OBJETIVOS PRINCIPAIS Garantir a integridade dos dados, evitando que informações sem sentido sejam inseridas Organizar e dividir as tabelas da forma mais  eficiente possível,  diminuindo a redundância  e permitindo a evolução  do banco de dados
NORMALIZAÇÃO PARTE 1: CONCEITOS ÚTEIS Chaves Dependência Funcional (DF) Trivialidade Transitividade D F Irredutível à Esquerda Dependência Multivalorada
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO ©  PROF. MARCOS ALEXANDRUK CHAVES Chave candidata :  atributo ou conjunto de atributos que são únicos para cada registro. Cada tabela pode ter uma ou várias chaves deste tipo. Exemplos: CODIGO, CPF, RG
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO ©  PROF. MARCOS ALEXANDRUK CHAVES Chave primária :  Escolhida entre as  chaves candidatas para ser o identificador principal da tabela. (PK – Primary Key)
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO ©  PROF. MARCOS ALEXANDRUK CHAVES Chaves alternativas :  São as  chaves candidatas  que não foram definidas como chaves primárias.
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO ©  PROF. MARCOS ALEXANDRUK CHAVES Chave estrangeira :  Atributo ou conjunto de atributos que faz a ligação com a chave primária de outra tabela. (FK – Foreign Key)
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO ©  PROF. MARCOS ALEXANDRUK DEPENDÊNCIA FUNCIONAL (DF) Sempre que um atributo  X  identifica um atributo  Y há entre eles uma  dependência funcional . X  é o determinante e  Y  é o dependente. Representação: X      Y  (lê-se: X determina Y ou Y é dependente de X) cidade    estado (estado é dependente de cidade) estado    país (país é dependente de estado)
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO ©  PROF. MARCOS ALEXANDRUK TRIVIALIDADE A  dependência funcional trivial  indica que um determinante com mais de um atributo pode determinar seus próprios membros  quando isolados. {banco,agencia}    banco {banco,agencia}    agencia A  dependência funcional não trivial *  indica que um determinante identifica  outro atributo  qualquer. {banco,agencia}    cidade (cidade não faz parte do determinante) * Esta DF é a que nos interessa no processo de normalização.
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO ©  PROF. MARCOS ALEXANDRUK TRANSITIVIDADE Se um atributo X determina Y e se Y determina Z, Podemos dizer que X determina Z de  forma transitiva , Isto é, existe uma  dependência funcional transitiva X para Z. cidade    estado estado    país cidade    país (cidade determina país de forma transitiva)
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO ©  PROF. MARCOS ALEXANDRUK D F IRREDUTÍVEL À ESQUERDA O lado esquerdo de uma  dependência funcional  é irredutível à esquerda  quando o determinante está na sua  forma mínima ,  não é possível reduzir a quantidade de atributos determinantes sem perder a dependência funcional . {cidade,estado}    país   (Não está na forma irredutível à esquerda*) * podemos ter somente o estado como determinante estado    país   (Está na forma irredutível à esquerda) NOTA:  Nem sempre estar na forma irredutível à esquerda significa possuir um determinante com apenas um atributo!
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO ©  PROF. MARCOS ALEXANDRUK DEPENDÊNCIA MULTIVALORADA O valor de um atributo determina um  conjunto de valores de um outro atributo. {CPF}    {nome} (um nome para cada CPF) {CPF}    {dependente} (vários dependentes para cada CPF) Uma dependência multivalorada é representada por: X    Y  (X multidetermina Y ou Y é multidependente de X)
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO ©  PROF. MARCOS ALEXANDRUK PARTE 1 – EXERCÍCIOS: Uma escola deseja cadastrar os alunos (idade de 7 a 12 anos). Tomando como base o seguinte conjunto {codigo,CPF,RG}, qual atributo você escolheria como Chave Primária? Por que? Como seriam chamadas as outras chaves que NÃO foram definidas como chave primária?
NORMALIZAÇÃO PARTE 2: FORMAS NORMAIS 1FN – 1ª Forma Normal 2FN – 2ª Forma Normal 3FN – 3ª Forma Normal FNBC – Forma Normal de Boyce e Codd 4FN – 4ª Forma Normal 5FN – 5ª Forma Normal
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 1FN – Primeira Forma Normal: Os atributos da tabela não contêm grupos de repetição (tabelas aninhadas). Passando para a 1FN: A tabela a seguir NÃO está na 1FN: D F MULTIVALORADA 10/02/2005 1800 Analista Sr Claudio 1003 Beta 12 05/01/2005 1200 Analista Pl Daniela 1004 02/01/2005 1800 Analista Sr Antonio 1001 Alfa 11 DtInicio SalFunc CargoFunc NomeFunc CodFunc DescProj CodProj Projeto 10/02/2005 1800 Analista Sr Claudio 1003 12 05/01/2005 1200 Analista Pl Daniela 1004 11 02/01/2005 1800 Analista Sr Antonio 1001 11 DtInicio SalFunc CargoFunc NomeFunc CodFunc CodProj ProjFunc Beta 12 Alfa 11 DescProj CodProj Projeto
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 2FN – Segunda Forma Normal: Condição:  Chave Primária (PK) composta por mais de uma coluna. Todas as colunas que não fazem parte da PK dependem de todas as colunas que compõem a PK. A tabela a seguir NÃO está na 2FN: Passando para a 2FN: D F IRREDUTÍVEL À ESQUERDA 10/02/2005 1800 Analista Sr Claudio 1003 12 05/01/2005 1200 Analista Pl Daniela 1004 11 02/01/2005 1800 Analista Sr Antonio 1001 11 DtInicio SalFunc CargoFunc NomeFunc CodFunc CodProj ProjFunc 10/02/2005 1003 12 05/01/2005 1004 11 02/01/2005 1001 11 DtInicio CodFunc CodProj ProjFunc 1800 Analista Sr Claudio 1003 1200 Analista Pl Daniela 1004 1800 Analista Sr Antonio 1001 SalFunc CargoFunc NomeFunc CodFunc Funcionario
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 3FN – Terceira Forma Normal: Não há dependências funcionais transitivas. Cada coluna não PK depende DIRETAMENTE da PK. A tabela a seguir NÃO está na 3FN: Passando para a 3FN: CodFunc    CargoFunc    SalFunc Dependência Funcional Transitiva D F TRANSITIVA 1800 Analista Sr Claudio 1003 1200 Analista Pl Daniela 1004 1800 Analista Sr Antonio 1001 SalFunc CargoFunc NomeFunc CodFunc Funcionario Analista Sr Claudio 1003 Analista Pl Daniela 1004 Analista Sr Antonio 1001 CargoFunc NomeFunc CodFunc Funcionario 1200 Analista Pl 1800 Analista Sr SalFunc CargoFunc CargoSalario
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO FNBC – F N Boyce e Codd: Condição:  Aplica-se a FNBC quando: D F NÃO TRIVIAL E IRRED. À ESQ.  Encontramos duas ou mais chaves candidatas As chaves candidatas apresentam mais de um atributo (são compostas) Todas as chaves candidatas têm um atributo em comum Vamos assumir que um professor está associado a mais de uma escola e uma sala. Aluno(NomeAluno,EndAluno,NomeEscola,NrSala,NomeProf) Exemplo: Chaves Candidatas: NomeAluno + EndAluno NomeAluno + NrSala NomeAluno + NomeProf Neste exemplo: Encontramos três chaves candidatas Todas são compostas Todas compartilham um mesmo atributo Aplicando a FNBC: A tabela Aluno será dividida em duas tabelas: uma que contêm todos os atributos que descrevem o  aluno  e outra que contêm os atributos que designam um  professor  em uma determinada escola e número de sala. Aluno(NomeAluno,EndAluno,NomeEscola,NrSala) Professor(NomeEscola,NrSala,NomeProf)
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO FNBC – F N Boyce e Codd: Condição:  Aplica-se a FNBC quando: D F NÃO TRIVIAL E IRRED. À ESQ.  Encontramos duas ou mais chaves candidatas As chaves candidatas apresentam mais de um atributo (são compostas) Todas as chaves candidatas têm um atributo em comum Aplicando a FNBC: A tabela  Emprestimo  será dividida em duas tabelas: uma que contém   todos os atributos que descrevem o  Emprestimo  e outra que contém os atributos   do  Devedor   (ou cliente_emprestimo). Claudia Alves C3 Beatriz Batista C2 Antonio Alves C1 NomeCli CodCli Cliente Campinas A3 Botucatu A2 Amparo A1 NomeAge CodAge Agencia 1000.00 E1 C2 A1 1500.00 E3 C3 A2 1500.00 E3 C1 A2 2000.00 E2 C2 A1 Valor NrEmp CodCli CodAge Emprestimo Valor NrEmp CodAge 1000.00 E1 A1 1500.00 E3 A2 2000.00 E2 A1 Emprestimo E3 C1 E3 C3 E2 C2 E1 C2 NrEmp CodAge Devedor
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 4FN – Quarta Forma Normal: Uma tabela não deve possuir mais de uma D F Multivalorada. Passando para a 4FN: A tabela a seguir NÃO está na 4FN: D F MULTIVALORADA CodProj    CodFunc CodProj    CodEquip A20 1001 12 A10 1001 12 A20 1002 11 A20 1001 11 A10 1002 11 A10 1001 11 CodEquip CodFunc CodProj ProjFuncEquip 1001 12 1002 11 1001 11 CodFunc CodProj ProjFunc A20 12 A10 12 A20 11 A10 11 CodEquip CodProj ProjEquip
MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 5FN – Quinta Forma Normal: Condição:  Relacionamentos multiplos (ternários ... n-ários). NÃO está na 5FN: Está na 5FN: A tabela está na 5FN quando o seu conteúdo NÃO puder ser reconstruído Através da junção das tabelas secundárias. 1º passo: Decompor a tabela através da operação de  projeção . 2º passo: Reconstruir a tabela através da  junção . 2 1001 10 2 1001 20 2 1002 10 1 1001 10 Req Ped Mat MatPedReq 1001 20 1002 10 1001 10 Ped Mat MatPed 2 1001 2 1002 1 1001 Req Ped PedReq 2 20 2 10 1 10 Req Mat MatReq

Normalização - Alexandruk

  • 1.
    MODELAGEM EM BANCODE DADOS NORMALIZAÇÃO Prof. Marcos Alexandruk UNINOVE
  • 2.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO © PROF. MARCOS ALEXANDRUK NORMALIZAÇÃO Conceito introduzido em 1970 por E. F. Codd (1FN) Processo matemático formal fundamentado na teoria dos conjuntos Aplica uma série de regras sobre as tabelas de um banco de dados para verificar se estas foram corretamente projetadas
  • 3.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO © PROF. MARCOS ALEXANDRUK OBJETIVOS PRINCIPAIS Garantir a integridade dos dados, evitando que informações sem sentido sejam inseridas Organizar e dividir as tabelas da forma mais eficiente possível, diminuindo a redundância e permitindo a evolução do banco de dados
  • 4.
    NORMALIZAÇÃO PARTE 1:CONCEITOS ÚTEIS Chaves Dependência Funcional (DF) Trivialidade Transitividade D F Irredutível à Esquerda Dependência Multivalorada
  • 5.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO © PROF. MARCOS ALEXANDRUK CHAVES Chave candidata : atributo ou conjunto de atributos que são únicos para cada registro. Cada tabela pode ter uma ou várias chaves deste tipo. Exemplos: CODIGO, CPF, RG
  • 6.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO © PROF. MARCOS ALEXANDRUK CHAVES Chave primária : Escolhida entre as chaves candidatas para ser o identificador principal da tabela. (PK – Primary Key)
  • 7.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO © PROF. MARCOS ALEXANDRUK CHAVES Chaves alternativas : São as chaves candidatas que não foram definidas como chaves primárias.
  • 8.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO © PROF. MARCOS ALEXANDRUK CHAVES Chave estrangeira : Atributo ou conjunto de atributos que faz a ligação com a chave primária de outra tabela. (FK – Foreign Key)
  • 9.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO © PROF. MARCOS ALEXANDRUK DEPENDÊNCIA FUNCIONAL (DF) Sempre que um atributo X identifica um atributo Y há entre eles uma dependência funcional . X é o determinante e Y é o dependente. Representação: X  Y (lê-se: X determina Y ou Y é dependente de X) cidade  estado (estado é dependente de cidade) estado  país (país é dependente de estado)
  • 10.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO © PROF. MARCOS ALEXANDRUK TRIVIALIDADE A dependência funcional trivial indica que um determinante com mais de um atributo pode determinar seus próprios membros quando isolados. {banco,agencia}  banco {banco,agencia}  agencia A dependência funcional não trivial * indica que um determinante identifica outro atributo qualquer. {banco,agencia}  cidade (cidade não faz parte do determinante) * Esta DF é a que nos interessa no processo de normalização.
  • 11.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO © PROF. MARCOS ALEXANDRUK TRANSITIVIDADE Se um atributo X determina Y e se Y determina Z, Podemos dizer que X determina Z de forma transitiva , Isto é, existe uma dependência funcional transitiva X para Z. cidade  estado estado  país cidade  país (cidade determina país de forma transitiva)
  • 12.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO © PROF. MARCOS ALEXANDRUK D F IRREDUTÍVEL À ESQUERDA O lado esquerdo de uma dependência funcional é irredutível à esquerda quando o determinante está na sua forma mínima , não é possível reduzir a quantidade de atributos determinantes sem perder a dependência funcional . {cidade,estado}  país (Não está na forma irredutível à esquerda*) * podemos ter somente o estado como determinante estado  país (Está na forma irredutível à esquerda) NOTA: Nem sempre estar na forma irredutível à esquerda significa possuir um determinante com apenas um atributo!
  • 13.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO © PROF. MARCOS ALEXANDRUK DEPENDÊNCIA MULTIVALORADA O valor de um atributo determina um conjunto de valores de um outro atributo. {CPF}  {nome} (um nome para cada CPF) {CPF}  {dependente} (vários dependentes para cada CPF) Uma dependência multivalorada é representada por: X  Y (X multidetermina Y ou Y é multidependente de X)
  • 14.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO © PROF. MARCOS ALEXANDRUK PARTE 1 – EXERCÍCIOS: Uma escola deseja cadastrar os alunos (idade de 7 a 12 anos). Tomando como base o seguinte conjunto {codigo,CPF,RG}, qual atributo você escolheria como Chave Primária? Por que? Como seriam chamadas as outras chaves que NÃO foram definidas como chave primária?
  • 15.
    NORMALIZAÇÃO PARTE 2:FORMAS NORMAIS 1FN – 1ª Forma Normal 2FN – 2ª Forma Normal 3FN – 3ª Forma Normal FNBC – Forma Normal de Boyce e Codd 4FN – 4ª Forma Normal 5FN – 5ª Forma Normal
  • 16.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO 1FN – Primeira Forma Normal: Os atributos da tabela não contêm grupos de repetição (tabelas aninhadas). Passando para a 1FN: A tabela a seguir NÃO está na 1FN: D F MULTIVALORADA 10/02/2005 1800 Analista Sr Claudio 1003 Beta 12 05/01/2005 1200 Analista Pl Daniela 1004 02/01/2005 1800 Analista Sr Antonio 1001 Alfa 11 DtInicio SalFunc CargoFunc NomeFunc CodFunc DescProj CodProj Projeto 10/02/2005 1800 Analista Sr Claudio 1003 12 05/01/2005 1200 Analista Pl Daniela 1004 11 02/01/2005 1800 Analista Sr Antonio 1001 11 DtInicio SalFunc CargoFunc NomeFunc CodFunc CodProj ProjFunc Beta 12 Alfa 11 DescProj CodProj Projeto
  • 17.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO 2FN – Segunda Forma Normal: Condição: Chave Primária (PK) composta por mais de uma coluna. Todas as colunas que não fazem parte da PK dependem de todas as colunas que compõem a PK. A tabela a seguir NÃO está na 2FN: Passando para a 2FN: D F IRREDUTÍVEL À ESQUERDA 10/02/2005 1800 Analista Sr Claudio 1003 12 05/01/2005 1200 Analista Pl Daniela 1004 11 02/01/2005 1800 Analista Sr Antonio 1001 11 DtInicio SalFunc CargoFunc NomeFunc CodFunc CodProj ProjFunc 10/02/2005 1003 12 05/01/2005 1004 11 02/01/2005 1001 11 DtInicio CodFunc CodProj ProjFunc 1800 Analista Sr Claudio 1003 1200 Analista Pl Daniela 1004 1800 Analista Sr Antonio 1001 SalFunc CargoFunc NomeFunc CodFunc Funcionario
  • 18.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO 3FN – Terceira Forma Normal: Não há dependências funcionais transitivas. Cada coluna não PK depende DIRETAMENTE da PK. A tabela a seguir NÃO está na 3FN: Passando para a 3FN: CodFunc  CargoFunc  SalFunc Dependência Funcional Transitiva D F TRANSITIVA 1800 Analista Sr Claudio 1003 1200 Analista Pl Daniela 1004 1800 Analista Sr Antonio 1001 SalFunc CargoFunc NomeFunc CodFunc Funcionario Analista Sr Claudio 1003 Analista Pl Daniela 1004 Analista Sr Antonio 1001 CargoFunc NomeFunc CodFunc Funcionario 1200 Analista Pl 1800 Analista Sr SalFunc CargoFunc CargoSalario
  • 19.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO FNBC – F N Boyce e Codd: Condição: Aplica-se a FNBC quando: D F NÃO TRIVIAL E IRRED. À ESQ. Encontramos duas ou mais chaves candidatas As chaves candidatas apresentam mais de um atributo (são compostas) Todas as chaves candidatas têm um atributo em comum Vamos assumir que um professor está associado a mais de uma escola e uma sala. Aluno(NomeAluno,EndAluno,NomeEscola,NrSala,NomeProf) Exemplo: Chaves Candidatas: NomeAluno + EndAluno NomeAluno + NrSala NomeAluno + NomeProf Neste exemplo: Encontramos três chaves candidatas Todas são compostas Todas compartilham um mesmo atributo Aplicando a FNBC: A tabela Aluno será dividida em duas tabelas: uma que contêm todos os atributos que descrevem o aluno e outra que contêm os atributos que designam um professor em uma determinada escola e número de sala. Aluno(NomeAluno,EndAluno,NomeEscola,NrSala) Professor(NomeEscola,NrSala,NomeProf)
  • 20.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO FNBC – F N Boyce e Codd: Condição: Aplica-se a FNBC quando: D F NÃO TRIVIAL E IRRED. À ESQ. Encontramos duas ou mais chaves candidatas As chaves candidatas apresentam mais de um atributo (são compostas) Todas as chaves candidatas têm um atributo em comum Aplicando a FNBC: A tabela Emprestimo será dividida em duas tabelas: uma que contém todos os atributos que descrevem o Emprestimo e outra que contém os atributos do Devedor (ou cliente_emprestimo). Claudia Alves C3 Beatriz Batista C2 Antonio Alves C1 NomeCli CodCli Cliente Campinas A3 Botucatu A2 Amparo A1 NomeAge CodAge Agencia 1000.00 E1 C2 A1 1500.00 E3 C3 A2 1500.00 E3 C1 A2 2000.00 E2 C2 A1 Valor NrEmp CodCli CodAge Emprestimo Valor NrEmp CodAge 1000.00 E1 A1 1500.00 E3 A2 2000.00 E2 A1 Emprestimo E3 C1 E3 C3 E2 C2 E1 C2 NrEmp CodAge Devedor
  • 21.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO 4FN – Quarta Forma Normal: Uma tabela não deve possuir mais de uma D F Multivalorada. Passando para a 4FN: A tabela a seguir NÃO está na 4FN: D F MULTIVALORADA CodProj  CodFunc CodProj  CodEquip A20 1001 12 A10 1001 12 A20 1002 11 A20 1001 11 A10 1002 11 A10 1001 11 CodEquip CodFunc CodProj ProjFuncEquip 1001 12 1002 11 1001 11 CodFunc CodProj ProjFunc A20 12 A10 12 A20 11 A10 11 CodEquip CodProj ProjEquip
  • 22.
    MODELAGEM EM BANCODE DADOS - NORMALIZAÇÃO 5FN – Quinta Forma Normal: Condição: Relacionamentos multiplos (ternários ... n-ários). NÃO está na 5FN: Está na 5FN: A tabela está na 5FN quando o seu conteúdo NÃO puder ser reconstruído Através da junção das tabelas secundárias. 1º passo: Decompor a tabela através da operação de projeção . 2º passo: Reconstruir a tabela através da junção . 2 1001 10 2 1001 20 2 1002 10 1 1001 10 Req Ped Mat MatPedReq 1001 20 1002 10 1001 10 Ped Mat MatPed 2 1001 2 1002 1 1001 Req Ped PedReq 2 20 2 10 1 10 Req Mat MatReq