Bases de dados: Relações [1:M] e [M:M]Carlos SantosLabMM 5 - NTC - DeCA - UAAula 04, 29-02-2012
BDs na modelação de problemas do mundo real…Os problemas a modelar por uma BD, são normalmente constituídos pormúltiplas e...
Estratégias na análise de narrativasResponder às seguintes perguntas para modelar a BD  • Quais as entidades a considerar?...
Estratégias na análise de narrativasIdentificar os sujeitos/substantivos do texto da narrativa  • Entidades/Objectos -> Tab...
Estratégias na análise de narrativasDicas:  • Se nem todos os objectos dessa tabela podem ser representados através    dos...
Tipos de relações no mundo realUm-para-um  • Um objeto de uma tabela está relacionado apenas com um objeto da    outra tab...
Relações no mundo realNotação Crow’s Foot (utilizada no MySQL Workbench)
Exemplo: loja de decoração                                           Clientes                                     NomeClie...
Exemplo: loja de decoração (modelo ER - lógico)                                             Clientes                      ...
Modelo lógico vs modelo físicoO modelo lógico representa todas as lógicas inerentes ao problema:tabelas, campos, chaves pr...
Um para muitos [1:M]Relações um-para-muitos: Como criar?  • Identificar a chave primária da tabela do lado do “um”  • Adici...
Um para muitos [1:M]  • Cada cliente poderá realizar várias encomendas  • Cada encomenda será realizada apenas por um clie...
Um para muitos [1:M]  • Cada cliente poderá realizar várias encomendas  • Cada encomenda será realizada apenas por um clie...
Um para muitos [1:M]          Clientes                            Encomendas  idCliente     nomeCliente   nrEncomenda   da...
Um para muitos [M:M]Relações muitos-para-muitos: Como criar?  • Identificar as chave primária das duas tabela envolvidas na...
Muitos para muitos [M:M]  • Cada encomenda poderá conter vários produtos  • Cada produto poderá ser pertencer a várias enc...
Muitos para muitos [M:M]  • Cada encomenda poderá conter vários produtos  • Cada produto poderá ser pertencer a várias enc...
Muitos para muitos [M:M]     Encomendas                           Encomendas_has_Produtos                     ProdutosnrEn...
Propriedades de uma relação                                                        Clientes                               ...
Muitos para muitos [M:M] + prop. de relação     Encomendas                              Encomendas_has_Produtos           ...
Quanto custa?              Encomendas_has_Produtos                                      ProdutosEncomendas_nrEncomenda   P...
Upcoming SlideShare
Loading in …5
×

04 LabMM4 - Bases de dados

1,321 views
1,151 views

Published on

Relaçõ

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,321
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
113
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

