SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
Bases de dados: Integridade referencial e
Normalização
Carlos Santos
LabMM 4 - NTC - DeCA - UA
Aula 09, 14-03-2013
Erros comuns na integridade dos dados

Erros tipográficos na introdução dos dados

Erros na introdução de dados num campo, cujo conjunto de valores
possíveis deveria estar bem delimitado (escolher um país da lista de países)

  • Na BD poder-se-ão usar tipos de dados como o SET e ENUM ou tabelas
    dicionário

Erros entre os dados introduzidos em diferentes campos

  • Exemplo: todas as datas relacionadas com a vida de um indivíduo têm de
    ser posteriores à data do seu nascimento

Prevenir ou minorar os efeitos destes erros com:

  • HTML/JavaScript
  • PHP
  • MySQL
Integridade referencial

A integridade referencial implica que se deva garantir que todos os
valores atribuídos à FK (tabela de chegada) existam do lado da PK (tabela
de partida)



No mySQL, o motor InnoDB, com o seu suporte a chaves estrangeiras, já
implementa mecanismos de preservação da integridade referencial da BD

Existe no entanto um “problema”:

  • Quando um registo da tabela de partida (do lado da PK) é removido o que
    deve acontecer ao(s) registo(s) na tabela de chegada (do lado da 
 FK) que
    o referenciava(m)?
Integridade referencial

Removendo na tabela CLIENTES, o registo onde a PK toma o valor 2 o que
acontecerá aos registos na tabela ENCOMENDAS onde a FK toma esse
valor?

         CLIENTES                                         ENCOMENDAS
  idCLIENTES      Nome       idENCOMENDAS   DataEncomenda DataPagamento CLIENTES_idCLIENTES
       1           João            1          2008-­‐02-­‐23    2008-­‐01-­‐25   1
       2          Maria            2          2008-­‐04-­‐11    2008-­‐02-­‐23   2
       3          Manuel           3          2008-­‐03-­‐13    2008-­‐03-­‐23   2
                                   4          2008-­‐05-­‐21    2008-­‐04-­‐23   3
                                   5          2008-­‐06-­‐25    2008-­‐08-­‐23   2




Em muitos casos não se removem registos! Os registos “removidos” são
guardados num estado de inactivos/invisíveis.

Solução: Adicionar coluna extra à tabela (estado: activo/inactivo, 0/1)
Integridade referencial

No Workbench, no separador Foreign Keys da tabela de chegada (do lado
da FK), devem configurar-se as Foreign Key Options

Isso permite decidir o que acontece na tabela de chegada, quando se
actualiza/apaga um registo na tabela de partida (do lado da PK)
Foreign Key Options [Foreign Key Constraints]

RESTRICT

  • Não é permitido atualizar/apagar um registo na tabela de partida se este
    tiver registos relacionados na tabela de chegada

NO ACTION
  • Funcionamento idêntico ao RESTRICT

CASCADE
  • Ao atualizar/apagar um registo na tabela de partida essa operação é
    executada também nos registos relacionados na tabela de chegada
SET NULL

  • Ao actualizar/apagar um registo na tabela de partida, são colocados a
    NULL os valores da chave estrangeira nos registos relacionados (isto só é
    possível, se a definição da FK o permitir, por exemplo, se não tiver sido
    parametrizada com o NOT NULL)
CASCADE DELETE

Resultados potencialmente catastróficos para a base de dados!

  • Imaginemos um cenário de uma BD para uma loja que só tem um
    vendedor e que está associado a todas as vendas efetuadas.
     • Se todas as relações da BD estiverem com CASCADE DELETE, o que
       acontece se o vendedor for apagado?
E se for uma actualização do valor da chave
primária?

Os mecanismos que permitem definir como reagir ao evento de apagar
existem também para o evento de actualizar.
Normalização

Processo de organizar os campos e tabelas de uma base de dados
relacional de modo a minimizar a redundância e dependência dos dados
  • é essencial para que se possa tirar partido do SQL

Objetivos:
  • libertar a BD de anomalias de edição
  • minimizar necessidades de redesenho da BD quando é necessário
    estender a sua implementação
  • tornar o modelo de dados mais informativo para os utilizadores
  • evitar tendência do modelo relativamente a um determinado padrão de
    queries

