mapeamento e-r relacionalsantanch/teaching/db/...mapeie o seguinte modelo er para relacional: nome...

50
Mapeamento E-R Relacional Banco de Dados: Teoria e Prática André Santanchè e Luiz Celso Gomes Jr Instituto de Computação – UNICAMP Agosto 2013 Picture by http://www.flickr.com/photos/morganmorgan/ 2010

Upload: others

Post on 19-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Mapeamento E-R Relacional→

Banco de Dados: Teoria e Prática

André Santanchè e Luiz Celso Gomes JrInstituto de Computação – UNICAMP

Agosto 2013

Pic

ture

by

htt

p:/

/ww

w.f

lickr

.co

m/p

ho

tos/

mo

rgan

mo

rgan

/ 201

0

Page 2: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Mapeamento

Modelo Lógico

esquema conceitual

esquema lógico

Banco de Dados

Modelo Físico

esquema físico

Modelo Conceitual

Visão Externa 1 Visão Externa 2 Visão Externa n

requisitos requisitos requisitos

Independente de SGBD

Dependente de SGBD

Page 3: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 1Entidade Regular

Page 4: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Mapeamento

Entidade Regular

L IVRO

ISBN

título

autor

ano categoria

?

Page 5: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 1

Entidade Regular

▪ Entidade regular traduzida em relação (tabela)

▪ Atributos da entidade traduzidos em atributos (colunas) da relação

▫ Atributos identificadores convertidos em chave primária

Page 6: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 1

Entidade Regular

LIVRO

ISBN

título

autor

ano categoria

LIVRO(ISBN, Título, Autor, Ano, Categoria)

LIVRO

ISBN Título Autor Ano Categoria

9580471444 Vidas Secas Graciliano Ramos 1938 Romance

958047950X Agosto Rubem Fonseca 1990 Romance

0554253216 Micrographia Robert Hooke 1665 Ciências

Page 7: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 2Entidade Fraca

Page 8: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Mapeamento

Entidade Fraca

(1,1) (0,n)LIVRO

ISBN

título

autor

ano categoria

sequência

data aquisição

TEM EXEMPLAR

?

Page 9: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 2

Entidade Fraca

▪ Entidade fraca traduzida em tabela

▪ Atributos da entidade traduzidos em colunas da relação

▪ Chave estrangeira na tabela/entidade fraca = chave primária da entidade proprietária

▪ Chave primária da tabela/entidade fraca

▫ Atributos identificadores da entidade fraca

+

▫ Chave primária da entidade proprietária

Page 10: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 2

Entidade Fraca

(1,1) (0,n)LIVRO

ISBN

título

autor

ano categoria

sequência

data aquisição

TEM EXEMPLAR

LIVRO(ISBN, Título, Autor, Ano, Categoria)EXEMPLAR(ISBN, Sequência, DataAquisicao)

Page 11: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 3Relacionamento 1:1

Page 12: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Mapeamento

Relacionamento 1:1

ARMÁRIOOCUPA1 1

código

nome

telefone

PESSOA

código tamanho

?

Page 13: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Mapeamento

Relacionamentos 1:1

Tipo de Relacionamento

Regra de Implementação

Tabela Própria

Adição Coluna

Fusão Tabelas

(0,1 ) (0,1 )

(0,1 ) (1 ,1 )

(1 ,1 ) (1 ,1 )

(Heuser, 2004)

Page 14: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

PESSOA ARMÁRIOOCUPA(0,1) (0,1)

Etapa 2

Relacionamento 1:1

▪ Exemplo:

▪ Três alternativas:

a) Chave estrangeira

b) Relacionamento incorporado

c) Relação de relacionamento

Page 15: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Relacionamento 1:1 (Opção A)

Chave Estrangeira

▪ Opção mais usada

▫ deve ser seguida a não ser em casos excepcionais

▪ Chave primária de uma das relações torna-se chave estrangeira da outra

ARMÁRIOOCUPA(0,1) (0,1)

código

nome

telefone

PESSOA

código tamanho

Page 16: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

ARMÁRIOOCUPA(0,1) (0,1)

código

nome

telefone

PESSOA

código tamanho

ARMÁRIO(Código, Tamanho)

Código Tamanho

1A simples

2A duplo

1B simples

2B duplo

ARMÁRIOCódigo Nome Telefone

1525 Asdrúbal 5432-1098

1637 Doriana 9876-5432

1701 Quincas 8765-4321

2042 Melissa 7654-3210

2111 Horácio 6543-2109

PESSOA

PESSOA(Código, Nome, Telefone)

Page 17: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

