SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
Bases de dados: Auto-associações,
especialização/generalização e integridade
referencial
Carlos Santos
LabMM 4 - NTC - DeCA - UA
Aula 07, 08-03-2012
Auto-associações

Pretende-se modelar a seguinte situação numa BD:

  • Num escritório os funcionários possuem (ou não) um superior hierárquico
     • Cada funcionário pode ter um único superior hierárquico
     • Cada superior hierárquico pode coordenar vários funcionários

Como modelar esta relação numa BD?



            Funcionarios
         idFuncionarios
         Nome
Auto-associações

Como a FK pode admitir valores nulos e valores repetidos

  • Um funcionário pode ser superior hierárquico de vários outros
  • Podem existir funcionários sem superior hierárquico

Se a FK não permitir valores nulos (NOT NULL)
  • Não podem existir funcionários sem superior hierárquico

Se FK não permitir valores repetidos (UNIQUE)
  • Cada funcionário só pode ser superior hierárquico de um único funcionário
  • (a relação transforma-se numa 1:1)
Auto-associações (solução alternativa)

Utilizar uma tabela de relação com duas chaves estrangeiras que apontam
para a mesma chave primária!

Cada uma das FK não admite valores nulos por ser parte duma chave
primária composta. No entanto:

  • Funcionarios_idFuncionarios e Funcionarios_idFuncionarios1 podem
    ser configuradas com o parâmetro UNIQUE para evitar os valores
    repetidos em cada uma das colunas
Auto-associações (solução alternativa)




Diferentes possibilidades:

  • M:M - Se as duas FK admitirem valores repetidos (em cada uma das
    colunas)
  • 1:M - Se apenas uma das FK admitir valores repetidos
  • 1:1 - Se nenhuma das FK admitir valores repetidos
Especialização/Generalização

Numa biblioteca pretende-se catalogar os vários tipo de publicações
(livros/monografias) e (revistas/periódicos) com um sistema de
numeração único
                        Tabela de generalização




                       Tabelas de especialização
Especialização/Generalização

As publicações são uma generalização dos conceitos monografias e
periódicos
  • A tabela PUBLICACOES armazena as características comuns a todas as
    publicações

As monografias e os periódicos são especializações do conceito
publicações
  • As tabelas MONOGRAFIAS e PERIODICOS armazenam as características
    específicas (especiais) de cada tipo de publicação

As monografias e periódicos “herdam” todas as características comuns
definidas em publicações
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




Normalmente, nas aplicações Web 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 nessa tabela, quando se actualiza/
apaga um registo na tabela de partida (do lado da PK)
Foreign Key Options [Foreign Key Constraints]

RESTRICT

  • Não é permitido actualizar/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 actualizar/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!

  • Exemplo: na base de dados “Multiverso” (exercício P 05) todos os corpos
    celestes (500k registos) foram adicionados ao “Universo 1”.
     • Se todas as relações da BD estiverem com CASCADE DELETE, o que
       acontece se o registo do “Universo 1” 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.

Weitere ähnliche Inhalte

Was ist angesagt? (19)

Módulo 11 planilhas vinculadas
Módulo 11   planilhas vinculadasMódulo 11   planilhas vinculadas
Módulo 11 planilhas vinculadas
 
Módulo 03 listas de dados no excel
Módulo 03   listas de dados no excelMódulo 03   listas de dados no excel
Módulo 03 listas de dados no excel
 
LabMM4 (T09 - 12/13) - Integridade referencial e normalização
LabMM4 (T09 - 12/13) - Integridade referencial e normalizaçãoLabMM4 (T09 - 12/13) - Integridade referencial e normalização
LabMM4 (T09 - 12/13) - Integridade referencial e normalização
 
Aula I - Excel
Aula I - ExcelAula I - Excel
Aula I - Excel
 
Módulo 10 auditoria de fórmulas em excel
Módulo 10   auditoria de fórmulas em excelMódulo 10   auditoria de fórmulas em excel
Módulo 10 auditoria de fórmulas em excel
 
Módulo 07 funções de procura e referência
Módulo 07   funções de procura e referênciaMódulo 07   funções de procura e referência
Módulo 07 funções de procura e referência
 
Módulo 09 botões em excel
Módulo 09   botões em excelMódulo 09   botões em excel
Módulo 09 botões em excel
 
Historico excel
Historico excelHistorico excel
Historico excel
 
Módulo 06 validação de dados
Módulo 06   validação de dadosMódulo 06   validação de dados
Módulo 06 validação de dados
 
ESSBASE Series - Excel Add-in Essbase
ESSBASE Series - Excel Add-in EssbaseESSBASE Series - Excel Add-in Essbase
ESSBASE Series - Excel Add-in Essbase
 
Curso de excel
Curso de excelCurso de excel
Curso de excel
 
