Forma Normal de Boyce Codd 3 a Forma Normal

Documentos relacionados
Normalização: 3 a Forma Normal

Fernando Lobo. Base de Dados, Universidade do Algarve 1/19. Professores da disciplina. Fernando Lobo (T e P) Alvaro Barradas (P) 2/19

Dependências Funcionais

Objectivos com o Desenho de Bases de Dados Dependências funcionais 1ª Forma Normal Decomposição Forma Normal de Boyce-Codd 3ª Forma Normal

INF1383 -Bancos de Dados

Objectivos com o Desenho de Bases de Dados Dependências funcionais 1ª Forma Normal Decomposição Forma Normal de Boyce-Codd 3ª Forma Normal

. Um modelo que represente fielmente a realidade. Um modelo capaz de responder às funcionalidades que se pretendem

Forma Normal de Boyce-Codd

Uma base de dados está num estado de integridade se contém apenas dados válidos. Os dados armazenados devem estar de acordo com a realidade

Bases de Dados. Normalização. Formas Normais. 1FN : atomicidade dos atributos. 2FN : proíbe dependência parcial de chaves

Banco de Dados - INE Projeto de Banco de Dados Relacionais. Prof. Mario Dantas

Álgebra relacional. Fernando Lobo. Conjunto de operadores que permitem manipular relações: produtos cartesianos e joins.

Dependências Multi-Valor, 4 a Forma Normal

Dependências Funcionais e Formas Normais. Formas Normais Pedro Sousa 1

Bases de Dados 2012/2013 Dependências Funcionais e Normalização. Helena Galhardas 2013 IST. Bibliografia

Refinamento de Esquemas e Normalização

Operações sobre sacos. Álgebra Relacional Extendida.

GES013 Sistema de Banco de Dados Normalização de Relações em Projeto de BD (1FN a FNBC)

Conversão de modelo E/A e UML para o modelo relacional

Dependências funcionais e normalização

Redundância é a causa de vários problemas com esquemas relacionais: armazenamento redundante, anomalias de inserção, de exclusão e de atualização.

NORMALIZAÇÃO. Lílian Simão Oliveira

Bases de Dados. Parte VII Normalização

DCC/UFRJ Bancos de Dados IPedro Manoel da Silveira. Projeto de BD Relacionais. Objetivos do Projeto de BD. PMS v2bancos de Dados Relacionais 1

Técnicas de Modelação de Dados

Bases de Dados. Parte VIII: Normalização

SQL: Interrogações simples

Aula 12 BD1 Dependências Funcionais e Normalização. Profa. Elaine Faria UFU

Banco de Dados - Senado

Banco de Dados. Dependências Funcionais e Normalização de Bancos de Dados Relacionais. João Eduardo Ferreira Osvaldo Kotaro Takai Marcelo Finger

Banco de Dados I Módulo II: Modelagem Entidade- Relacionamento versus Relacional. (Aula 5) Clodis Boscarioli

GBC043 Sistemas de Banco de Dados Normalização de Relações em Projeto de BD

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

Álgebra relacional. Fernando Lobo. Base de Dados, aula 12

Base de Dados. BD 06 - Normalização. Vitor Vaz da Silva

Universidade da Beira Interior Cursos: Engenharia Informática, Ensino da Informática, Matemática Aplicada e Matemática /Informática

Conversão do modelo UML para o modelo relacional

26/03/2012. É uma restrição entre dois conjuntos de atributos do banco de dados. Definição formal: Significa que: Exemplos

Banco de Dados. Dependências Funcionais e Normalização de Bancos de Dados Relacionais. João Eduardo Ferreira Osvaldo Kotaro Takai

1FN: os atributos de uma relação têm que ser atómicos. FNBC: para qualquer dependência funcional α β numa relação, ou α β é trivial ou α é super-chave

Databases. Normalização. P. Serendero, (Todos os exercícios do aeroporto e marina são nossos)

Normalização. Anomalias Dependência e determinantes Normalização