(http://en.wikipedia.org/wiki/Database_normalization)
Primeira regra de normalização (First normal form)

Eliminação de grupos repetitivos:

  • A primeira regra de normalização envolve a eliminação de grupos
    repetitivos dentro de um qualquer campo.

                                  ENCOMENDAS


     NrEncom   DataEncomenda   DataPagamento     Produto      Quantidade


                                               Mesa de Sala      1
        1        12-09-2000      12-09-2000       Sofá           2
                                                 Cadeira         12

                                                 Cadeira          2
        2        30-08-2001      11-12-2001
                                                Aparador          1

        3        21-01-2000      24-01-2000       Sofá            3
Segunda regra de normalização
(Second normal form)

Eliminação de dados redundantes (na tabela):

  • a primeira regra de normalização tem que ser respeitada;
  • todos os campos que não fazem parte da chave primária são
    funcionalmente dependentes da totalidade da chave primária; isto é, não
    podem existir campos que são dependentes apenas de uma parte da
    chave primária.

                            ENCOM_PROD
     NrEncom   ID_Produto         Produto      Quantidade
        1          1              Cadeira         12
        1          2            Mesa de Sala       1
        2          3             Aparador          2

  • Neste caso, o campo “Produto” é dependente do campo “ID_Produto”
    que é apenas uma parte da chave primária, logo a tabela não se encontra
    de acordo com a segunda regra de normalização.
Terceira regra de normalização (Third normal form)

Eliminação de campos que não são dependente das chaves:

  • a segunda regra de normalização tem que ser respeitada;
  • todos os campos que não são chaves têm que ser independentes entre si.
    Ou seja, para os campos que não são chaves, o valor de uma dado
    campo não pode depender do valor de outro campo.
                            VENDEDOR
    NrVendedor   Nome       Apelido    CodPostal    Localidade
        1        João       Tomás         3810        Aveiro
        1        Maria      Costa         3830        Ílhavo
        2        Manuel     Ribeiro       1000       Lisboa
  • Neste caso, o campo “Localidade” é dependente do campo “CodPostal”,
    logo a tabela não se encontra de acordo com a terceira regra de
    normalização.
  • Por vezes, em situações práticas, pode ser conveniente não aplicar
    totalmente esta regra de normalização....
  • Campos calculados também são “proibidos” por esta regra.
Regras de normalização

Mais regras de normalização:

  • Boyce/Codd Normal Form
  • Quarta regra de normalização (Fourth normal form)
  • Quinta regra de normalização (Fifth normal form)
  • Domain Key/Normal Form
  • ...

Estas regras raramente têm que ser aplicadas porque só fazem sentido
em situações muito complexas que raramente são encontradas no mundo
real.
Desnormalização

Em condições específicas deve ser realizada, por exemplo, para melhorar
a performance...
E a seguir?

SQL vs noSQL




Mini-teste e... PHP

Weitere ähnliche Inhalte

Was ist angesagt?

Modelagem relacional e normalização de dados
Modelagem relacional e normalização de dadosModelagem relacional e normalização de dados
Modelagem relacional e normalização de dados
julianaveregue
 
Junções e subconsultas
Junções e subconsultasJunções e subconsultas
Junções e subconsultas
julianaveregue
 
Normalização de Banco de Dados
Normalização de Banco de DadosNormalização de Banco de Dados
Normalização de Banco de Dados
elliando dias
 

Was ist angesagt? (19)

Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentos
 
Banco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de DadosBanco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de Dados
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQL
 
[Certificacao ] normalizacao de dados e as formas normais
[Certificacao ]  normalizacao de dados e as formas normais[Certificacao ]  normalizacao de dados e as formas normais
[Certificacao ] normalizacao de dados e as formas normais
 
Aula5 normalização
Aula5   normalizaçãoAula5   normalização
Aula5 normalização
 
Consultas SQL
Consultas SQLConsultas SQL
Consultas SQL
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumo
 
Modelagem relacional e normalização de dados
Modelagem relacional e normalização de dadosModelagem relacional e normalização de dados
Modelagem relacional e normalização de dados
 
Junções e subconsultas
Junções e subconsultasJunções e subconsultas
Junções e subconsultas
 
03 LabMM4 - Bases de dados
03 LabMM4 - Bases de dados03 LabMM4 - Bases de dados
03 LabMM4 - Bases de dados
 
Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
 
Normalização de Banco de Dados
Normalização de Banco de DadosNormalização de Banco de Dados
Normalização de Banco de Dados
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)
 
Hands on Labs - SQL Server 2008
Hands on Labs - SQL Server 2008Hands on Labs - SQL Server 2008
Hands on Labs - SQL Server 2008
 
Fundamentos de SQL - Parte 5 de 8
Fundamentos de SQL - Parte 5 de 8Fundamentos de SQL - Parte 5 de 8
Fundamentos de SQL - Parte 5 de 8
 

Ähnlich wie LabMM4 (T09 - 12/13) - Integridade referencial e normalização

07 LabMM4 - Bases de dados
07 LabMM4 - Bases de dados07 LabMM4 - Bases de dados
07 LabMM4 - Bases de dados
Carlos Santos
 

Ähnlich wie LabMM4 (T09 - 12/13) - Integridade referencial e normalização (15)

07 LabMM4 - Bases de dados
07 LabMM4 - Bases de dados07 LabMM4 - Bases de dados
07 LabMM4 - Bases de dados
 