04 LabMM4 - Bases de dados

  1. 1. Bases de dados: Relações [1:M] e [M:M]Carlos SantosLabMM 5 - NTC - DeCA - UAAula 04, 29-02-2012
  2. 2. BDs na modelação de problemas do mundo real…Os problemas a modelar por uma BD, são normalmente constituídos pormúltiplas entidades (objectos) • Vendedores, Encomendas, Clientes, Artigos…As entidades (objectos) 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 será uma representação de entidades (objetos) e das relaçõesexistentes entre estas no mundo real.
  3. 3. 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, serão 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?
  4. 4. Estratégias na análise de narrativasIdentificar os sujeitos/substantivos do texto da narrativa • Entidades/Objectos -> TabelasIdentificar o que caracteriza cada entidade • Propriedades -> Colunas -> Tipo de dados -> ParâmetrosIdentificar ou definir colunas que especifiquem 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
  5. 5. Estratégias na análise de narrativasDicas: • Se nem todos os objectos dessa 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 objectos numa única tabela.
  6. 6. Tipos de relações no mundo realUm-para-um • Um objeto de uma tabela está relacionado apenas com um objeto da outra tabela • São relacões pouco comunsUm-para-muitos • Um objeto de uma das tabelas pode estar relacionado com muitos objetos da outra tabelaMuitos-para muitos • Qualquer objeto de qualquer uma das tabelas pode estar relacionado com muitos objetos da outra tabela
  7. 7. Relações no mundo realNotação Crow’s Foot (utilizada no MySQL Workbench)
  8. 8. 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
  9. 9. 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
  10. 10. 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.
  11. 11. 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
  12. 12. 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 • Que podem repetir-se • Pode conter também valores nulosUma relação cria uma ligação (Join) entre as duas tabelas
  13. 13. 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!
  14. 14. 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
  15. 15. Um para muitos [M:M]Relações muitos-para-muitos: Como criar? • Identificar as chave primária das duas tabela envolvidas na relação • Adiconar 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 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
  16. 16. Muitos para muitos [M:M] • Cada encomenda poderá conter vários produtos • Cada produto poderá ser pertencer a várias encomendas Tabela de relação com PK Compostan:m Identifying Relationship ________Tabela de relação • Chave primária é uma chave composta com as duas chaves estrangeiras das relações 1:M • Criada automaticamente pelo MySQL Workbench se Engine -> InnoDB
  17. 17. Muitos para muitos [M:M] • Cada encomenda poderá conter vários produtos • Cada produto poderá ser pertencer a várias encomendas Tabela de relação com PK CompostaPode existir uma encomenda sem produtos • PK nrEncomendas pode conter valores que não existem ainda na FK Encomendas_nrEncomendaPode existir um produto que nunca foi encomendado • PK IdProduto pode conter valores que não existem ainda na FK Produtos_idProduto
  18. 18. Muitos para muitos [M:M] Encomendas Encomendas_has_Produtos ProdutosnrEncomenda DataEncom Encomendas_nrEncomenda Produtos_idProduto idProduto nomeProd 1 2008-­‐01-­‐16 1 2 1 Cadeira 2 2008-­‐02-­‐02 1 3 2 Mesa  de  Sala 3 2008-­‐03-­‐09 2 2 3 Aparador 4 2008-­‐04-­‐12 4 Sofá 3 1 5 2008-­‐05-­‐26 3 2 3 3 5 2 5 3 PROBLEMA: Como podemos adicionar uma “Cadeira” à encomenda 3?
  19. 19. Propriedades de uma relação Clientes idCliente NomeCliente ApelidoCliente MoradaCliente Vendedores Encomendas ContactoCliente Tipo (priv/empr)idVend nrEncomendaNomeVend DataEncomendaApelidoVend DataPagamentoMoradaVendSexoContatoVendDataNascimentoDataEntradaEmpresa Produtos idProduto NomeProd Quantidade DescricaoProd Preco Peso Dimensoes
  20. 20. Muitos para muitos [M:M] + prop. de relação Encomendas Encomendas_has_Produtos ProdutosnrEncomenda DataEncom Encomendas_nrEncomenda Produtos_idProduto quanHdade idProduto nomeProd 1 2008-­‐01-­‐16 1 2 1 1 Cadeira 2 2008-­‐02-­‐02 1 3 3 2 Mesa  de  Sala 3 2008-­‐03-­‐09 2 2 4 3 Aparador 4 2008-­‐04-­‐12 4 Sofá 3 1 5 5 2008-­‐05-­‐26 3 2 1 3 3 2 5 2 5 5 3 4
  21. 21. Quanto custa? Encomendas_has_Produtos ProdutosEncomendas_nrEncomenda Produtos_idProduto quanHdade idProduto nomeProd preco 1 2 1 1 Cadeira €50 1 3 3 2 Mesa  de  Sala €800 2 2 4 3 Aparador €3000 3 1 5 4 Sofá €1200 3 2 1 Encomendas 3 3 2 nrEncomenda DataEncom 5 2 5 1 2008-­‐01-­‐16 5 3 4 2 2008-­‐02-­‐02 3 2008-­‐03-­‐09 4 2008-­‐04-­‐12 5 2008-­‐05-­‐26

×