Exame de Recurso de Base de Dados Universidade do Algarve 03/Fev/2005, (duração: 2 horas)

Normalização: Noções Básicas

Qualidade de projeto de BD relacional

Cadeira de Tecnologias de Informação. Ano lectivo 2008/09. de Tabelas

SISTEMAS DE INFORMAÇÃO

Dependência Funcional e Normalização)

Modelação Conceptual de Base de Dados

Roteiro. Normalização. BCC321 - Banco de Dados I. Ementa. Para que serve a normalização? Posicionamento

Forma Normal de Boyce-Codd

Refinamento de Esquemas e Formas Normais

Modelação Conceptual de Base de Dados

Normalização de Esquemas de Banco de Dados. Prof. Carlos Bazilio

dependência funcional é uma restrição entre 2 conjuntos de atributos de uma BDs. um esquema relacional em que os dois subconjuntos de atributos de.

Bancos (Bases) de Dados Aula #6 Dependência Funcional Dependência Multivalorada

UERJ Oscar Luiz Monteiro de Farias 1. Bancos de Dados. Mestrado em Engenharia de Computação área de concentração Geomática

Profa. Flávia Cristina Bernardini

Curso Superior de Tecnologia em BD Curso Superior de Tecnologia em DAI

Bases de Dados. Dependências funcionais. Menos tabelas com mais dados? loan_number amount L L

Introdução aos Sistemas de Bancos de Dados 1 a versão - MAC5760 DCC-IME-USP J.E.FERREIRA e O.TAKAI Terceira Forma Normal (3FN)

BA B SES DE DADOS I SES DE D LEI/2 Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2009/2010

Banco de Dados I 4 Normalização

Objetivos:

Engenharia Reversa e Normalização

Engenharia Reversa e Normalização

MySQL & PHP. MySQL & PHP ODBC ODBC/C

Das Folhas de Cálculo às Bases de Dados Relacionais

SQL: Vistas, Indices, Autorização, Restrições

Normalização. Prof. Rogério Gonçalves Bittencourt, M.Sc.

Elementos de Matemática Finita

Fundamentos de Bases de Dados e-fólio C. Resolução e Critérios de Correção

Época Normal 2º Teste Sem consulta

Modelo Relacional. Modelo Relacional. Modelo Relacional. Banco de Dados. Modelo Relacional. Modelo Relacional. Fernando Fonseca Ana Carolina

Tecnologia de Base de Dados Processo de Normalização. MSc. Eugénio Alberto Macumbe

Triggers em SQLite. Fernando Lobo. Base de Dados, Universidade do Algarve

Projeto de Bancos de Dados Relacional- Normalização. Vantagens da decomposição Normalização

Época de Recurso Sem consulta

Normalização de BD 19:08:54. Fundamentos de Banco de Dados - Normalização 1

SQL: Definição de tabelas, Modificações à Base de Dados

Views. uma view é uma tabela virtual. não existe fisicamente na BD. é definida à custa de outras tabelas ou views. CREATE VIEW <nome> AS <query>;

Banco de Dados I 2007 Módulo II: Modelagem Entidade- Relacionamento versus Relacional. (Aula 6) Clodis Boscarioli

Cadeira de Tecnologias de Informação. Normalização Relacional

Dependências Funcionais. Dependências Funcionais. Functional Dependencies. Example: FD s. Splitting Right Sides of FD s

Bases de Dados 2008/2009

Divisão e Conquista: Par de Pontos mais Próximo

António Rocha Nuno Melo e Castro

Tornou-se um padrão de fato para aplicações comerciais, devido a sua simplicidade e performance.

Banco de Dados Aula 02

Teoria e Metodologia de Projeto de Banco de Dados

Engenharia Reversa de Arquivos e Normalização

Exemplo Seja a relação Inventário (peça, departamento, cor) com. Está na FNBC (não existem dependências funcionais). Mas, existem anomalias:

Normalização de Tabelas. Prof. Antonio Almeida de Barros Junior

Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Banco de Dados I. Aula 17 - Prof. Bruno Moreno 08/11/2011