BD I - Aula 15 C - Manutencao de tabelas
BD I - Aula 15 C - Manutencao de tabelasBD I - Aula 15 C - Manutencao de tabelas
BD I - Aula 15 C - Manutencao de tabelas
 
SQL.ppt
SQL.pptSQL.ppt
SQL.ppt
 
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
 
Introdução ao Projeto de Experimentos
Introdução ao Projeto de ExperimentosIntrodução ao Projeto de Experimentos
Introdução ao Projeto de Experimentos
 
Teorica 10
Teorica 10Teorica 10
Teorica 10
 
Programação em Banco de Dados - Aula 16/08/2018
Programação em Banco de Dados - Aula 16/08/2018Programação em Banco de Dados - Aula 16/08/2018
Programação em Banco de Dados - Aula 16/08/2018
 
115 Br Ri Ug Ptb
115 Br Ri Ug Ptb115 Br Ri Ug Ptb
115 Br Ri Ug Ptb
 
Basesdedados
BasesdedadosBasesdedados
Basesdedados
 
Modulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptxModulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptx
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sql
 
SGBD - ORACLE - JAVA
SGBD - ORACLE - JAVASGBD - ORACLE - JAVA
SGBD - ORACLE - JAVA
 
Tipos de dados do MySQL 5
Tipos de dados do MySQL 5Tipos de dados do MySQL 5
Tipos de dados do MySQL 5
 
09 b sala de recursos
09 b sala de recursos09 b sala de recursos
09 b sala de recursos
 
06 b professores copa
06 b professores copa06 b professores copa
06 b professores copa
 

Mehr von Carlos Santos

AVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosAVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunos
Carlos Santos
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativo
Carlos Santos
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e Scoreoid
Carlos Santos
 
T19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoT19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificação
Carlos Santos
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)
Carlos Santos
 

Mehr von Carlos Santos (20)

Is AI the Spice of our future?
Is AI the Spice of our future?Is AI the Spice of our future?
Is AI the Spice of our future?
 
Mentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesMentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantes
 
1º Encontro Científico TCEdu
1º Encontro Científico TCEdu1º Encontro Científico TCEdu
1º Encontro Científico TCEdu
 
Tecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialTecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicial
 
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosAVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
 
AVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosAVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunos
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
 
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
 
Tecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoTecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho prático
 
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
 
SAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentSAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning Environment
 
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusRepensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
 
A technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectA technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus project
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativo
 
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCARepensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e Scoreoid
 
T19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoT19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificação
 
T18_LM3: Ajax
T18_LM3: AjaxT18_LM3: Ajax
T18_LM3: Ajax
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)
 

Kürzlich hochgeladen

19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 

Kürzlich hochgeladen (20)

Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
Poesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptxPoesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptx
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptxCópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
Cópia de AULA 2- ENSINO FUNDAMENTAL ANOS INICIAIS - LÍNGUA PORTUGUESA.pptx
 

