Você está na página 1de 27

Projeto de Banco de Dados Mapeamento do Modelo Conceitual para Lgico ER - RELACIONAL

Contexto

Modelo da Aplicao

Comea na fase do projeto conceitual Representar as regras de negcio Na maioria das vezes baseado em objeto (entidade)

Modelo de Armazenamento de Dados


Comea na fase do projeto lgico Determina como os dados so armazenados Depende do mecanismo de persistncia Vrias alternativas

Mapeamento de Entidades Fortes


Cada conjunto de entidade no modelo ER representado por uma relao Atributos simples do conjunto de entidade so representados como colunas Chave da entidade representada como chave primria da relao

emprestimo(numero_emprestimo,quantia)

Mapeamento de Relacionamento

Relacionamento implementado com chave estrangeira


funcionario(numero, nome)
funcionario 1,1

instituto(codigo, nome)
instituto 0,1

_gerente

Em qual tabela incluir a chave estrangeira?

Mapeamento de Relacionamento

1:1 Primeira opo

Incluir Chave Estrangeira em uma das tabelas


instituto 0,1 funcionario 1,1

instituto(codigo, nome)

_gerente

funcionario(numero, nome) Em qual tabela incluir a chave estrangeira?

Mapeamento de Relacionamento

1:1 Primeira opo

Chave estrangeira A melhor escolha a relao com participao total

instituto(codigo, nome,num_gerente) num_gerente referencia funcionario funcionario(numero, nome)

Mapeamento de Relacionamento

1:1 Segunda opo Incorporar os atributos de uma entidade na outra til quando o rel total para as duas entidades envolvidas

Atributos de endereco:rua, num,complemento,bairro, cidade, estado

1,1 funcionario
tem_um

1,1 endereco

funcionario(numero,nome,rua,num,complemento, bairro,cidade,estado)

Mapeamento de Relacionamento

1:N entre r e s Inserir a chave estrangeira em uma das tabelas de forma que a coluna correspondente no seja multivalorada
conta

foi_criada_em

1,1

agencia

Onde inserir a chave estrangeira? Se a chave estrangeira fosse inserida em agencia, a tabela teria uma coluna contendo vrios valores

Mapeamento de Relacionamento

1:N entre r e s Inserir a chave estrangeira em uma das relaes de forma que a coluna correspondente no seja multivalorada
conta

foi_criada_em

1,1

agencia

conta(codigo,saldo, numAgencia, etc ....) numAgencia referencia agencia agencia(numero, nome, ....)

Mapeamento de Relacionamento

N:N entre r e s Criar tabela t para representar o relacionamento t chamada de tabela de relacionamento Chave primria de t

Chave primaria de r e s So definidos como colunas da tabela t 0,N


conta
pertence_a

Atributos de relacionamento

1,N
cliente

Mapeamento de Relacionamento

N:N entre r e s
0,N
conta
pertence_a

1,N
cliente

conta(num,saldo,....) cliente(codigo, nome, ....) conta_cliente(codigo,num) codigo referencia cliente num referencia conta

Mapeamento de Relacionamento

N:N entre r e s com atributo


0,N
conta
pertence_a

1,N
cliente

conta(num,saldo,....) cliente(codigo, nome, ....)

tip

conta_cliente(codigo,num, tipo) codigo referencia cliente num referencia conta

Mapeamento de Relacionamento

Relacionamento N-rio (r, s e t) Criar uma relao U para representar o relacionamento

Chave primria de U composta pela chaves de r, s e t 0,N 0,N


pertence_a

funcionario
projeto(num,titulo)

projeto

0,1
cargo

funcionario(codigoF,nome,....) cargo(codigoC, nome, ....) trabalho(num,codigoF,codigoC) num referencia projeto codigoF referencia funcionario codigoC referencia cargo

Mapeamento de atributos compostos e multivalorados

Atributos compostos

Cada atributo componente representado como atributo simples na relao Cria uma nova relao para representar o atributo

Atributo multivalorado

Atributo composto

cliente(id_cliente,prenome,inicial_meio,sobrenome, .....)

E o endereo?

Atributo composto

cliente(id_cliente,prenome,inicial_meio,sobrenome, numero_rua, nome_rua,numero_apto,cidade,estado,codigo_postal)

Atributo multivalorado

cliente(id_cliente,prenome, etc ....) telefone(id_cliente,numero_telefone) id_cliente referencia cliente

Mapeamento de Entidades Fracas

Conjunto de entidade fraca representado como uma relao


Atributos simples so representados como colunas Inclui uma coluna para a chave primria do conjunto de entidades forte identificadora (chave estrangeira) Chave primria da entidade fraca composta Chave primria da entidade forte Chave parcial (atributo discriminador) da entidade fraca

Mapeamento de Entidades Fracas

pagamento(numero_emprestimo,numero_pagamento,data_pagamento, quantia_pagamento) numero_emprestimo referencia emprestimo (numero_emprestimo)

Mapeamento de Especializao e Generalizao

Primeira opo

Criar uma relao para cada entidade


Entidades de nvel inferior: Relaes possuem atributos especificos + chave estrangeira para relao de nvel superior

Entidades de nvel inferior: Chave primria igual a chave primria da relao de nvel superior

Mapeamento de Especializao e Generalizao

Primeira opo

Criar uma tabela para cada entidade


pessoa(id_pessoa,nome, etc ...) funcionario(id_pessoa,salario) cliente(id_pessoa,avaliacao_credito)

Vale tanto para generalizaes no disjuntas quanto parciais

Mapeamento de Especializao e Generalizao

Segunda opo

Criar tabelas somente para entidade de nvel inferior


Entidades de nvel inferior: Possuem os atributos da entidade de nvel superior + atributos especificos

Entidades de nvel superior no so representadas

Mapeamento de Especializao e Generalizao

Segunda opo
cliente(id_pessoa,nome, rua, ..., avaliacao_credito)

funcionario(id_pessoa,nome, rua, ...., salario)

No recomendada para generalicao parcial ou que no sejam disjuntas

Mapeamento de Especializao e Generalizao

Terceira opo

Criar uma nica tabela com todos os atributos das entidades envolvidas + atributo tipo
O atributo tipo indica qual a especializao de uma determinada tupla

Mapeamento de Especializao e Generalizao

Terceira opo
Atributo tipo poderia assumir os valores funcionario ou cliente para cada tupla na relao pessoa

pessoa(id_pessoa,nome, rua, ..., avaliacao_credito,salario,tipo)

No indicada quando entidades de nivel inferior possuem muitos atributos especificos Pode gerar muitas tuplas com valores nulos nos atributos especificos

Mapeamento de Especializao e Generalizao

Variao da terceira opo

Criar uma nica relao com todos os atributos das entidades envolvidas e um atributo booleano para indicar a entidade especifica
O atributo booleano indica se uma tupla corresponde a uma entidade de nivel inferior ou nao

Mapeamento de Especializao e Generalizao

Variao da terceira opo


Caso uma tupla for um cliente, c_tipo:= true; Se a tupla for funcionario f_tipo := true; Caso uma pessoa no seja nem funcionario, nem cliente: c_tipo:= false f_tipo := false

pessoa(id_pessoa,nome, rua, ..., f_tipo,avaliacao_credito,c_tipo,salario)

til para generalizao que no so disjuntas e parciais

Você também pode gostar