Modelo relacional noções básicas tradução do modelo de objectos álgebra relacional
Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de...
-
Upload
mirella-pita -
Category
Documents
-
view
237 -
download
1
Transcript of Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de...
![Page 1: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/1.jpg)
Transformação E-R para Relacional
![Page 2: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/2.jpg)
Exercício Abaixo aparece um esquema parcial para um banco de dados
relacional. Identifique neste esquema as chaves primárias e chaves estrangeiras:Aluno(CodigoAluno, Nome, CodigoCurso)
Curso(CodigoCurso, Nome)
Disciplina(CodigoDisciplina, Nome, Creditos, CodigoDepartamento)
Curriculo (CodigoCurso, CodigoDisciplina,Obrigatoria-Opcional)
Conceito(CodigoAluno, CodigoDisciplina, Ano-Semestre, Conceito)
Departamento(CodigoDepartamento, Nome)
![Page 3: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/3.jpg)
Paciente(CodigoConvenio, NumeroPaciente, Nome) CodigoConvenio referencia Convenio
Convenio (CodigoConvenio, Nome)
Medico(CRM, Nome, Especialização)
Consulta (CodigoConvenio, NumeroPaciente, CRM, Data_Hora) (CodigoConvenio,NumeroPaciente) referencia Paciente CRM referencia Medico
Explique que verificações devem ser feitas pelo SGBD para garantir integridade referencial nas seguintes situações:
Uma linha é incluída na tabela Consulta Uma linha é excluída da tabela Paciente O código do CRM em uma linha de Consulta é alterado O código do CRM em uma linha de Médico é alterado
ExercícioConsidere um banco de dados com o seguinte esquema:
![Page 4: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/4.jpg)
Abordagem ER é voltada à modelagem de dados de forma independente
do SGBD considerado. Representação:
Abordagem Relacional - Modela os dados para um SGBD relacional. - Um modelo neste nível de abstração é chamado de
modelo lógico.- Representação:
nometabela2(chaveprimária,atributo1,atributo2)Atributo2 referencia nometabela1
entidade1 entidade2R
Transformação Entre Modelos
![Page 5: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/5.jpg)
Transformação ER -> Relacional
As regras para a transformação ER para relacional foram definidas tendo em vista dois objetivos básicos:
obter um banco de dados que permita boa performance de instruções de consulta e alteração do BD (diminuir o número de acesso a disco, já que este consome tempo na execução de uma instrução em um BD);
obter um BD que simplifique o desenvolvimento e a manutenção de aplicações;
![Page 6: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/6.jpg)
Regras gerais Aplicáveis à maioria dos casos Há situações
por exigências da aplicação, outros mapeamentos são usados
Implementadas em ferramentas CASEObjetivos básicos:
Boa performance Simplificar o desenvolvimento
Transformação ER -> Relacional
![Page 7: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/7.jpg)
A fim de alcançar estes objetivos, as regras gerais de tradução foram definidas tendo por base, entre outros, os
seguintes princípios: Evitar junções; Diminuir o número de chaves primárias; Evitar/Diminuir o número de campos opcionais;
Regras gerais de tradução:
Junção: operação para buscar dados de diversas linhas associadas pela igualdade dos campos.
Exemplo: buscar os dados de um empregado e os dados de seu departamento (duas tabelas diferentes)
![Page 8: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/8.jpg)
Embora os SGBD procurem implementar a junção de forma eficiente, ela envolve diversos acesso a disco;
Todos os dados de uma linha são trazidos para a memória em uma operação de acesso a disco. Isto significa que, uma vez encontrada uma linha da tabela, seus campos estão todos disponíveis sem necessidade de acesso adicionais a disco;
Regras gerais de tradução: Evitar junções
Preferível: ter os dados necessários a uma consulta em uma única linha;
Embora as junções são implementações NORMAIS em BD. Aqui a idéia é evitar junções desnecessárias.
![Page 9: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/9.jpg)
Regras gerais de tradução: Diminuir o número de chaves primárias
Para implementação eficiente do controle da chave primária, o SGBD usa uma estrutura de acesso auxiliar, um índice para cada chave primária.
Índices tendem a ocupar espaço considerável em disco.
Além disso, inserção ou remoção de entradas em um índice podem exigir diversos acessos a disco;
![Page 10: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/10.jpg)
Regras gerais de tradução: Diminuir o número de chaves primárias
podendo escolher entre 2 alternativas de implementação, uma na qual os dados aparecem em 1 única tabela e outra na qual os mesmos dados aparecem em 2 ou mais tabelas com a mesma chave primária, prefira a implementação por uma única tabela.
Veja a seguir...
![Page 11: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/11.jpg)
1a alternativaCliente (CodCliente, nome, nomeContato, rua, cep, cidade, fone)
-> chave primária da tabela: CodCliente2a alternativa
Cliente (CodCliente, Nome, NomeContato)ClienteEnder(CodCliente, rua, cep, cidade, fone) CodCliente referencia Cliente
-> cria, para cada tabela, uma chave primária (código de cliente) (onde, as dias tabelas possuem exatamente as mesmas chaves primárias, resultando em armazenamento e processamento dobrado).
Regras gerais de tradução: Usar implementações com menos chaves
Exemplo
![Page 12: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/12.jpg)
Regras gerais de tradução: Evitar campos opcionais
Campos opcionais = campos que podem assumir o valor VAZIO (NULL em SQL).
A princípio não há problemas em usar esse tipo de campo porque o SGBD relacional não desperdiça espaço pelo fato de campos de uma linha estarem vazios;
Campos opcionais não tem influência na performance;
Uma situação conflitante é aquela na qual a obrigatoriedade ou não do preenchimento de um campo depende do valor de outros campos. Neste caso, o controle da obrigatoriedade deve ser feito pelos programas que acessam o BD.
![Page 13: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/13.jpg)
Controle de campo opcional pode complicarprogramação
Verificar quais campos podem estar vazios, quando isto depende do tipo de linha
Regras gerais de tradução: Evitar campos opcionais
![Page 14: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/14.jpg)
Passos da transformaçãoER para relacional
1. Tradução inicial de entidades e respectivos atributos
2. Tradução de relacionamentos e respectivos atributos
3. Tradução de generalizações/ especializações
![Page 15: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/15.jpg)
Implementação inicial de entidades
Cada entidade é transformada em uma tabela
Cada atributo da entidade define uma coluna desta tabela
Atributos identificadores -> compõem a chave primária da tabela
![Page 16: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/16.jpg)
Implementação inicial de entidades
Exemplo
Pessoanome
codpess dataNasc
Pessoa (CodPess, Nome, DataNasc)
![Page 17: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/17.jpg)
Nomes de colunas
Referenciados freqüentemente em programas e outras formas de texto em computador
Para diminuir o trabalho de programadores manter os nomes de colunas curtos.
SGBD relacional nome de uma coluna não pode conter
brancos e ífens.
![Page 18: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/18.jpg)
Nomes de atributose nomes de colunas
Não transcrever os nomes de atributos para nomes de colunas. Nomes de atributos compostos de diversas
palavras devem ser abreviados Nomes de colunas não necessitam conter o nome da
tabela Preferível usar o nome de coluna Nome a usar os
nomes de coluna NomePess ou NomePessoa SQL já exige muitas vezes forma
Pessoa. Nome
![Page 19: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/19.jpg)
Nome da coluna chave primária
Chave primária pode aparecer em outras tabelas na forma de chave
estrangeira
Recomendável nomes das colunas que compõem a chave primária
sufixados ou prefixados com o nome ou sigla da tabela na qual aparecem como chave primária
Exemplo CodigoPess
![Page 20: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/20.jpg)
Implementação de relacionamentos
Três formas básicas de tradução:
Tabela própria Adição de colunas a uma das tabelas Fusão de tabelas
O fator determinante para a tradução em relacionamentos é a cardinalidade mínima e máxima das entidades que participam do relacionamento
![Page 21: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/21.jpg)
![Page 22: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/22.jpg)
![Page 23: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/23.jpg)
![Page 24: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/24.jpg)
Implementação de relacionamentos 1: 1
![Page 25: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/25.jpg)
Alternativa preferida – Adição de colunas, e qualquer uma das entidade pode ser escolhida.Homens(cpfh,Nome,CRes)Mulheres(cpfm,Nome, cpfh, data, regime)
Cpfh referencia Homens
MulheresCasamentoHomens
cpfh CRes Regime
Nome
(0,1)(0,1)
cpfm
nome
Data
Quando ambas entidades têm participação opcional... Em relacionamento binários 1:1
![Page 26: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/26.jpg)
Alternativa que pode ser usada – Tabela própria
Homens(cpfh,Nome,CRes)Mulheres(cpfm,Nome)Casamento(cpfh, cpfm,Data,Regime)
cpfm referencia MulheresCpfh referencia Homens
MulheresCasamentoHomens
cpfh CRes regime
Nome
(0,1)(0,1)
cpfm
nome
Data
Quando ambas entidades têm participação opcional... Em relacionamento binários 1:1
![Page 27: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/27.jpg)
Fusão é inviável – cpfm e cpfh podem opcionais -> fere a regra da PK
Casamento(cpfm, cpfh, data, regime, Nomeh, Nomem)
MulheresCasamentoHomens
cpfh CRes Regime
Nome
(0,1)(0,1)
cpfm
nome
Data
Quando ambas entidades têm participação opcional... Em relacionamento binários 1:1
![Page 28: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/28.jpg)
1: 1 - Quando ambas entidades têm participação opcional discussão
Solução por fusão de tabelas é inviável Chave primária artificial
Solução por adição de colunas melhor Menor número de junções Menor número de chaves
Solução por tabela própria aceitável
![Page 29: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/29.jpg)
Alternativa preferida (fusão) Clientes(Codcli,Nome,Nro,Data_exped)
- com Parcialidade em uma das entidades
Cartões MagnéticosPosseClientesCodcli NroNome Data_exped
(0,1)(1,1)
Uma entidade tem participação opcional e a outra obrigatória
RuimRuim - -se existem poucos clientes com cartão
Em relacionamento binários 1:1
![Page 30: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/30.jpg)
Pode ser usada (Adição de colunas)Clientes(Codcli,Nome)CartõesMagnéticos(Nro, Codcli,Data_exped)
Codcli referencia clientes
- com Parcialidade em uma das entidades
Cartões MagnéticosPosseClientesCodcli NroNome Data_exped
(0,1)(1,1)
Uma entidade tem participação opcional e a outra obrigatória
Em relacionamento binários 1:1
![Page 31: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/31.jpg)
Tabela própria não recomendadoClientes(Codcli,Nome)CartõesMagnéticos(Nro,Data_exped)CartõesClientes(Nro. Codcli,Nome, Data_exped
Codcli referencia clientes Nro referencia CartõesMagneticos
- com Parcialidade em uma das entidades
Cartões MagnéticosPosseClientesCodcli NroNome Data_exped
(0,1)(1,1)
Uma entidade tem participação opcional e a outra obrigatória
Em relacionamento binários 1:1
![Page 32: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/32.jpg)
1: 1 - opcional/ obrigatóriadiscussão
Solução por tabela própria é pior que a solução por adição de colunas Maior número de junções Maior número de índices Nenhum têm problema de campos opcionais
Adição de colunas versus fusão de tabelas Fusão de tabelas é melhor em termos de número de
junções e número de chaves Adição de colunas em melhor em termos de campos
opcionais Fusão de tabelas é considerada a melhor e adição de
colunas é aceitável
![Page 33: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/33.jpg)
Deve ser usado fusão de tabelas quando ambas entidades tem participação obrigatória
ComissõesOrganizaçãoEventos
Code
ResponsávelNro Local
Nome Data_inst_comissão
(1,1)(1,1)
Produz uma única tabela (sempre! ):Eventos(Code,Nome,Data_inst_comissão,Local, Responsável_comissão)
ou
Comissões(Nro. Local, Responsável, Data_inst_comissão, Nome_Evento)
Ambas Entidades têm participação Obrigatória
Relacionamentos binários do tipo 1:1
![Page 34: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/34.jpg)
1: 1 - Ambas obrigatóriasDiscussão
Nenhuma das demais alternativas atende plenamente
Em ambas Entidades que participam do relacionamento
seriam representadas através de duas tabelas distintas
Estas tabelas teriam a mesma chave primária e relação um- para- um entre suas linhas
Maior número de junções Maior número de chaves primárias
![Page 35: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/35.jpg)
Relacionamentos 1: n
![Page 36: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/36.jpg)
Esquema relacional correspondente:
Departamento(CodDep,Nome)Empregado(CodE,Nome,contratacao, CodDep, datalotacao)
CodDep referencia Departamento
Contratacao
DataLotação
Nome
(1,1) (0,N)
CodECodDep
Nome
1: n - Caso 1 - A entidade que tem cardinalidade máxima 1 é obrigatória
Departamento EmpregadoLotação
Faz-se inserção de colunas na tabela com cardinalidade máx. 1.
![Page 37: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/37.jpg)
Adição de colunas é a preferidaDepartamentos(Codd,Nome)Empregados(CPF,Nome,Idade,Data,Codd)
Codd referencia Departamento
(1,1)(0,N)
CoddData
Nome
IdadeNom
eCPF
1: n - Caso 1 - A entidade que tem cardinalidade máxima 1 é obrigatória
Empregados
Departamentolotação
(0,N) (1,1) (1,1) (0,N)
![Page 38: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/38.jpg)
Tabela própria pode também ser usadaDepartamentos(Codd,Nome)Empregados(CPF,Nome,Idade)Lotações(CPF, Codd , Data) Codd referencia Departamentos CPF referencia Empregados
(1,1)(0,N)
CoddData
Nome
IdadeNom
eCPF
1: n - caso 1 - A entidade que tem cardinalidade máxima 1 é obrigatória
Empregados
Departamentolotação
(0,N) (1,1) (1,1) (0,N)
![Page 39: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/39.jpg)
Fusão de tabelas Não se aplica Implicaria em
redundância de dados de departamento, ou tabela aninhada
Adição de colunas é melhor que tabela própria Menor número de chaves Menor número de junções Não há o problema de campos opcionais
1: n - caso 1 - A entidade que tem cardinalidade máxima 1 é obrigatória
![Page 40: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/40.jpg)
- adição coluna – preferida; - tabela própria – pode ser usada;
(0,N)(0,1)
CodaData
modelo
IdadeNom
ecpf
Caso 2 - Em relacionamentos 1:n onde ambas entidades tem participação opcional
Pessoas Automóveis
posse
Preferida: Adição de ColunaPessoas(cpf,Nome,Idade)Automóveis(Coda,modelo,cpf, data)
cpf referencia pessoa
![Page 41: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/41.jpg)
(0,N)(0,1)
codaData
modelo
IdadeNom
ecpf
pessoas automoveisposse
Pode ser usada Tabela própria:pessoas(cpf,Nome,Idade)automóveis(Coda,modelo)posse(cpf,coda,Data)
cpf referencia pessoacoda referencia automoveis
Caso 2 - Em relacionamentos 1:n onde ambas entidades tem participação opcional
![Page 42: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/42.jpg)
Implementação por tabela própria também é aceitável É melhor em relação a campos opcionais Perde em relação a junções e número de chaves
Caso 2 - Em relacionamentos 1:n onde ambas entidades tem participação opcional
![Page 43: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/43.jpg)
Departamentos(Codd,Nome)Empregados(CPF,Nome,Idade,Data,Codd)
Codd referencia Departamento
Adição de coluna – somente!
(1,1)(1,N)
CoddData
Nome
IdadeNom
eCPF
Ambas entidades têm participação obrigatóriaEm relacionamentos binários do tipo 1:N
Empregados
Departamentolotação
Trad. Preferida e única
![Page 44: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/44.jpg)
Tabela de regras 1:n
(0,1) (0,n)
(0,1) (1,n)
(1,1) (0,n)
+- ok x
+- ok
x ok
x
x
Tabelaprópria
Adiçãocoluna
FusãoTabelasRelacionamento 1:n
(1,1) (1,n)x ok x
![Page 45: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/45.jpg)
Tradução de entidade com relacionamento identificador
Nome
Vínculo Dependentes(1,1) (0,N)
IdDep
Empregados
cpfemp
Modelo Relacional:Empregado (cpfemp, nome)Dependentes (CPFemp, IdDep, Nome) CPFemp referencia Empregados
Um dependente é identificado, isto é, a CHAVE PRIMÁRIA é composta pelo cpf do empregado ao qual ele está vinculado e pelo IdDep do dependente
nome Entidade fraca
![Page 46: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/46.jpg)
Tradução de entidade com relacionamento identificador
Nome
Vínculo Dependentes(1,1) (0,N)
IdDep
Empregados
cpfemp
Modelo Relacional:Empregado (cpfemp, nome)
Dependentes (CPFemp, IdDep, Nome) CPFemp referencia Empregados
nome Entidade fracaRelacionamento
Identificador
CPFemp comporáa PK de Dependentes
![Page 47: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/47.jpg)
Implementação inicial de entidades
Tradução de entidade - relacionamento identificador
![Page 48: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/48.jpg)
Exercício: Qual a chave primáriada tabela Dependente?
![Page 49: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/49.jpg)
Relacionamentos n: n
![Page 50: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/50.jpg)
Relacionamentos n: n
![Page 51: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/51.jpg)
Produz sempre uma tabela própria para o relacionamento:
Engenheiro(CodEng,Nome,Idade)Projetos(Codproj,Título,Duração)
Atuação(CodEng,Codproj,Função)CodEng referencia EngenheiroCodProj referencia Projeto
Duração
Função
Idade
Nome
(0,N) (0,N)
CodpCodEng
Título
Engenheiro ProjetoAtuação
Relacionamentos n: n
![Page 52: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/52.jpg)
Tabela de regras m:n
(0,n) (0,n)
(0,n) (1,n)
(1,n) (1,n)
ok x x
ok x
ok x
x
x
Tabelaprópria
Adiçãocoluna
FusãoTabelasRelacionamento m:n
![Page 53: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/53.jpg)
Em síntese!
Relacionamentos N: N – somente aceitam tabela própria.
![Page 54: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/54.jpg)
Relacionamentos 1: N – preferida é adição em colunas
Atenção! Pode ser usada Tabela própria Ambas tem participação opcional (0,1)(0,N) A participação opcional é da que apresenta
cardinalidade máxima 1 (0,1)(1,N)
Síntese
![Page 55: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/55.jpg)
Relacionamentos 1: 1 – preferida é fusão quando: ambas entidades tem participação obrigatórias (só fusão!)
ou uma tem cardinalidade opcional (preferida);
Pode ser usada Adição de colunas uma tem cardinalidade opcional (0,1)(1,1)
Quando ambas forem opcionais (0,1)(0,1) Preferida – Adição colunas Pode ser usada- tabela própria
Síntese
![Page 56: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/56.jpg)
Implementando Generalização/Especialização
Duas alternativas básicas uso de uma única tabela para toda hierarquia uso de uma tabela para cada entidade
Outra alternativa (EXÓTICA) Subdivisão de entidade genérica
![Page 57: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/57.jpg)
Implementando Generalização/Especialização
Cliente
Pessoa Física
PessoaJurídica
CódigoNome
CPF CNPJEsquema Relacional
Cliente(CodCli, Tipo, Nome, CPF, CNPJ)
Tipo1a. OpçãoUma tabela porhierarquia
![Page 58: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/58.jpg)
Uma tabela por hierarquia
Todas tabelas referentes às especializações são fundidas em uma única tabela
Tabela contém: Chave primária correspondente ao identificador
da entidade mais genérica Caso não exista, adicionar uma coluna Tipo Uma coluna para cada atributo da entidade
genérica Colunas referentes aos relacionamentos dos
quais participa a entidade genérica e que sejam implementados através da alternativa de adicionar colunas à tabela da entidade genérica
![Page 59: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/59.jpg)
Uma tabela por hierarquia - CONT
Tabela contém (continuação): Uma coluna para cada atributo de cada entidade
especializada (opcional) Colunas referentes aos relacionamentos dos
quais participa cada entidade especializada e que sejam implementados através da alternativa de adicionar colunas à tabela da entidade (campo opcional)
![Page 60: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/60.jpg)
Uma tabela por entidade especializada
Criar uma tabela para cada entidade que compõe a hierarquia
Incluir a chave primária da tabela correspondente à entidade genérica, em cada tabela correspondente a uma entidade especializada
![Page 61: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/61.jpg)
Implementando Generalização/Especialização
Esquema Relacional
Cliente(CodCli, Tipo, Nome)
PessFisica(CodCli, CPF)
CodCli referencia Cliente
PessJurid(Codcli, CNPJ)
CodCli referencia Cliente
2a. Opção: Uma Tabela por Entidade Especializada
Cliente
Pessoa Física
PessoaJurídica
Tipo
![Page 62: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/62.jpg)
Implementando Generalização/Especialização
Vantagens de implementação por tabela única:
•Todos os dados referentes a uma ocorrência de entidade genérica, estão em uma única linha, não necessitando criar junções;
•Minimiza junções
•A chave primária é armazenada uma única vez.
Comparação
![Page 63: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/63.jpg)
Implementando Generalização/Especialização
Vantagens de implementação com uma tabela por entidade especializada:
•As colunas opcionais que aparecem são apenas aquelas referentes a atributos que podem ser vazios do ponto de vista da aplicação;
• O controle de colunas opcionais passa a ser feito pelo aplicação com base na coluna TIPO e não pelo SGDB como na solução alternativa.
Comparação
![Page 64: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/64.jpg)
Síntese
![Page 65: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/65.jpg)
Generalização – Tabela única
Cliente
PessoaFísica
t
PessoaJurídica
Código
CPFNome
CGCRazão_Social
Cliente(código,nome,CPF,RazãoSocial,CGC)Tabela única
Atributos opcionais
![Page 66: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/66.jpg)
Generalização – Tabela p/entidade
Cliente
PessoaFísica
t
PessoaJurídica
Código
CPFNome
CGCRazãoSocial
Cliente(código)Tabela p/entidade PessoaFísica(código,CPF,nome)
PessoaJurídica(código,CGC,RazãoSocial)
código referencia Cliente
![Page 67: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/67.jpg)
Relacionamento grau > dois
![Page 68: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/68.jpg)
Relacionamento grau> 2
Não são definidas regras específicas O relacionamento é transformado em uma
entidade São aplicadas regras de implementação de
relacionamentos binários
![Page 69: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/69.jpg)
Relacionamento grau> 2
![Page 70: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/70.jpg)
Esquema relacional
Produto (CodProd, Nome)Cidade (CodCid, Nome)Distribuidor (CodDistr, Nome)Distribuição (CodProd, CodDistr, CodCid, DataInicio)
CodProd referencia ProdutoCodDistr referencia DistribuidorCodCid referencia Cidade
Relacionamento grau> 2
![Page 71: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/71.jpg)
Refinamentos do modelo relacional
Projeto (engenharia) em geral compromisso entre o ideal e o realizável dentro
das restrições de recursos impostas pelas prática
Projeto de banco de dados compromisso entre o ideal (regras de
implementação) e o alcançável frente a limitações de performance
![Page 72: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/72.jpg)
Refinamentos do modelo relacional
Algumas vezes esquema de BD criado através do uso das regras
acima não atende requisitos de performance impostos ao sistema
Necessário buscar alternativa que resulte em melhor performance do sistema
Alternativas somente devem ser tentadas em último caso Do ponto de vista da programação são sempre
piores
![Page 73: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/73.jpg)
Relacionamentos mutuamente exclusivos Simulação de atributos multivalorados Informações redundantes
Refinamentos do modelo relacional
![Page 74: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/74.jpg)
Relacionamentos mutuamente exclusivos
![Page 75: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/75.jpg)
Implementação pelas regras colunas CIC e CGC em Venda são especificadas
como opcionaisPessFis(CIC, Nome)PessJur( CGC, RazSoc)Venda( Nro, data, CIC, CGC)
CIC referencia PessFisCGC referencia PessJur
colunas CIC e CGC em Venda são especificadas como opcionais
Relacionamentos mutuamente exclusivos
![Page 76: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/76.jpg)
Implementação alternativa criar uma única coluna na qual aparece o CIC ou
o CGC do compradorPessFis( CIC ,Nome)PessJur( CGC, RazSoc)Venda( No ,data, CIC/ CGC, TipoCompr)
Desvantagem Não é possível especificar ao SGBD que o
campo CIC/ CGC é chave estrangeira • não referencia uma única tabela
Relacionamentos mutuamente exclusivos
![Page 77: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/77.jpg)
Tratamento de atributos multivalorados
![Page 78: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/78.jpg)
Atributos multivaloradosimplementação padrão
Cliente (CodCli, Nome)
Telefone (CodCli, Número)CodCli referencia Cliente
![Page 79: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/79.jpg)
Atributos multivaloradosalternativa
Condições de contorno: Raros clientes possuem mais que dois telefones.
Quando isso ocorrer é suficiente armazenarmos apenas dois números. Não há consultas ao banco de dados usando o
número de telefone como critério de seleção Números de telefone são apenas exibidos ou
impressos juntos às demais informações de cliente
![Page 80: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/80.jpg)
Simulação de atributos multivalorados
Implementação “desnormalizada”
Cliente (CodCli, Nome, NumTel1, NumTel2)
Simular uma coluna multivalorada através dacriação de diversas colunas NumTel sufixadaspor um número
![Page 81: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/81.jpg)
Simulação de atributos multivalorados
Permite que os telefones de um cliente sejam obtidos mais rapidamente
Implica em menos espaço ocupado não é necessária chave primária da tabela
Telefone Inconveniente
Consulta usando o número de telefone como critério de busca torna- se mais complicada
Manter os telefones "alinhados à esquerda" exige rotina complexa
![Page 82: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/82.jpg)
Informações redundantes
Exemplo: atributos que resultam de uma operação que
envolve diversas entidades do banco de dados valor destes atributos
deve ser obtido com freqüência ou serve freqüentemente como critério de busca
de informações no banco de dados Pode ser mais eficiente (performance global do
sistema) armazenar redundantemente o atributo derivado
![Page 83: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/83.jpg)
Informações redundantesExemplo
![Page 84: Transformação E-R para Relacional. Exercício Abaixo aparece um esquema parcial para um banco de dados relacional. Identifique neste esquema as chaves.](https://reader035.fdocumentos.tips/reader035/viewer/2022062818/570638401a28abb8238f131c/html5/thumbnails/84.jpg)
Aula preparada baseada no material enviado pelo prof. Heuser autor do livro Projeto de Banco de Dados