Análise de Sistemas de Informação

Época de Recurso Sem consulta

Transcrição:

Normalização: Forma Normal de Boyce Codd 3 a Forma Normal Fernando Lobo Base de Dados, Universidade do Algarve 1 / 38 Normalização O objectivo é obter esquemas relacionais sem redundância e sem anomalias. Exemplo: Filmes1( nome ano duração nomeestúdio moradaestúdio ) com DF s: nome ano duração nome ano nomeestúdio nome ano moradaestúdio nomeestúdio moradaestúdio 2 / 38

Possível instância de Filmes1 nome ano duração nomeestúdio moradaestúdio Star Wars 1977 124 Fox 10 Elm St., Los Angeles Empire Strikes Back 1980 143 Fox 10 Elm St., Los Angeles Gone With the Wind 1939 181 Paramount 44 Pine St., Los Angeles Lion King 1994 124 Disney 56 Oak St., Los Angeles Return of the Jedi 1983 165 Fox 10 Elm St., Los Angeles Pocahontas 1995 115 Disney 56 Oak St., Los Angeles 3 / 38 Problemas 1 Redundâcia a morada de um estúdio aparece repetida várias vezes. 2 Pode dar origem a anomalias em updates. ex: actualizar a morada no 1 o tuplo e não o fazer no 2 o e 5 o tuplo. 3 Pode dar origem a anomalias em deletes. ex: se apagarmos o filme Gone With the Wind, o estúdio Paramount desaparece da BD! 4 / 38

Decomposição de relações Podemos decompor o esquema de uma relação em dois esquemas mais pequenos. Dado R(A 1 A 2... A n ), podemos decompor R em 2 relações: S(B 1 B 2... B m ) e T (C 1 C 2... C k ) de tal forma que: 1 {A 1, A 2,..., A n } = {B 1, B 2,..., B m } {C 1, C 2,..., C k } 2 S = projecção de R em {B 1, B 2,..., B m } 3 T = projecção de R em {C 1, C 2,..., C k } A ideia é que possamos reconstituir a relação original juntando as relações decompostas. A junção é feita igualando os atributos com o mesmo nome. 5 / 38 Exemplo Filmes1( nome ano duração nomeestúdio moradaestúdio ) nome ano duração nomeestúdio moradaestúdio Star Wars 1977 124 Fox 10 Elm St., Los Angeles Empire Strikes Back 1980 143 Fox 10 Elm St., Los Angeles Gone With the Wind 1939 181 Paramount 44 Pine St., Los Angeles Lion King 1994 124 Disney 56 Oak St., Los Angeles Return of the Jedi 1983 165 Fox 10 Elm St., Los Angeles Pocahontas 1995 115 Disney 56 Oak St., Los Angeles Pode ser decomposto em: Filmes2( nome ano duração nomeestúdio ) Filmes3( nomeestúdio moradaestúdio ) 6 / 38

Exemplo (cont.) Filmes2: nome ano duração nomeestúdio Star Wars 1977 124 Fox Empire Strikes Back 1980 143 Fox Gone With the Wind 1939 181 Paramount Lion King 1994 124 Disney Return of the Jedi 1983 165 Fox Pocahontas 1995 115 Disney Filmes3: nomeestúdio Fox Paramount Disney moradaestúdio 10 Elm St., Los Angeles 44 Pine St., Los Angeles 56 Oak St., Los Angeles 7 / 38 Forma normal de Boyce-Codd (BCNF) Uma relação R está em BCNF sse: para todas as DF s de R não triviais X Y, X for superchave de R. Basta existir uma DF em que X não seja superchave, para R não estar em BCNF. Se isso acontecer, diz-se que essa DF viola a condição de BCNF. 8 / 38

