04 labmm4 - bases de dados

21
Bases de dados: Relações [1:M] e [M:M] Carlos Santos LabMM 5 - NTC - DeCA - UA Aula 04, 29-02-2012

Upload: carlos-santos

Post on 08-Jul-2015

845 views

Category:

Education


1 download

DESCRIPTION

Relaçõ

TRANSCRIPT

Page 1: 04 LabMM4 - Bases de dados

Bases de dados: Relações [1:M] e [M:M]

Carlos SantosLabMM 5 - NTC - DeCA - UAAula 04, 29-02-2012

Page 2: 04 LabMM4 - Bases de dados

BDs na modelação de problemas do mundo real…

Os problemas a modelar por uma BD, são normalmente constituídos por mú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 encomendas

Uma BD será uma representação de entidades (objetos) e das relações existentes entre estas no mundo real.

Page 3: 04 LabMM4 - Bases de dados

Estratégias na análise de narrativas

Responder à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?

Page 4: 04 LabMM4 - Bases de dados

Estratégias na análise de narrativas

Identificar os sujeitos/substantivos do texto da narrativa

• Entidades/Objectos -> Tabelas

Identificar o que caracteriza cada entidade

• Propriedades -> Colunas -> Tipo de dados -> Parâmetros

Identificar ou definir colunas que especifiquem univocamente cada instância (registo) armazenada da entidade

• Chaves candidatas -> Chaves primárias

Identificar e caracterizar (nos dois sentidos) as relações entre as entidades existentes

• Relações

Page 5: 04 LabMM4 - Bases de dados

Estratégias na análise de narrativas

Dicas:

• 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.

Page 6: 04 LabMM4 - Bases de dados

Tipos de relações no mundo real

Um-para-um

• Um objeto de uma tabela está relacionado apenas com um objeto da outra tabela

• São relacões pouco comuns

Um-para-muitos

• Um objeto de uma das tabelas pode estar relacionado com muitos objetos da outra tabela

Muitos-para muitos

• Qualquer objeto de qualquer uma das tabelas pode estar relacionado com muitos objetos da outra tabela

Page 7: 04 LabMM4 - Bases de dados

Relações no mundo real

Notação Crow’s Foot (utilizada no MySQL Workbench)

Page 8: 04 LabMM4 - Bases de dados

Exemplo: loja de decoração

Vendedores

NomeVend ApelidoVend MoradaVend Sexo ContatoVend DataNascimento DataEntradaEmpresa

Encomendas

nrEncomenda DataEncomenda DataPagamento

Clientes

NomeCliente ApelidoCliente MoradaCliente ContactoCliente Tipo (priv/empr)

Produtos

NomeProd DescricaoProd Preco Peso Dimensoes

Page 9: 04 LabMM4 - Bases de dados

Exemplo: loja de decoração (modelo ER - lógico)

Vendedores

idVend NomeVend ApelidoVend MoradaVend Sexo ContatoVend DataNascimento DataEntradaEmpresa

Encomendas

nrEncomenda DataEncomenda DataPagamento

Clientes

idCliente NomeCliente ApelidoCliente MoradaCliente ContactoCliente Tipo (priv/empr)

Produtos

idProduto NomeProd DescricaoProd Preco Peso Dimensoes

Page 10: 04 LabMM4 - Bases de dados

Modelo lógico vs modelo físico

O 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, sendo adicionada a informação necessária para que esse modelo possa ser implementado num SGBDR.

Na maioria dos casos, esta passagem consiste na especificação dos mecanismos que permitem implementar num SGBDR as relações identificadas 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.

Page 11: 04 LabMM4 - Bases de dados

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

Page 12: 04 LabMM4 - Bases de dados

Um para muitos [1:M]

• Cada cliente poderá realizar várias encomendas• Cada encomenda será realizada apenas por um cliente

Tabela de partida (Clientes)

• Chave primária (PK)• Sem valores nulos ou repetidos

Tabela de chegada (Encomendas)

• Chave estrangeira (FK - foreign key)• Contem valores existentes na PK

• Que podem repetir-se• Pode conter também valores nulos

Uma relação cria uma ligação (Join) entre as duas tabelas

