MODELAGEM EM BANCO DE DADOS NORMALIZAÇÃO Prof. Marcos Alexandruk UNINOVE
NORMALIZAÇÃO Conceito introduzido em 1970 por E. F. Codd (1FN) 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
OBJETIVOS PRINCIPAIS Garantir a integridade dos dados, evitando que 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
PARTE 1: CONCEITOS ÚTEIS NORMALIZAÇÃO PARTE 1: CONCEITOS ÚTEIS Chaves Dependência Funcional (DF) Trivialidade Transitividade D F Irredutível à Esquerda Dependência Multivalorada
CHAVES Chave candidata: atributo ou conjunto de atributos 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
CHAVES Chave primária: Escolhida entre as chaves candidatas 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
CHAVES Chaves alternativas: São as chaves candidatas que 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
CHAVES Chave estrangeira: Atributo ou conjunto de atributos 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
DEPENDÊNCIA FUNCIONAL (DF) 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
TRIVIALIDADE A dependência funcional trivial indica que um 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
TRANSITIVIDADE Se um atributo X determina Y e se Y determina Z, 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
D F IRREDUTÍVEL À ESQUERDA 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
DEPENDÊNCIA MULTIVALORADA 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: 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? © PROF. MARCOS ALEXANDRUK
NORMALIZAÇÃO PARTE 2: FORMAS NORMAIS 1FN – 1ª Forma Normal FNBC – Forma Normal de Boyce e Codd 4FN – 4ª Forma Normal 5FN – 5ª Forma Normal
1FN – Primeira 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 CodFunc NomeFunc CargoFunc SalFunc DtInicio 11 Alfa 1001 Antonio Analista Sr 1800 02/01/2005 1004 Daniela Analista Pl 1200 05/01/2005 12 Beta 1003 Claudio 10/02/2005 Passando para a 1FN: ProjFunc CodProj CodFunc NomeFunc CargoFunc SalFunc DtInicio 11 1001 Antonio Analista Sr 1800 02/01/2005 1004 Daniela Analista Pl 1200 05/01/2005 12 1003 Claudio 10/02/2005 Projeto CodProj DescProj 11 Alfa 12 Beta
2FN – Segunda Forma Normal: 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 1004 Daniela Analista Pl 1200 05/01/2005 12 1003 Claudio 10/02/2005 Passando para a 2FN: Funcionario CodFunc NomeFunc CargoFunc SalFunc 1001 Antonio Analista Sr 1800 1004 Daniela Analista Pl 1200 1003 Claudio ProjFunc CodProj CodFunc DtInicio 11 1001 02/01/2005 1004 05/01/2005 12 1003 10/02/2005
3FN – Terceira Forma Normal: 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 CodFunc CargoFunc SalFunc Dependência Funcional Transitiva Passando para a 3FN: Funcionario CodFunc NomeFunc CargoFunc 1001 Antonio Analista Sr 1004 Daniela Analista Pl 1003 Claudio CargoSalario CargoFunc SalFunc Analista Sr 1800 Analista Pl 1200
FNBC – F N Boyce e Codd: Condição: Aplica-se a FNBC quando: 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: 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 Exemplo: Vamos assumir que um professor está associado a mais de uma escola e uma sala. Aluno(NomeAluno,EndAluno,NomeEscola,NrSala,NomeProf) 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)
4FN – Quarta Forma Normal: 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 1002 A20 12 CodProj CodFunc CodProj CodEquip Passando para a 4FN: ProjFunc CodProj CodFunc 11 1001 1002 12 ProjEquip CodProj CodEquip 11 A10 A20 12
5FN – Quinta Forma Normal: 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: Está na 5FN: MatPedReq Mat Ped Req 10 1001 1 1002 2 20 MatPed Mat Ped 10 1001 1002 20 PedReq Ped Req 1001 1 1002 2 MatReq Mat Req 10 1 2 20