LabMM4 (T09 - 12/13) - Integridade referencial e normalização

  • 1. Bases de dados: Integridade referencial e Normalização Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 09, 14-03-2013
  • 2. Erros comuns na integridade dos dados Erros tipográficos na introdução dos dados Erros na introdução de dados num campo, cujo conjunto de valores possíveis deveria estar bem delimitado (escolher um país da lista de países) • Na BD poder-se-ão usar tipos de dados como o SET e ENUM ou tabelas dicionário Erros entre os dados introduzidos em diferentes campos • Exemplo: todas as datas relacionadas com a vida de um indivíduo têm de ser posteriores à data do seu nascimento Prevenir ou minorar os efeitos destes erros com: • HTML/JavaScript • PHP • MySQL
  • 3. Integridade referencial A integridade referencial implica que se deva garantir que todos os valores atribuídos à FK (tabela de chegada) existam do lado da PK (tabela de partida) No mySQL, o motor InnoDB, com o seu suporte a chaves estrangeiras, já implementa mecanismos de preservação da integridade referencial da BD Existe no entanto um “problema”: • Quando um registo da tabela de partida (do lado da PK) é removido o que deve acontecer ao(s) registo(s) na tabela de chegada (do lado da FK) que o referenciava(m)?
  • 4. Integridade referencial Removendo na tabela CLIENTES, o registo onde a PK toma o valor 2 o que acontecerá aos registos na tabela ENCOMENDAS onde a FK toma esse valor? CLIENTES ENCOMENDAS idCLIENTES Nome idENCOMENDAS DataEncomenda DataPagamento CLIENTES_idCLIENTES 1 João 1 2008-­‐02-­‐23 2008-­‐01-­‐25 1 2 Maria 2 2008-­‐04-­‐11 2008-­‐02-­‐23 2 3 Manuel 3 2008-­‐03-­‐13 2008-­‐03-­‐23 2 4 2008-­‐05-­‐21 2008-­‐04-­‐23 3 5 2008-­‐06-­‐25 2008-­‐08-­‐23 2 Em muitos casos não se removem registos! Os registos “removidos” são guardados num estado de inactivos/invisíveis. Solução: Adicionar coluna extra à tabela (estado: activo/inactivo, 0/1)
  • 5. Integridade referencial No Workbench, no separador Foreign Keys da tabela de chegada (do lado da FK), devem configurar-se as Foreign Key Options Isso permite decidir o que acontece na tabela de chegada, quando se actualiza/apaga um registo na tabela de partida (do lado da PK)
  • 6. Foreign Key Options [Foreign Key Constraints] RESTRICT • Não é permitido atualizar/apagar um registo na tabela de partida se este tiver registos relacionados na tabela de chegada NO ACTION • Funcionamento idêntico ao RESTRICT CASCADE • Ao atualizar/apagar um registo na tabela de partida essa operação é executada também nos registos relacionados na tabela de chegada SET NULL • Ao actualizar/apagar um registo na tabela de partida, são colocados a NULL os valores da chave estrangeira nos registos relacionados (isto só é possível, se a definição da FK o permitir, por exemplo, se não tiver sido parametrizada com o NOT NULL)
  • 7. CASCADE DELETE Resultados potencialmente catastróficos para a base de dados! • Imaginemos um cenário de uma BD para uma loja que só tem um vendedor e que está associado a todas as vendas efetuadas. • Se todas as relações da BD estiverem com CASCADE DELETE, o que acontece se o vendedor for apagado?
  • 8. E se for uma actualização do valor da chave primária? Os mecanismos que permitem definir como reagir ao evento de apagar existem também para o evento de actualizar.
  • 9. Normalização Processo de organizar os campos e tabelas de uma base de dados relacional de modo a minimizar a redundância e dependência dos dados • é essencial para que se possa tirar partido do SQL Objetivos: • libertar a BD de anomalias de edição • minimizar necessidades de redesenho da BD quando é necessário estender a sua implementação • tornar o modelo de dados mais informativo para os utilizadores • evitar tendência do modelo relativamente a um determinado padrão de queries (http://en.wikipedia.org/wiki/Database_normalization)
  • 10. Primeira regra de normalização (First normal form) Eliminação de grupos repetitivos: • A primeira regra de normalização envolve a eliminação de grupos repetitivos dentro de um qualquer campo. ENCOMENDAS NrEncom DataEncomenda DataPagamento Produto Quantidade Mesa de Sala 1 1 12-09-2000 12-09-2000 Sofá 2 Cadeira 12 Cadeira 2 2 30-08-2001 11-12-2001 Aparador 1 3 21-01-2000 24-01-2000 Sofá 3
  • 11. Segunda regra de normalização (Second normal form) Eliminação de dados redundantes (na tabela): • a primeira regra de normalização tem que ser respeitada; • todos os campos que não fazem parte da chave primária são funcionalmente dependentes da totalidade da chave primária; isto é, não podem existir campos que são dependentes apenas de uma parte da chave primária. ENCOM_PROD NrEncom ID_Produto Produto Quantidade 1 1 Cadeira 12 1 2 Mesa de Sala 1 2 3 Aparador 2 • Neste caso, o campo “Produto” é dependente do campo “ID_Produto” que é apenas uma parte da chave primária, logo a tabela não se encontra de acordo com a segunda regra de normalização.
  • 12. Terceira regra de normalização (Third normal form) Eliminação de campos que não são dependente das chaves: • a segunda regra de normalização tem que ser respeitada; • todos os campos que não são chaves têm que ser independentes entre si. Ou seja, para os campos que não são chaves, o valor de uma dado campo não pode depender do valor de outro campo. VENDEDOR NrVendedor Nome Apelido CodPostal Localidade 1 João Tomás 3810 Aveiro 1 Maria Costa 3830 Ílhavo 2 Manuel Ribeiro 1000 Lisboa • Neste caso, o campo “Localidade” é dependente do campo “CodPostal”, logo a tabela não se encontra de acordo com a terceira regra de normalização. • Por vezes, em situações práticas, pode ser conveniente não aplicar totalmente esta regra de normalização.... • Campos calculados também são “proibidos” por esta regra.
  • 13. Regras de normalização Mais regras de normalização: • Boyce/Codd Normal Form • Quarta regra de normalização (Fourth normal form) • Quinta regra de normalização (Fifth normal form) • Domain Key/Normal Form • ... Estas regras raramente têm que ser aplicadas porque só fazem sentido em situações muito complexas que raramente são encontradas no mundo real.
  • 14. Desnormalização Em condições específicas deve ser realizada, por exemplo, para melhorar a performance...
  • 15. E a seguir? SQL vs noSQL Mini-teste e... PHP