ARMÁRIOOCUPA(0,1) (0,1)

código

nome

telefone

PESSOA

código tamanho

ARMÁRIO(Código, Tamanho, Ocupante)

Código Nome Telefone

1525 Asdrúbal 5432-1098

1637 Doriana 9876-5432

1701 Quincas 8765-4321

2042 Melissa 7654-3210

2111 Horácio 6543-2109

PESSOA

Código Tamanho Ocupante

1A simples 1637

2A duplo (nulo)

1B simples (nulo)

2B duplo 2111

ARMÁRIO

PESSOA(Código, Nome, Telefone)

Page 18: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

ARMÁRIOOCUPA(0,1) (0,1)

código

nome

telefone

PESSOA

código tamanhodata hora

PESSOA(Código, Nome, Telefone)

ARMÁRIO(Código, Tamanho, Ocupante, Data, Hora)

Código Tamanho Ocupante Data Hora

1A simples 1637 03/08 10:20

2A duplo (nulo) (nulo) (nulo)

1B simples (nulo) (nulo) (nulo)

2B duplo 2111 03/08 11:45

ARMÁRIOCódigo Nome Telefone

1525 Asdrúbal 5432-1098

1637 Doriana 9876-5432

1701 Quincas 8765-4321

2042 Melissa 7654-3210

2111 Horácio 6543-2109

PESSOA

Page 19: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Relacionamento 1:1 (Opção B)

Relacionamento Incorporado

▪ Fusão das duas relações em uma única

▪ Recomendação: ambas devem ter participação total na relação

Page 20: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Relacionamento 1:1 (Opção C)

Relação de Relacionamento

▪ Relacionamento se transforma em terceira relação

▪ Terceira relação – referência cruzada

▫ mantém chave de ambas as relações envolvidas no relacionamento

Page 21: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

ARMÁRIO(Código, Tamanho)

Código Tamanho

1A simples

2A duplo

1B simples

2B duplo

ARMÁRIOCódigo Nome Telefone

1525 Asdrúbal 5432-1098

1637 Doriana 9876-5432

1701 Quincas 8765-4321

2042 Melissa 7654-3210

2111 Horácio 6543-2109

PESSOA

PESSOA(Código, Nome, Telefone)

OCUPA(CodPessoa, CodArmário, Data, Hora)

CodPessoa CodArmário Data Hora

1637 1A 03/08 10:20

2111 2B 03/08 11:45

OCUPA

ARMÁRIOOCUPA(0,1) (0,1)

código

nome

telefone

PESSOA

código tamanhodata hora

Page 22: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Exercício 1

▪ Mapeie o seguinte modelo ER para relacional:

Vírus

nome identificador data

possui Genoma(0,1) (1,1)

Page 23: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 4Relacionamento 1:n

Page 24: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Mapeamento

Chave Estrangeira

Estante LivroGuarda1 n

?

Page 25: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Mapeamento

Relacionamentos 1:n

(Heuser, 2004)

Tipo de Relacionamento

Regra de Implementação

Tabela Própria

Adição Coluna

Fusão Tabelas

(0,1 ) (0,n)

(0,1 ) (1 ,n)

(1 ,1 ) (0,n)

(1 ,1 ) (1 ,n)

Page 26: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Relacionamento 1:N

Chave Estrangeira

▪ Chave primária de uma das relações torna-se chave estrangeira da outra

Estante LivroGuarda1 n

Page 27: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Exercício 2▪ Mapeie o seguinte modelo ER para relacional:

nome

trataCoquetel(0,N)

nome

Retrovírus(1,1)

nome

trataCoquetel1

nome

RetrovírusN

Page 28: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 5Relacionamento n:m

Page 29: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Mapeamento

Relacionamento n:m

Pessoa LivroEscreven n

?

Page 30: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Mapeamento

Relacionamentos n:m

(Heuser, 2004)

Tipo de Relacionamento

Regra de Implementação

Tabela Própria

Adição Coluna

Fusão Tabelas

(0,n) (0,n)

(0,n) (1 ,n)

(1 ,n) (1 ,n)

Page 31: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Relacionamento M:N

Relação de Relacionamento

▪ Relacionamento se transforma em terceira relação

▪ Terceira relação – referência cruzada

▫ mantém chave de ambas as relações envolvidas no relacionamento

Pessoa LivroEscreven n

Page 32: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Relacionamento M:N

Relação de Relacionamento

▪ Relacionamento se transforma em terceira relação

▪ Terceira relação – referência cruzada

▫ mantém chave de ambas as relações envolvidas no relacionamento