Exemplo: Filmes1 Filmes1( nome ano duração nomeestúdio moradaestúdio ) com DF s: nome ano duração nome ano nomeestúdio nome ano moradaestúdio nomeestúdio moradaestúdio A chave é {nome,ano} porque: nome ano duração nomeestúdio moradaestúdio Filmes1 não está em BCNF porque: {nomeestúdio} não é superchave de Filmes1. nomeestúdio moradaestúdio, viola a condição BCNF. 9 / 38 Outro exemplo: Filmes2 Filmes2( nome ano duração nomeestúdio ) com DF s: nome ano duração nome ano nomeestúdio A chave é {nome,ano} porque: nome ano duração nomeestúdio Filmes2 está em BCNF porque em todas as DF s, o lado esquerdo contém a chave. {nome,ano} é superchave de Filmes2. 10 / 38

Outro exemplo: Filmes3 Filmes3( nomeestúdio moradaestúdio ) com DF s: nomeestúdio moradaestúdio A chave é {nomeestúdio} porque: nomeestúdio moradaestúdio Filmes3 está em BCNF porque {nomeestúdio} é superchave de Filmes3. 11 / 38 Possíveis instâncias de Filmes2 e Filmes3 Filmes2: nome ano duração nomeestúdio Star Wars 1977 124 Fox Empire Strikes Back 1980 143 Fox Gone With the Wind 1939 181 Paramount Lion King 1994 124 Disney Return of the Jedi 1983 165 Fox Pocahontas 1995 115 Disney Filmes3: nomeestúdio Fox Paramount Disney moradaestúdio 10 Elm St., Los Angeles 44 Pine St., Los Angeles 56 Oak St., Los Angeles 12 / 38

Decomposição de relações para BCNF Não é qualquer decomposição que resolve o problema. Exemplo: Decompor Filmes1 em: Filmes4( nome ano duração ) Filmes5( duração nomeestúdio moradaestúdio ) 13 / 38 Resultado Filmes4: nome ano duração Star Wars 1977 124 Empire Strikes Back 1980 143 Gone With the Wind 1939 181 Lion King 1994 124 Return of the Jedi 1983 165 Pocahontas 1995 115 Filmes5: duração nomeestúdio moradaestúdio 124 Fox 10 Elm St., Los Angeles 143 Fox 10 Elm St., Los Angeles 181 Paramount 44 Pine St., Los Angeles 124 Disney 56 Oak St., Los Angeles 165 Fox 10 Elm St., Los Angeles 115 Disney 56 Oak St., Los Angeles 14 / 38

Qual o problema? 1 Filmes5 continua sem estar em BCNF. 2 Mais grave: se juntarmos Filmes4 com Filmes5, vamos obter tuplos que não pertenciam à relação original! nome ano duração nomeestúdio moradaestúdio Star Wars 1977 124 Fox 10 Elm St., Los Angeles Star Wars 1977 124 Disney 56 Oak St., Los Angeles Empire Strikes Back 1980 143 Fox 10 Elm St., Los Angeles Gone With the Wind 1939 181 Paramount 44 Pine St., Los Angeles Lion King 1994 124 Disney 56 Oak St., Los Angeles Lion King 1994 124 Fox 10 Elm St., Los Angeles Return of the Jedi 1983 165 Fox 10 Elm St., Los Angeles Pocahontas 1995 115 Disney 56 Oak St., Los Angeles 15 / 38 Decomposição Lossless join Uma decomposição de R em R 1 e R 2 diz-se Lossless join se ao juntarmos os tuplos de R 1 com os tuplos de R 2 (igualando os atributos com o mesmo nome), obtivermos exactamente os tuplos de R. Ex: A decomposição de Filmes1 em Filmes2 e Filmes3 é Lossless join. Ex: A decomposição de Filmes1 em Filmes4 e Filmes5 não é Lossless join. 16 / 38

Decomposição para BCNF A ideia é usar uma DF X Y que viole a condição de BCNF. Calcula-se X +. Não dá todos os atributos, caso contrário X seria superchave. Decompõe-se R em duas relações, R 1 e R 2, com os seguintes esquemas: 1 R 1 X + 2 R 2 X (atrib(r) (X + )) 17 / 38 Graficamente R 1 atrib(r) X + X X + X R 2 R 18 / 38