2862030
28620302862030
2862030
 
Introdução ao Excel 2010
Introdução ao Excel 2010Introdução ao Excel 2010
Introdução ao Excel 2010
 
Apostila Microsoft Office Excel 2016
Apostila Microsoft Office Excel 2016Apostila Microsoft Office Excel 2016
Apostila Microsoft Office Excel 2016
 
Excel
ExcelExcel
Excel
 
Curso Microsoft Excel Specialist
Curso Microsoft Excel Specialist Curso Microsoft Excel Specialist
Curso Microsoft Excel Specialist
 
Aula 5
Aula 5Aula 5
Aula 5
 
Aula 12 banco de dados
Aula 12   banco de dadosAula 12   banco de dados
Aula 12 banco de dados
 
eXtensible Markup Language (XML)
eXtensible Markup Language (XML)eXtensible Markup Language (XML)
eXtensible Markup Language (XML)
 

Andere mochten auch

T15_T16_LM3: Mais objetos do Javascript (2013-2014)
T15_T16_LM3: Mais objetos do Javascript (2013-2014)T15_T16_LM3: Mais objetos do Javascript (2013-2014)
T15_T16_LM3: Mais objetos do Javascript (2013-2014)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
 
T13_LM3: Arrays (2013-2014)
T13_LM3: Arrays (2013-2014)T13_LM3: Arrays (2013-2014)
T13_LM3: Arrays (2013-2014)Carlos Santos
 
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)Carlos Santos
 

Andere mochten auch (6)

T18_LM3: Ajax
T18_LM3: AjaxT18_LM3: Ajax
T18_LM3: Ajax
 
Web APIs
Web APIsWeb APIs
Web APIs
 
T15_T16_LM3: Mais objetos do Javascript (2013-2014)
T15_T16_LM3: Mais objetos do Javascript (2013-2014)T15_T16_LM3: Mais objetos do Javascript (2013-2014)
T15_T16_LM3: Mais objetos do Javascript (2013-2014)
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)
 
T13_LM3: Arrays (2013-2014)
T13_LM3: Arrays (2013-2014)T13_LM3: Arrays (2013-2014)
T13_LM3: Arrays (2013-2014)
 
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)
 

Ähnlich wie 07 LabMM4 - Bases de dados

TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLFábio Delboni
 
TechEd 2005: Novos Recursos T-SQL (SQL 2005)
TechEd 2005: Novos Recursos T-SQL (SQL 2005)TechEd 2005: Novos Recursos T-SQL (SQL 2005)
TechEd 2005: Novos Recursos T-SQL (SQL 2005)Fabrício Catae
 
Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)Mario Sergio
 
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQLLabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQLCarlos Santos
 
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...Alex Zaballa
 
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...Alex Zaballa
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sqlNilson Augustini
 
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.pptxAugustoNicolau2
 
Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Emiliano Barbosa
 
Php curso de php com my sql
Php   curso de php com my sqlPhp   curso de php com my sql
Php curso de php com my sqlrobinhoct
 
Normalização - Banco de Dados
Normalização - Banco de DadosNormalização - Banco de Dados
Normalização - Banco de DadosRoberto Grande
 
Mini curso de banco de dados - parte 2
Mini curso de banco de dados - parte 2Mini curso de banco de dados - parte 2
Mini curso de banco de dados - parte 2Rafael Sanches
 
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e DesenvolvedoresOracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e DesenvolvedoresAlex Zaballa
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6Wagner Bianchi
 

Ähnlich wie 07 LabMM4 - Bases de dados (20)

TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQL
 
TechEd 2005: Novos Recursos T-SQL (SQL 2005)
TechEd 2005: Novos Recursos T-SQL (SQL 2005)TechEd 2005: Novos Recursos T-SQL (SQL 2005)
TechEd 2005: Novos Recursos T-SQL (SQL 2005)
 
Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)
 
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQLLabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
 
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
 
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sql
 
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
 
Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
 
Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8
 
Php curso de php com my sql
Php   curso de php com my sqlPhp   curso de php com my sql
Php curso de php com my sql
 
Normalização - Banco de Dados
Normalização - Banco de DadosNormalização - Banco de Dados
Normalização - Banco de Dados
 
Mini curso de banco de dados - parte 2
Mini curso de banco de dados - parte 2Mini curso de banco de dados - parte 2
Mini curso de banco de dados - parte 2
 
Sql
SqlSql
Sql
 
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e DesenvolvedoresOracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores
 
Introdução ao BD Postgre
Introdução ao BD PostgreIntrodução ao BD Postgre
Introdução ao BD Postgre
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
 
Apostila de sql
Apostila de sqlApostila de sql
Apostila de sql
 
Basesdedados
BasesdedadosBasesdedados
Basesdedados
 