Pessoa LivroEscreven n

Page 33: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Exercício 3

▪ Mapeie o seguinte modelo ER para relacional:

identificador data

contémGenoma(0,N)

código

Gene(0,N)

Page 34: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 6Atributos Multivalorados

Page 35: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 6

Atributos Multivalorados

▪ Modelo Relacional não permite atributos multivalorados

?

Page 36: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 6

Atributos Multivalorados

▪ Atributo vira tabela M

▪ Chave primária da entidade vira chave estrangeira de M

▪ Chave primária de M:

▫ Chave primária da entidade

+

▫ Atributo multivalorado

▪ Se atributo for composto, componentes viram colunas de M

Page 37: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 7Relacionamento n-ário

Page 38: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Mapeamento

Relacionamento n-ário

n

1Distribuidor

Cidade

Livro

Distribuição

n

?

Page 39: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Exercício 4▪ Mapeie o seguinte modelo ER para relacional:

nome

trataCoquetelN

nome_científico

Retrovírus1

id descrição

TipoPaciente

N

dosagem

Page 40: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 8Generalização/Especialização (EER)

Page 41: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Mapeamento

Generalização / Especialização

data associaçãodata admissão função

FUNCIONÁRIO ASSOCIADO

PESSOA

código

nome

telefone

ct?

Page 42: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

MÍDIA

código

título

ano

LIVRO

autorISBN

categoria

produtordiretor

DVD

xp

Mapeamento

Generalização / Especialização

?

Page 43: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Etapa 8

Generalização / Especialização

▪ Uma tabela por hierarquia

▪ Uma tabela por entidade especializada

▫ Subdivisão da entidade genérica

Page 44: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Exercício 5▪ Mapeie o seguinte modelo ER para relacional:

nome

trataCoquetel(0,N)

Retrovírus(1,1)

nome_científico

Vírus

VírusDNA

tipo_cadeia

Page 45: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

PERTENCE(0,n) (1,n)

PESSOA ARMÁRIOOCUPA(0,1) (0,1)

EMPRÉSTIMO

(0,1)

(0,n)

CATEGORIA

SUBORDINADA

super-categoriasubcategoria(0,n) (0,1)

ESTANTE

GUARDA

(0,n)

(1,1)

LIVRO

ER Biblioteca

Page 46: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

LimiteDe

1

N

End-Deixar

EndereçoResidencial

Até

End-Apanhar

1

N

@

1

1

1

Zona

Zona

Fila

DataHoraIn*KMIn*

CorridaAgendada

Data PedidoData Hora Corrida

1

N

1

1

Logradouro

LogIdNomeCidadeEstado

Numeração

Número

[Complemento][Bairro][CEP]

Cliente

CliIdNome[CPF][CGC]

1

N

N0

1

1

N

N

N

Legenda:[ ] - atributo opcional* - informação preenchida após inclusão inicial@ - um táxi só pode aparecer uma vez na fila

CorridaEfetivada

Hora Início Fila

Hora DeixouKm Final

Hora Apanhou

1

1

N

1

Motorista

CNHNome

CNHValid

Taxi

PlacaMarca

ModeloAnoFabLicença

MT

Endereço

1

1

1

N

1

1

1 1N N

por prof. Geovane Cayres Magalhães

Page 47: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Referências

▪ Codd, Edgar Frank (1970) A relational model of data for large shared data banks. Communications ACM 13(6), 377-387.

▪ Elmasri, Ramez; Navathe, Shamkant B. (2010) Sistemas de Banco de Dados. Pearson, 6a edição em português.

▪ Guimarães, Célio (2003) Fundamentos de Bancos de Dados: Modelagem, Projeto e Linguagem SQL. Editora UNICAMP, 1a edição.

Page 48: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

Referências▪ Heuser, Carlos Alberto (2004) Projeto de Banco de

Dados. Editora Sagra Luzzato, 5a edição.

▪ Ramakrishnan, Raghu; Gehrke, Johannes (2003) Database Management Systems. McGraw-Hill, 3rd edition.

Page 49: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

André Santanchèhttp://www.ic.unicamp.br/~santanche

Page 50: Mapeamento E-R Relacionalsantanch/teaching/db/...Mapeie o seguinte modelo ER para relacional: nome Coquetel trata (0,N) nome Retrovírus (1,1) nome Coquetel trata 1 nome Retrovírus

License▪ These slides are shared under a Creative Commons License.

Under the following conditions: Attribution, Noncommercial and Share Alike.

▪ See further details about this Creative Commons license at:http://creativecommons.org/licenses/by-nc-sa/3.0/