Exemplo Filmes1( nome ano duração nomeestúdio moradaestúdio ) com DF s: nome ano duração nome ano nomeestúdio nomeestúdio moradaestúdio Escolhe-se uma DF que viole BCNF: nomeestúdio moradaestúdio Calcula-se: nomeestúdio + = nomeestúdio moradaestúdio Decompõe-se Filmes1 em: Filmes2( nomeestúdio moradaestúdio ) Filmes3( nome ano duração nomeestúdio ) 19 / 38 Exemplo (cont.) Necessitamos de verificar se Filmes2 e Filmes3 estão ambas em BCNF. Projecta-se as DF s de Filmes1 em Filmes2 e Filmes3. Para Filmes2 temos: nome ano duração nome ano nomeestúdio {nome,ano} é chave de Filmes2 Filmes2 está em BCNF. Para Filmes3 temos: nomeestúdio moradaestúdio {nomeestúdio} é chave de Filmes3 Filmes3 está em BCNF. 20 / 38

Outro exemplo F 1 ( nome ano nomeestúdio nomepresidente moradapresidente ) com DF s: nome ano nomeestúdio // DF 1 nomeestúdio nomepresidente // DF 2 nomepresidente moradapresidente // DF 3 Chave é {nome,ano}. Porquê? DF s 2 e 3 violam BCNF. Vamos decompor usando DF 2. nomeestúdio + = {nomeestúdio,nomepresidente,moradapresidente} Decompomos F 1 em F 2 e F 3 : F 2 ( nomeestúdio nomepresidente moradapresidente ) F3 ( nome ano nomeestúdio ) 21 / 38 Outro exemplo (cont.) Agora é necessário ver se F 2 e F 3 estão em BCNF. Projecta-se as DF s de F 1 em F 2 e F 3. Para F 2 : nomeestúdio nomepresidente nomepresidente moradapresidente chave é {nomeestúdio}. nomepresidente moradapresidente, viola BCNF. é necessário decompor F2 em F 4 e F 5. Para F 3 : nome ano nomeestúdio chave é {nome,ano}. F 3 está em BCNF. 22 / 38

Outro exemplo (cont.) Decomposição de F 2 em F 4 e F 5. F 2 ( nomeestúdio nomepresidente moradapresidente ) DF s: nomeestúdio nomepresidente nomepresidente moradapresidente nomepresidente + = {nomepresidente,moradapresidente} F 4 ( nomepresidente moradapresidente ) DF s: nomepresidente moradapresidente. {nomepresidente} é chave. F4 está em BCNF. F 5 ( nomeestúdio nomepresidente ) DF s: nomeestúdio nomepresidente. {nomeestúdio} é chave. F5 está em BCNF. 23 / 38 Em resumo F 1 ( nome ano nomeestúdio nomepresidente moradapresidente ) com DF s: nome ano nomeestúdio nomeestúdio nomepresidente nomepresidente moradapresidente Foi decomposto em F 3, F 4, F 5 : F 3 ( nome ano nomeestúdio ) F 4 ( nomepresidente moradapresidente ) F 5 ( nomeestúdio nomepresidente ) 24 / 38

Decomposição para BCNF A decomposição baseada na utilização de uma DF que viole a condição de BCNF, é sempre lossless join. Qualquer relação com apenas 2 atributos está sempre em BCNF. Tentem prová-lo. 25 / 38 3 a Forma Normal: Motivação Por vezes a decomposição para BCNF não preserva as DF s da relação original. Nesses casos, não devemos decompor para BCNF. A situação ocorre tipicamente quando temos DF s com a seguinte estrutura: XY Z Z Y 26 / 38

Exemplo CartazFilmes( filme, cinema, cidade ) cinema cinema onde o filme passa (ex: Forum Algarve). cidade cidade onde se encontra o cinema. Vamos supor que na mesma cidade não pode passar o mesmo filme em cinemas diferentes. Vamos também supor que um cinema pode ter várias salas. DF s: cinema cidade filme cidade cinema 27 / 38 Exemplo (cont.) CartazFilmes tem 2 chaves {filme,cidade} {cinema,filme} cinema cidade, viola BCNF. Somos tentados a decompor CartazFilmes. Obteríamos: Cartaz1 (cinema,cidade), com DF s: cinema cidade Cartaz2 (filme,cinema), com DF s: {} Mas não conseguimos satisfazer a DF filme cidade cinema em nenhuma das relações resultantes da decomposição! 28 / 38

