LabMM4 (T04 - 12/13) - Relações 1:M e M:M
Upcoming SlideShare
Loading in...5
×
 

LabMM4 (T04 - 12/13) - Relações 1:M e M:M

on

  • 1,141 views

 

Statistics

Views

Total Views
1,141
Views on SlideShare
1,138
Embed Views
3

Actions

Likes
0
Downloads
56
Comments
0

1 Embed 3

http://campus.sapo.pt 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

LabMM4 (T04 - 12/13) - Relações 1:M e M:M LabMM4 (T04 - 12/13) - Relações 1:M e M:M Presentation Transcript

  • Bases de dados: Relações [1:M] e [M:M]Carlos SantosLabMM 4 - NTC - DeCA - UAAula 04, 26-02-2013
  • Motores de armazenamento para as tabelasNo MySQL • MyISAM • Motor tradicional no MySQL • Maior portabilidade das tabelas • Armazena mais dados, num menor espaço • Permite a compressão dos dados • InnoDB • Suporta chaves estrangeiras (integridade referencial) • Mecanismos de recuperação • Suporta transações
  • BDs na modelação de problemas do mundo real…Os problemas a modelar por uma BD, são normalmente constituídos pormúltiplas entidades (objetos) • Vendedores, Encomendas, Clientes, Artigos…As entidades (objetos) têm relações entre si • Uma encomenda tem apenas um vendedor responsável • Um vendedor pode ser responsável por várias encomendasUma BD é uma representação de entidades (objetos) e das relaçõesexistentes entre estas no mundo real.
  • Estratégias na análise de narrativasResponder às seguintes perguntas para modelar a BD • Quais as entidades a considerar? • O que caracteriza cada uma dessas entidades? • Que dados das diferentes entidades é necessários armazenar/extrair? • Quais as tabelas a incluir na BD e como se caracterizam as suas colunas? • Qual a chave primária de cada tabela? • Que relações existem entre as tabelas?
  • Estratégias na análise de narrativasIdentificar os nomes/sujeitos/substantivos do texto da narrativa • Entidades/Objetos -> TabelasIdentificar o que caracteriza cada entidade • Propriedades -> Colunas -> Tipo de dados -> ParâmetrosIdentificar ou definir colunas que identifiquem univocamente cadainstância (registo) armazenada da entidade • Chaves candidatas -> Chaves primáriasIdentificar e caracterizar (nos dois sentidos) as relações entre asentidades existentes • Relações
  • Estratégias na análise de narrativasDicas: • Se nem todos os objetos de uma tabela podem ser representados através dos mesmo campos, então deve ser ponderada a hipótese de dividir essa tabela em várias tabelas. • Caso sejam identificadas tabelas com estruturas idênticas então deve ser ponderada a possibilidade de agrupar esses objetos numa única tabela.
  • Tipos de relações no mundo realUm-para-um • Um objeto de uma tabela está relacionado apenas com um objeto da outra tabela (nos dois sentidos) • São relações pouco comunsUm-para-muitos • Um objeto de uma das tabelas pode estar relacionado com muitos objetos da outra tabela (apenas numa sentido)Muitos-para muitos • Qualquer objeto de qualquer uma das tabelas pode estar relacionado com muitos objetos da outra tabela
  • Relações no mundo real (EER)Notação Crow’s Foot (utilizada no MySQL Workbench)
  • Exemplo: loja de decoração Clientes NomeCliente ApelidoCliente MoradaCliente ContactoCliente Vendedores Encomendas Tipo (priv/empr)NomeVend nrEncomendaApelidoVend DataEncomendaMoradaVend DataPagamentoSexoContatoVendDataNascimentoDataEntradaEmpresa Produtos NomeProd DescricaoProd Preco Peso Dimensoes
  • Exemplo: loja de decoração (modelo ER - lógico) Clientes idCliente NomeCliente ApelidoCliente MoradaCliente Vendedores Encomendas ContactoCliente Tipo (priv/empr)idVend nrEncomendaNomeVend DataEncomendaApelidoVend DataPagamentoMoradaVendSexoContatoVendDataNascimentoDataEntradaEmpresa Produtos idProduto NomeProd DescricaoProd Preco Peso Dimensoes
  • Modelo lógico vs modelo físicoO modelo lógico representa todas as lógicas inerentes ao problema:tabelas, campos, chaves primárias e as suas relações.O modelo físico é uma versão mais completa do modelo lógico, sendoadicionada a informação necessária para que esse modelo possa serimplementado num SGBDR.Na maioria dos casos, esta passagem consiste na especificação dosmecanismos que permitem implementar num SGBDR as relaçõesidentificadas no modelo lógico. A ter em atenção: • É um processo baseado num conjunto de regras pré-determinadas; • Algumas ferramentas, por exemplo, o MySQL Workbench, permitem “automatizar” este processo (pelo menos parcialmente).
  • Um para muitos [1:M]Relações um-para-muitos: Como criar? • Identificar a chave primária da tabela do lado do “um” • Adicionar uma chave estrangeira na tabela do lado do “muitos” (o tipo de dados deste campo tem que ser idêntico ao tipo de dados da chave primária) • Criar uma ligação (JOIN) entre as duas tabelas com base nas duas chaves referidas anteriormente
  • Um para muitos [1:M] • Cada cliente poderá realizar várias encomendas • Cada encomenda será realizada apenas por um clienteTabela de partida (Clientes) • Chave primária (PK) • Sem valores nulos ou repetidosTabela de chegada (Encomendas) • Chave estrangeira (FK - foreign key) • Contem valores existentes na PK da outra tabela • Que podem repetir-se • Pode conter também valores nulosUma relação cria uma ligação (Join) entre as duas tabelas
  • Um para muitos [1:M] • Cada cliente poderá realizar várias encomendas • Cada encomenda será realizada apenas por um cliente[1:n] Non-Identifying Relationship ------- • Pode existir uma encomenda sem um cliente • FK Clientes_idCliente pode conter valores nulos • Pode existir um cliente sem uma encomenda • PK IdCliente pode conter valores inexistentes na FK Clientes_idClienteNon-Identifying -> Entidades existem de forma independente!
  • Um para muitos [1:M] Clientes Encomendas idCliente nomeCliente nrEncomenda dataEncomenda Clientes_idCliente 1 João 1 2010-­‐02-­‐23 1 2 Maria 2 2010-­‐04-­‐11 2 3 Manuel 3 2010-­‐03-­‐13 2 4 2010-­‐05-­‐21 1 5 2010-­‐06-­‐25
  • Muitos para muitos [M:M]Relações muitos-para-muitos: Como criar? • Identificar as chave primária das duas tabela envolvidas na relação • Adicionar uma nova tabela de relação com duas chaves estrangeiras (que vão servir de ligação às chaves primárias das duas tabelas do modelo lógico) • A chave primária da nova tabela é obtida pela associação das duas chaves estrangeiras - chave primária composta • Criar duas ligações (JOIN) do tipo [1:M]: • Uma ligação (JOIN) da chave primária da primeira tabela para a chave estrangeira correspondente da tabela de relação • Uma ligação (JOIN) da chave primária da segunda tabela para a chave estrangeira correspondente da tabela de relação