Data WareHOuse
Data WareHOuseData WareHOuse
Data WareHOuse
 

Mehr von Carlos Santos

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?Carlos Santos
 
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 estudantesCarlos Santos
 
1º Encontro Científico TCEdu
1º Encontro Científico TCEdu1º Encontro Científico TCEdu
1º Encontro Científico TCEduCarlos Santos
 
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 inicialCarlos Santos
 
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 alunosCarlos 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 alunosCarlos Santos
 
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...Carlos Santos
 
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áticoCarlos Santos
 
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 EnvironmentCarlos Santos
 
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 CampusCarlos Santos
 
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 projectCarlos Santos
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoCarlos Santos
 
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 DeCACarlos Santos
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidCarlos 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çãoCarlos Santos
 
T14_LM3: Animação (2013-2014)
T14_LM3: Animação (2013-2014)T14_LM3: Animação (2013-2014)
T14_LM3: Animação (2013-2014)Carlos Santos
 
T12_LM3: Arrays (2013-2014)
T12_LM3: Arrays (2013-2014)T12_LM3: Arrays (2013-2014)
T12_LM3: Arrays (2013-2014)Carlos Santos
 
T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (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
 
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
 
T14_LM3: Animação (2013-2014)
T14_LM3: Animação (2013-2014)T14_LM3: Animação (2013-2014)
T14_LM3: Animação (2013-2014)
 
T12_LM3: Arrays (2013-2014)
T12_LM3: Arrays (2013-2014)T12_LM3: Arrays (2013-2014)
T12_LM3: Arrays (2013-2014)
 
T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)T11_LM3: Subalgoritmose colisões (2013-2014)
T11_LM3: Subalgoritmose colisões (2013-2014)
 

07 LabMM4 - Bases de dados

  • 1. Bases de dados: Auto-associações, especialização/generalização e integridade referencial Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 07, 08-03-2012
  • 2. Auto-associações Pretende-se modelar a seguinte situação numa BD: • Num escritório os funcionários possuem (ou não) um superior hierárquico • Cada funcionário pode ter um único superior hierárquico • Cada superior hierárquico pode coordenar vários funcionários Como modelar esta relação numa BD? Funcionarios idFuncionarios Nome
  • 3. Auto-associações Como a FK pode admitir valores nulos e valores repetidos • Um funcionário pode ser superior hierárquico de vários outros • Podem existir funcionários sem superior hierárquico Se a FK não permitir valores nulos (NOT NULL) • Não podem existir funcionários sem superior hierárquico Se FK não permitir valores repetidos (UNIQUE) • Cada funcionário só pode ser superior hierárquico de um único funcionário • (a relação transforma-se numa 1:1)
  • 4. Auto-associações (solução alternativa) Utilizar uma tabela de relação com duas chaves estrangeiras que apontam para a mesma chave primária! Cada uma das FK não admite valores nulos por ser parte duma chave primária composta. No entanto: • Funcionarios_idFuncionarios e Funcionarios_idFuncionarios1 podem ser configuradas com o parâmetro UNIQUE para evitar os valores repetidos em cada uma das colunas
  • 5. Auto-associações (solução alternativa) Diferentes possibilidades: • M:M - Se as duas FK admitirem valores repetidos (em cada uma das colunas) • 1:M - Se apenas uma das FK admitir valores repetidos • 1:1 - Se nenhuma das FK admitir valores repetidos
  • 6. Especialização/Generalização Numa biblioteca pretende-se catalogar os vários tipo de publicações (livros/monografias) e (revistas/periódicos) com um sistema de numeração único Tabela de generalização Tabelas de especialização
  • 7. Especialização/Generalização As publicações são uma generalização dos conceitos monografias e periódicos • A tabela PUBLICACOES armazena as características comuns a todas as publicações As monografias e os periódicos são especializações do conceito publicações • As tabelas MONOGRAFIAS e PERIODICOS armazenam as características específicas (especiais) de cada tipo de publicação As monografias e periódicos “herdam” todas as características comuns definidas em publicações
  • 8. 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
  • 9. 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)?
  • 10. 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 Normalmente, nas aplicações Web 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)
  • 11. 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 nessa tabela, quando se actualiza/ apaga um registo na tabela de partida (do lado da PK)
  • 12. Foreign Key Options [Foreign Key Constraints] RESTRICT • Não é permitido actualizar/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 actualizar/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)
  • 13. CASCADE DELETE Resultados potencialmente catastróficos para a base de dados! • Exemplo: na base de dados “Multiverso” (exercício P 05) todos os corpos celestes (500k registos) foram adicionados ao “Universo 1”. • Se todas as relações da BD estiverem com CASCADE DELETE, o que acontece se o registo do “Universo 1” for apagado?
  • 14. 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.