Page 13: 04 LabMM4 - Bases de dados

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_idCliente

Non-Identifying -> Entidades existem de forma independente!

Page 14: 04 LabMM4 - Bases de dados

Um para muitos [1:M]

ClientesClientesidCliente nomeCliente

1 João

2 Maria

3 Manuel

Encomendas

nrEncomenda dataEncomenda Clientes_idCliente

1 2010-­‐02-­‐23 1

2 2010-­‐04-­‐11 2

3 2010-­‐03-­‐13 2

4 2010-­‐05-­‐21 1

5 2010-­‐06-­‐25

Page 15: 04 LabMM4 - Bases de dados

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

Page 16: 04 LabMM4 - Bases de dados

Muitos para muitos [M:M]

• Cada encomenda poderá conter vários produtos• Cada produto poderá ser pertencer a várias encomendas

n: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

Tabela de relaçãocom PK Composta

Page 17: 04 LabMM4 - Bases de dados

Muitos para muitos [M:M]

• Cada encomenda poderá conter vários produtos• Cada produto poderá ser pertencer a várias encomendas

Pode existir uma encomenda sem produtos

• PK nrEncomendas pode conter valores que não existem ainda na FK Encomendas_nrEncomenda

Pode existir um produto que nunca foi encomendado

• PK IdProduto pode conter valores que não existem ainda na FK Produtos_idProduto

Tabela de relaçãocom PK Composta

Page 18: 04 LabMM4 - Bases de dados

Muitos para muitos [M:M]

EncomendasEncomendasnrEncomenda DataEncom

1 2008-­‐01-­‐162 2008-­‐02-­‐023 2008-­‐03-­‐094 2008-­‐04-­‐125 2008-­‐05-­‐26

ProdutosProdutos

idProduto nomeProd

1 Cadeira

2 Mesa  de  Sala

3 Aparador

4 Sofá

Encomendas_has_ProdutosEncomendas_has_Produtos

Encomendas_nrEncomenda Produtos_idProduto

1 2

1 3

2 2

3 1

3 2

3 3

5 2

5 3

PROBLEMA: Como podemos adicionar uma “Cadeira” à encomenda 3?

Page 19: 04 LabMM4 - Bases de dados

Propriedades de uma relação

Vendedores

idVend NomeVend ApelidoVend MoradaVend Sexo ContatoVend DataNascimento DataEntradaEmpresa

Encomendas

nrEncomenda DataEncomenda DataPagamento

Clientes

idCliente NomeCliente ApelidoCliente MoradaCliente ContactoCliente Tipo (priv/empr)

Produtos

idProduto NomeProd DescricaoProd Preco Peso Dimensoes

Quantidade

Page 20: 04 LabMM4 - Bases de dados

Muitos para muitos [M:M] + prop. de relação

EncomendasEncomendasnrEncomenda DataEncom

1 2008-­‐01-­‐162 2008-­‐02-­‐023 2008-­‐03-­‐094 2008-­‐04-­‐125 2008-­‐05-­‐26

ProdutosProdutos

idProduto nomeProd

1 Cadeira

2 Mesa  de  Sala

3 Aparador

4 Sofá

Encomendas_has_ProdutosEncomendas_has_Produtos

Encomendas_nrEncomenda Produtos_idProduto quanHdade

1 2 1

1 3 3

2 2 4

3 1 5

3 2 1

3 3 2

5 2 5

5 3 4

Page 21: 04 LabMM4 - Bases de dados

Quanto custa?

EncomendasEncomendasnrEncomenda DataEncom

1 2008-­‐01-­‐162 2008-­‐02-­‐023 2008-­‐03-­‐094 2008-­‐04-­‐125 2008-­‐05-­‐26

ProdutosProdutos

idProduto nomeProd preco

1 Cadeira €50

2 Mesa  de  Sala €800

3 Aparador €3000

4 Sofá €1200

Encomendas_has_ProdutosEncomendas_has_Produtos

Encomendas_nrEncomenda Produtos_idProduto quanHdade

1 2 1

1 3 3

2 2 4

3 1 5

3 2 1

3 3 2

5 2 5

5 3 4