Exemplo (cont.) É possível haver instâncias de Cartaz 1 e Cartaz 2 que satisfaçam as respectivas DF s (i.e., cinema cidade) Mas que a junção viole a DF original: filme cidade cinema. 29 / 38 Exemplo (cont.) Cartaz 1 : cinema Forum Algarve Santo António cidade Faro Faro Cartaz 2 : filme Jesse James Jesse James cinema Forum Algarve Santo António Cartaz 1 Cartaz 2 : cinema cidade filme Forum Algarve Faro Jesse James Santo António Faro Jesse James 30 / 38

3 a Forma Normal A 3 a Forma Normal (3FN) relaxa a condição de BCNF. Uma relação R está na 3FN se para todas as DF s não triviais X Y, se verificar que: X é superchave de R, ou Y é membro de uma chave de R Se R está em BCNF R está em 3FN 31 / 38 Exemplo CartazFilmes( filme, cinema, cidade ) com DF s: cinema cidade filme cidade cinema está na 3FN porque cidade faz parte de uma chave. recordem-se que havia 2 chaves: {filme,cidade} e {cinema,filme}. 32 / 38

Propriedades importantes de uma decomposição Duas propriedades que uma decomposição deve obedecer: 1 Lossless join: ser possível reconstituir a relação original a partir das relações decompostas. 2 Preservação de dependências: ser possível verificar as DF s originais nas relações decompostas. BCNF garante (1). 3FN garante (1) e (2). 33 / 38 Decomposição para a 3FN Objectivo: Decompor uma relação R num conjunto de relações que estejam todas na 3FN. A decomposição terá a propriedade Lossless join e também irá preservar as dependências funcionais. 34 / 38

Algoritmo de decomposição para a 3FN Input: uma relação R com um conjunto de DF s F. Output: uma decomposição de R num conjunto de relações, todas elas na 3FN. Método: 1 G = base mínima para F. 2 Para cada DF X A em G, usar XA como esquema de uma das relações decompostas. 3 Se nenhum dos esquemas resultantes do passo (2) for uma superchave de R, acrescentar uma relação cujo esquema seja uma chave de R. 35 / 38 Exemplo R(ABCDE) com DF s AB C, C B, e A D. 1 As DF s dadas são uma base mínima (ver justificação nos próximos slides). 2 Obtemos as relações R 1 (ABC), R 2 (BC), R 3 (AD). (R 2 pode ser eliminada porque o seu esquema está contido no esquema de R 1 ). 3 R tem duas chaves: ABE e ACE. Temos de acrescentar uma delas, por exemplo R 4 (ABE). 36 / 38

Exemplo (cont.) Justificação para {AB C, C B, A D} ser uma base mínima. 1 O lado direito de todas as DFs só tem 1 atributo. 2 Não conseguimos inferir nenhuma das DF s a partir das outras duas. Verificação: será que AB C pode ser inferido de {C B, A D}? calcular (AB) + usando {C B, A D}. (AB) + = ABD. AB C não pode ser inferido de {C B, A D}. fazer verificação análoga para provar que: C B não pode ser inferido de {AB C, A D}. A D não pode ser inferido de {AB C, C B}. 37 / 38 Exemplo (cont.) Justificação para {AB C, C B, A D} ser uma base mínima. 3. não conseguimos eliminar atributos do lado esquerdo de nenhuma DF e continuar a ter uma base. a única hipótese seria eliminar A ou B em AB C. se eliminarmos A, temos de demonstrar que B C não pode ser inferido a partir de {AB C, C B, A D}. B + = B. fazer verificação análoga para o caso de eliminarmos B. 38 / 38