Bancos de Dados - Aula 08 – Mapeamento MER → Relacional - Parte III
Mapeamento de Relacionamentos Nários e Especializações
Introdução ao Mapeamento Entidade-Relacionamento
- A apresentação é conduzida por Sara, que discute conceitos de mapeamento entidade-relacionamento no contexto de bancos de dados.
- O foco da aula são os relacionamentos nários, especializações e agregações, com ênfase na importância das cardinalidades.
Relacionamentos Nários
- Para mapear um relacionamento nário (n > 2), cria-se uma nova relação S que inclui as chaves primárias das entidades participantes como chaves estrangeiras.
- A chave primária da nova relação S é a combinação de todas as chaves estrangeiras. Se uma entidade tem cardinalidade "um", sua chave não entra na chave primária.
Exemplo Prático: Relacionamento "Fornece"
- Um exemplo prático envolve três entidades: fornecedor, projeto e peça, onde cada fornecedor pode fornecer várias peças para vários projetos.
- As chaves primárias das três entidades são usadas como chaves estrangeiras na nova relação "fornece", que também inclui o atributo quantidade.
Cadastro de Dados
- São apresentados dados hipotéticos nas tabelas para ilustrar o relacionamento entre fornecedores, projetos e peças.
- Destaca-se a flexibilidade do mapeamento, permitindo múltiplos fornecedores para o mesmo projeto e peça.
Cardinalidade em Relacionamentos
- Uma situação diferente surge quando um fornecedor participa com cardinalidade "um", exigindo que cada projeto/peça seja fornecido por exatamente um fornecedor.
- Neste caso, a chave primária da relação "fornece" é composta apenas pelas chaves primárias das entidades projeto e peça.
Restrições Impostas pelos Dados
- Com essa configuração, não se pode ter o mesmo projeto recebendo a mesma peça de fornecedores diferentes; isso impõe restrições importantes nos dados cadastrados.
- A combinação do número do projeto com o número da peça deve ser única para evitar duplicações indesejadas.
Importância das Restrições no Modelo Relacional
- As restrições definidas no modelo conceitual devem ser bem estudadas para garantir que o sistema gerenciador de banco de dados (SGBD) possa aplicá-las corretamente.
- Essas restrições são levantadas durante a coleta de requisitos no início do desenvolvimento do sistema.
Mapeamento de Especializações e Generalizações
Mapeamento de Superclasse e Subclasses em Tabelas
Estratégias de Mapeamento Relacional
- O mapeamento das subclasses e superclasse deve incluir todos os atributos relevantes, com a chave primária da superclasse estabelecida.
- Existem quatro opções para realizar esse mapeamento, cada uma adequada a diferentes situações.
Primeira Opção: Múltiplas Relações para Superclasse e Subclasses
- Criação de uma relação para a superclasse que inclui todos os seus atributos, com a chave primária definida como a chave da superclasse.
- Para cada subclasse, é criada uma relação separada (L1, L2, L3), incluindo o atributo da subclasse e a chave da superclasse.
- Exemplo prático: Funcionário especializado em Secretário, Técnico e Engenheiro. A especialização é disjunta e parcial.
Mapeamento Alternativo
- Uma modelagem alternativa pode incluir um atributo "F tipo" que especifica qual subclasse uma entidade pertence.
Segunda Estratégia: Relações Apenas para Subclasses
- Nesta abordagem, não há relação exclusiva para a superclasse; apenas relações para as subclasses são criadas.
- Essa opção é válida apenas para especializações de participação total e restrição de disjunção.
Exemplo Prático
- Um veículo deve ser necessariamente um carro ou um caminhão. Se não for nenhum dos dois, não pode ser cadastrado no modelo relacional.
Problemas com Restrições de Sobreposição
- Se houver sobreposição (um veículo podendo ser tanto carro quanto caminhão), informações da superclasse teriam que ser cadastradas duas vezes.
Abordagem de Mapeamento Único
Mapeamento de Especializações e Agregações
Estratégias de Especialização
- A especialização de subclasses disjuntas pode levar ao uso excessivo de valores nulos nas tabelas, o que é uma desvantagem.
- Ao cadastrar um funcionário, todos os atributos da superclasse e das subclasses são incluídos, mas apenas os atributos relevantes para o tipo específico do funcionário são preenchidos; os demais ficam nulos.
- Uma abordagem alternativa envolve criar uma relação única com todos os atributos da superclasse e das subclasses, além de atributos booleanos que indicam a participação em cada subclasse.
Uso de Flags para Subclasses
- Os atributos booleanos (flags) indicam se um dado pertence ou não a uma subclasse específica; se sim, recebe valor 1, caso contrário, 0.
- Exemplo prático: na especialização "peça", ela pode ser tanto manufaturada quanto comprada. Cada tipo possui seus próprios atributos e flags correspondentes.
Inserção de Dados em Peças
- Durante a inserção dos dados, se a peça for comprada ou manufaturada, o respectivo flag deve estar marcado como 1 e os valores dos atributos dessa subclasse devem ser fornecidos.
- É possível ter peças que sejam simultaneamente manufaturadas e compradas; nesse caso, ambos os flags estarão marcados como 1.
Mapeamento de Agregações
- As agregações devem ser mapeadas considerando o relacionamento entre entidades; isso requer a criação de relações adequadas para representar esses vínculos.
- A escolha dos atributos para chave primária depende da semântica representada na agregação.
Conclusão do Mapeamento