MODELAGEM EM BANCO DE DADOS NORMALIZAÇÃO Prof. Marcos Alexandruk UNINOVE MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 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 © PROF. MARCOS ALEXANDRUK MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 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 © PROF. MARCOS ALEXANDRUK 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 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 © PROF. MARCOS ALEXANDRUK MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO CHAVES Chave primária: Escolhida entre as chaves candidatas para ser o identificador principal da tabela. (PK – Primary Key) © PROF. MARCOS ALEXANDRUK MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO CHAVES Chaves alternativas: São as chaves candidatas que não foram definidas como chaves primárias. © PROF. MARCOS ALEXANDRUK MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO CHAVES Chave estrangeira: Atributo ou conjunto de atributos que faz a ligação com a chave primária de outra tabela. (FK – Foreign Key) © PROF. MARCOS ALEXANDRUK MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 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) © PROF. MARCOS ALEXANDRUK MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 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. © PROF. MARCOS ALEXANDRUK MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 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) © PROF. MARCOS ALEXANDRUK MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 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! © PROF. MARCOS ALEXANDRUK MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 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) © PROF. MARCOS ALEXANDRUK MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO PARTE 1 – EXERCÍCIOS: 1. 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? 2. Como seriam chamadas as outras chaves que NÃO foram definidas como chave primária? © PROF. MARCOS ALEXANDRUK 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: D F MULTIVALORADA Os atributos da tabela não contêm grupos de repetição (tabelas aninhadas). A tabela a seguir NÃO está na 1FN: Projeto CodProj DescProj 11 Alfa 12 Beta CodFunc NomeFunc CargoFunc SalFunc DtInicio 1001 Antonio Analista Sr 1800 02/01/2005 1004 Daniela Analista Pl 1200 05/01/2005 1003 Claudio Analista Sr 1800 10/02/2005 Passando para a 1FN: ProjFunc CodProj CodFunc NomeFunc CargoFunc Projeto SalFunc DtInicio CodProj DescProj 11 1001 Antonio Analista Sr 1800 02/01/2005 11 Alfa 11 1004 Daniela Analista Pl 1200 05/01/2005 12 Beta 12 1003 Claudio Analista Sr 1800 10/02/2005 MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 2FN – Segunda Forma Normal: D F IRREDUTÍVEL À ESQUERDA 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: ProjFunc CodProj CodFunc NomeFunc CargoFunc SalFunc DtInicio 11 1001 Antonio Analista Sr 1800 02/01/2005 11 1004 Daniela Analista Pl 1200 05/01/2005 12 1003 Claudio Analista Sr 1800 10/02/2005 Passando para a 2FN: Funcionario CodFunc NomeFunc 1001 Antonio 1004 1003 CargoFunc ProjFunc SalFunc CodProj CodFunc Analista Sr 1800 11 1001 02/01/2005 Daniela Analista Pl 1200 11 1004 05/01/2005 Claudio Analista Sr 1800 12 1003 10/02/2005 DtInicio MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 3FN – Terceira Forma Normal: D F TRANSITIVA 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: Funcionario CodFunc NomeFunc CargoFunc SalFunc 1001 Antonio Analista Sr 1800 1004 Daniela Analista Pl 1200 1003 Claudio Analista Sr 1800 CodFunc CargoFunc SalFunc Dependência Funcional Transitiva Passando para a 3FN: Funcionario CargoSalario CodFunc NomeFunc CargoFunc CargoFunc SalFunc 1001 Antonio Analista Sr Analista Sr 1800 1004 Daniela Analista Pl Analista Pl 1200 1003 Claudio Analista Sr MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO FNBC – F N Boyce e Codd: D F NÃO TRIVIAL E IRRED. À ESQ. Condição: Aplica-se a FNBC quando: 1. Encontramos duas ou mais chaves candidatas 2. As chaves candidatas apresentam mais de um atributo (são compostas) 3. Todas as chaves candidatas têm um atributo em comum Exemplo: Vamos assumir que um professor está associado a mais de uma escola e uma sala. Aluno(NomeAluno,EndAluno,NomeEscola,NrSala,NomeProf) Chaves Candidatas: Neste exemplo: NomeAluno + EndAluno NomeAluno + NrSala NomeAluno + NomeProf 1. Encontramos três chaves candidatas 2. Todas são compostas 3. 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 4FN – Quarta Forma Normal: D F MULTIVALORADA Uma tabela não deve possuir mais de uma D F Multivalorada. A tabela a seguir NÃO está na 4FN: ProjFuncEquip CodProj CodFunc CodEquip 11 1001 A10 11 1002 A10 11 1001 A20 11 1002 A20 12 1001 A10 12 1001 A20 CodProj CodFunc CodProj CodEquip Passando para a 4FN: ProjFunc CodProj CodFunc 11 1001 11 1002 12 1001 ProjEquip CodProj CodEquip 11 A10 11 A20 12 A10 12 A20 MODELAGEM EM BANCO DE DADOS - NORMALIZAÇÃO 5FN – Quinta Forma Normal: Condição: Relacionamentos multiplos (ternários ... n-ários). 1º passo: Decompor a tabela através da operação de projeção. 2º passo: Reconstruir a tabela através da junção. 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. NÃO está na 5FN: Mat 10 10 20 10 MatPedReq Ped 1001 1002 1001 1001 Req 1 2 2 2 Está na 5FN: MatPed Mat Ped 10 1001 10 1002 20 1001 PedReq Ped Req 1001 1 1002 2 1001 2 MatReq Mat Req 10 1 10 2 20 2