Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Banco de Dados I Mapeamento ER - Relacional DCC-UFLA Prof. Denilson Alves Pereira Prof. Denilson A. Pereira 2 Mapeamento ER para Relacional Prof. Denilson A. Pereira 3 Mapeamento ER para Relacional • Tipo Entidade – Para cada tipo de entidade E regular (não fraca) no esquema ER, crie uma relação R que inclua todos os atributos simples de E. – Inclua também os atributos simples componentes de um atributo composto de E na relação R. – Escolha uma das chaves candidatas de E para chave primária de R. Exemplo: para o tipo de entidade Funcionario, gere a relação: Funcionario (cpf, primeiroNome, sobrenome, salario) Funcionário cpf salárionome 1º nome sobrenome Prof. Denilson A. Pereira 4 Mapeamento ER para Relacional • Tipo Entidade Fraca – Para cada tipo de entidade fraca W no esquema ER, crie uma relação R e inclua todos os atributos simples (ou componentes simples de atributos compostos) de W como atributos de R. – Inclua também como atributos de R todos os atributos componentes das chaves primárias de cada uma das entidades fortes de W. Cada uma dessas inclusões é uma chave estrangeira de R. – A chave primária de R é a combinação dos atributos das chaves primárias das entidades fortes de W mais a chave parcial de W. Prof. Denilson A. Pereira 5 Mapeamento ER para Relacional Exemplo: para o tipo de entidade fraca Dependente, gere a relação: Dependente (cpfFunc, nome, dataNascimento, parentesco) Dependente[cpfFunc] →p Funcionario[cpf] Funcionário cpf salárionome 1º nome sobrenome N1 possui Dependente nome data nascimento parentesco Prof. Denilson A. Pereira 6 Mapeamento ER para Relacional • Atributo Multivalorado – Para cada atributo multivalorado A de um tipo de entidade E, crie uma nova relação R que inclua o atributo A mais a chave primária K (como chave estrangeira em R) da relação que representa o tipo de entidade ou o tipo de relacionamento que tem A como atributo. – Se o atributo multivalorado é composto, inclua seus componentes simples. – A chave primária de R é a combinação de K e A. Exemplo: para o atributo Localização, gere a relação: LocalizaçãoDepto (número, localização) LocalizaçãoDepto[número] →p Departamento[número] Departamento nome número localização Prof. Denilson A. Pereira 7 Mapeamento ER para Relacional • Tipo Relacionamento Binário 1:1 – Opção 1: Técnica de chave estrangeira – Para cada tipo de relacionamento binário R 1:1 no esquema ER, identifique as relações S e T que correspondem aos tipos de entidades participantes de R. Escolha uma das relações, S por exemplo, e inclua como chave estrangeira em S a chave primária de T. É melhor escolher um tipo de entidade com participação total em R no papel de S. – Inclua todos os atributos simples (ou componentes simples de atributos compostos) do tipo de relacionamento R como atributo de S. Prof. Denilson A. Pereira 8 Mapeamento ER para Relacional Exemplo: para o tipo de relacionamento gerencia, Opção 1: adicione os atributos cpfGerente e dataInício à relação Departamento Departamento (número, nome, cpfGerente, dataInício) Departamento[cpfGerente] →b Funcionário[cpf] ==> melhor opção para este exemplo. Departamento nome número localização Funcionário cpf salárionome 1º nome sobrenome 11 gerencia data início Prof. Denilson A. Pereira 9 Mapeamento ER para Relacional • Tipo Relacionamento Binário 1:1 – Opção 2: Técnica de relação mesclada – Junte os dois tipos de entidades e o tipo relacionamento em uma única relação. – Esta opção é particularmente apropriada quando ambas as participações são totais e os tipos de entidades não participam de nenhum outro tipo de relacionamento individual. Prof. Denilson A. Pereira 10 Mapeamento ER para Relacional Exemplo: para o tipo de relacionamento gerencia, Opção 2: mescle as relações Funcionário e Departamento FuncDepto (cpf, primeiroNome, sobrenome, salario, número, nome, cpfGerente, dataInício) ==> não é uma opção interessante para este exemplo. Departamento nome número localização Funcionário cpf salárionome 1º nome sobrenome 11 gerencia data início Prof. Denilson A. Pereira 11 Mapeamento ER para Relacional • Tipo Relacionamento Binário 1:1 – Opção 3: Técnica de relação de referência cruzada ou relacionamento – Cria-se uma nova relação, de forma semelhante ao mapeamento do tipo relacionamento binário M:N (veja slide a frente), exceto que a chave primária é diferente. – A chave primária da nova relação será uma das duas chaves estrangeiras, e a outra chave estrangeira será uma chave alternativa. – Apropriada se a participação for parcial em ambos os lados do relacionamento e o número de entidades participantes for pequeno. Prof. Denilson A. Pereira 12 Mapeamento ER para Relacional Exemplo: para o tipo de relacionamento gerencia, Opção 3: crie uma relação para o relacionamento Funcionario(cpf, primeiroNome, sobrenome, salario) Departamento (número, nome) Gerencia (cpfGerente, número, dataInício) // número é uma chave alternativa Gerencia[cpfGerente] →p Funcionario[cpf] Gerencia[número] →p Departamento[número] ==> não é a melhor opção para este exemplo. Departamento nome número localização Funcionário cpf salárionome 1º nome sobrenome 11 gerencia data início Prof. Denilson A. Pereira 13 Mapeamento ER para Relacional • Tipo Relacionamento Binário 1:N – Opção 1: Técnica de chave estrangeira do lado N – Para cada tipo de relacionamento binário R 1:N regular (não fraco) no esquema ER, identifique a relação S que representa o tipo de entidade participante do lado N do tipo de relacionamento. Inclua como chave estrangeira em S a chave primária da relação T que representa o outro tipo de entidade participante de R. Isso ocorre porque cada instância do lado N está relacionada a, no máximo, uma instância do lado 1 do tipo de relacionamento. – Inclua todos os atributos simples (ou componentes simples de atributos compostos) do tipo de relacionamento R como atributos de S. Prof. Denilson A. Pereira 14 Mapeamento ER para Relacional Exemplo: para o tipo de relacionamento pertence, Opção 1: adicione o atributo númeroDepto à relação Funcionário Departamento (número, nome) Funcionario (cpf, primeiroNome, sobrenome, salario, númeroDepto) Funcionário[númeroDepto] →b Departamento[número] Departamento nome número localização salário Funcionário cpf nome 1º nome sobrenome 1N pertence Prof. Denilson A. Pereira 15 Mapeamento ER para Relacional • Tipo Relacionamento Binário 1:N – Opção 2: Técnica de relação de referência cruzada ou relacionamento – Cria-se uma nova relação, de forma semelhante ao mapeamento do tipo relacionamento binário M:N (veja slide a frente), exceto que a chave primária é diferente. – A chave primária da nova relação será a chave primária da relação do lado N. – Opção apropriada para participação parcial do lado N, para evitar valores NULL excessivos na chave estrangeira se usada a Opção 1. Prof. Denilson A. Pereira 16 Mapeamento ER para Relacional Exemplo: para o tipo de relacionamento pertence, Opção 2: cria-se uam relação para o relacionamento Departamento (número, nome) Funcionario (cpf, primeiroNome, sobrenome, salario) Pertence (cpf, número) Pertence[cpf] →p Funcionario[cpf] Pertence[número] →b Departamento[número] Departamento nome número localização salário Funcionário cpf nome 1º nome sobrenome 1N pertence Prof. Denilson A. Pereira 17 Mapeamento ER para Relacional • Tipo Relacionamento Binário M:N – Para cada tipo de relacionamento binário R M:N no esquema ER, crie uma nova relação S para representar R. Inclua como chaves estrangeiras em S as chaves primárias das relações que representam os tipos de entidades participantes. – Também inclua todos os atributos simples (ou componentes simples de atributos compostos) do tipo de relacionamento R como atributos de S. – A chave primária de S é a combinação de suas chaves estrangeiras. Prof. Denilson A. Pereira 18 Mapeamento ER para Relacional Exemplo: para o tipo de relacionamento trabalha, gere a relação: Trabalha (cpf, númeroProjeto, horas) Trabalha[cpf] →p Funcionário[cpf] Trabalha[númeroProjeto] →p Projeto[número] Funcionário cpf salárionome 1º nome sobrenome Projeto nome número localização NM trabalha horas Prof. Denilson A. Pereira 19 Mapeamento ER para Relacional • Tipo Relacionamento n-ário (n > 2) – Para cada tipo de relacionamento n-ário R, onde n > 2, no esquema ER, crie uma nova relação S para representar R. Inclua como atributos da chave estrangeira em S as chaves primárias das relações que representam os tipos de entidades participantes. – Também inclua todos os atributos simples (ou componentes simples de atributos compostos) do tipo de relacionamento R como atributos de S. – A chave primária de S é normalmente a combinação de suas chaves estrangeiras. Entretanto, se as restrições de cardinalidade de qualquer um dos tipos de entidades E participante de R é 1, então a chave primária de S não deve incluir a chave estrangeira que referencia a relação E’ correspondente a E. Prof. Denilson A. Pereira 20 Mapeamento ER para Relacional Exemplo: para o tipo de relacionamento fornecimento, gere a relação: Fornecimento (codForn, codProj, codPeç, qtde) Fornecimento[codForn] →p Fornecedor[código] Fornecimento[codProj] →p Projeto[código] Fornecimento[codPeç] →p Peça[código] fornecimento qtde Peça código descrição Fornecedor código nome Projeto código nome M N P Prof. Denilson A. Pereira 21 Mapeamento ER para Relacional Prof. Denilson A. Pereira 22 Mapeamento EER para Relacional • Especialização / Generalização – Opção 1: crie uma relação L para a superclasse C no esquema ER com os atributos de C. A chave primária de L é uma chave de C. Crie também uma relação Li para cada subclasse Si. Cada Li inclui os atributos específicos de Si mais a chave primária de L, a qual torna-se também a chave primária de Li. Essa opção funciona para qualquer restrição na especialização: disjunta, sobreposta, total e parcial. Prof. Denilson A. Pereira 23 Mapeamento EER para Relacional • Especialização / Generalização – Opção 2: crie uma relação Li para cada subclasse Si com os atributos da subclasse mais os atributos da superclasse. A chave primária de Li é uma chave da superclasse. Essa opção deve ser usada para restrições total e disjunta. Prof. Denilson A. Pereira 24 Mapeamento EER para Relacional Especialização / Generalização – Opção 3: crie uma única relação L com todos os atributos da superclasse C e das subclasses Si. A chave primária de L é uma chave de C. Essa opção é para uma especialização cujas subclasses são disjuntas. Pode haver um atributo para indicar a qual subclasse cada tupla pertence. Essa opção tem um potencial para geração de um grande número de valores nulos. Prof. Denilson A. Pereira 25 Mapeamento EER para Relacional Especialização / Generalização – Opção 4: crie uma única relação L com todos os atributos da superclasse C e das subclasses Si, mais um atributo lógico (flag) ti para cada subclasse para indicar se a tupla pertence à subclasse Si. A chave primária de L é uma chave de C. Essa opção é mais indicada para especialização cujas subclasses são sobrepostas (mas também funciona para especialização disjunta). Prof. Denilson A. Pereira 26 Mapeamento EER para Relacional Exemplos: para a especialização abaixo. d Funcionário cpf nome Secretário vdigitação Técnico grau Engenheiro tipoeng∪∪ ∪ Prof. Denilson A. Pereira 27 Mapeamento EER para Relacional usando a Opção 1, gere as relações: Funcionário (cpf, nome, tipodeTrabalho) Secretário (cpf, vdigitação) Secretário[cpf] →p Funcionário[cpf] Técnico (cpf, grau) Técnico[cpf] →p Funcionário[cpf] Engenheiro (cpf, tipoeng) Engenheiro[cpf] →p Funcionário[cpf] usando a Opção 3, gere a relação: Funcionário (cpf, nome, tipodeTrabalho, vdigitação, grau, tipoeng) Prof. Denilson A. Pereira 28 Mapeamento EER para Relacional para a generalização abaixo: usando a Opção 2, gere as relações: Carro (codVeiculo, preco, placa, velocidade, numPassag) Caminhão (codVeiculo, preco, placa, numEixos, capacidade) Prof. Denilson A. Pereira 29 Mapeamento EER para Relacional para a especialização abaixo: usando a opção 4, gere a relação: Peça (numPeca, descrição, Fflag, numDesenho, dataFab, numLote, Cflag, nomeFornecedor, preco) Prof. Denilson A. Pereira 30 Mapeamento EER para Relacional • Tipo União ou Categoria – Crie uma relação para representar a categoria e inclua todos os seus atributos. Para uma categoria cujas superclasses têm chaves diferentes, adicione um novo atributo chave, chamado “chave substituta”, para ser a chave primária da relação. Adicione este atributo como chave estrangeira de todas as relações correspondentes às superclasses da categoria, para especificar a correspondência de valores entre a chave substituta e as chaves de cada superclasse. – Para uma categoria cujas superclasses têm as mesmas chaves, a chave substituta não é necessária. Adicione à relação representante da categoria o atributo chave de uma superclasse para ser a sua chave primária. Cada chave primária das relações correspondentes às superclasses são também chaves estrangeira referenciando a relação da categoria. Prof. Denilson A. Pereira 31 Mapeamento EER para Relacional Exemplo: para a categoria abaixo: gere as relações: Empresa (cnpj, razãosocial, numCorrentista) Empresa[numCorrentista] →n Correntista[numCorrentista] Pessoa (cpf, nome, numCorrentista) Pessoa[numCorrentista] →n Correntista[numCorrentista] Correntista (numCorrentista) Correntista U ∪ Empresa cnpj razãoSocial Pessoa cpf nome Prof. Denilson A. Pereira 32 Referência Bibliográfica Básica ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de Bancos de Dados. Pearson Education, 6a edição, 2011. ISBN- 978-85-7936-085-5 Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32