Roteiro Mapeamento dos Modelos ER e EER Posicionamento Luiz Henrique de Campos Merschmann Departamento de Computação Universidade Federal de Ouro Preto [email protected] www.decom.ufop.br/luiz Introdução Algoritmo de Mapeamento do ER para o Relacional Algoritmo de Mapeamento do EER para o Relacional BCC321 - Banco de Dados I Ementa 1. Conceitos básicos em sistemas de banco de dados. 2. Conceitos e arquitetura de sistemas de banco de dados. 3. Modelagem conceitual de dados. 4. Modelo Relacional: conceitos básicos e restrições de integridade. 5. Linguagens: álgebra e cálculo relacional. 6. A linguagem SQL e o uso de APIs. 7. Projeto de banco de dados. 8. Normalização de banco de dados. 9. Noções de processamento de transações, concorrência e recuperação de falhas. 10. Aspectos de implementação de banco de dados. Processo de Projeto de Banco de Dados Introdução I Projeto lógico do banco de dados = mapeamento do modelo ER (ou EER). I Mostraremos um algoritmo com os passos para conversão dos construtores do modelo ER e EER em relações. Passo 1: Mapeamento dos Tipos de Entidade Regulares I Para cada tipo de entidade regular (forte) E, criar uma relação R que inclua todos os atributos simples de E. I Incluir somente os componentes simples dos atributos compostos. I Escolher um dos atributos-chave de E como chave primária de R. I Se múltiplas chaves forem identificadas para E ⇒ chaves secundárias (unique keys) da relação R. Algoritmo de Mapeamento do ER para o Relacional I Passo 1: Mapeamento dos Tipos de Entidade Regulares. I Passo 2: Mapeamento dos Tipos de Entidade Fracas. I Passo 3: Mapeamento dos Tipos de Relacionamento Binários 1:1. I Passo 4: Mapeamento dos Tipos de Relacionamento Binários 1:N. I Passo 5: Mapeamento dos Tipos de Relacionamento Binários N:M. I Passo 6: Mapeamento de Atributos Multivalorados. I Passo 7: Mapeamento dos Tipos de Relacionamento N-ário. Esquema Conceitual ER para o Banco de Dados EMPRESA Passo 2: Mapeamento dos Tipos de Entidade Fracas I Para cada tipo de entidade fraca W (que contém sua respectiva entidade proprietária E), criar uma relação R que inclua todos os atributos simples de W . I Incluir somente os componentes simples dos atributos compostos. I Inserir como chave estrangeira de R os atributos que são chave(s) primária(s) da(s) relação(ões) que corresponde(m) aos tipos de entidade(s) proprietária(s). I A chave primária de R: chave(s) primária(s) do(s) tipo(s) de entidade proprietária(s) de R + chave parcial do tipo de entidade fraca (se houver). I Se existir um tipo de entidade fraca E2 cuja entidade proprietária é também uma entidade fraca E1 , então E1 deve ser mapeada antes de E2 . Passo 3: Mapeamento dos Tipos de Relacionamento Binários 1:1 I Identificar as relações S e T que correspondem aos tipos de entidades participantes do relacionamento R. Esquema Conceitual ER para o Banco de Dados EMPRESA Passo 3: Mapeamento dos Tipos de Relacionamento Binários 1:1 Chave estrangeira I Escolher uma das relações – p.ex. S – e nela inserir, como chave estrangeira, a chave primária de T . I Recomenda-se escolher o tipo de entidade com a participação total em R para exercer o papel de S. I Incluir todos os atributos do tipo de relacionamento R como atributos de S. Há três escolhas possíveis: I Chave estrangeira – recomendada. I Relação mesclada (unificada). I Referência cruzada (ou relação de relacionamento). Esquema Conceitual ER para o Banco de Dados EMPRESA Passo 3: Mapeamento dos Tipos de Relacionamento Binários 1:1 Relação mesclada I Incorporar o tipo de relacionamento e os tipos de entidade envolvidos a uma única relação. I Opção apropriada quando ambas as participações são totais. Referência cruzada (ou relação de relacionamento) Passo 4: Mapeamento dos Tipos de Relacionamento Binários 1:N I Identificar a relação S que representa o tipo de entidade participante do lado N do tipo de relacionamento. I Inserir como chave estrangeira de S a chave primária da relação T (que representa o outro tipo de entidade participante em R). I Incluir qualquer atributo simples (ou componentes dos atributos compostos) do tipo de relacionamento R como atributo de S. Alternativa: criar uma relação de relacionamento, cujos atributos seriam as chaves de S e T , e cuja chave primária seria a mesma de S. I I Essa escolha pode ser usada se poucas tuplas de S participarem do relacionamento. Assim, evitaríamos o excesso de valores null na chave estrangeira. I Definir uma terceira relação R com a finalidade de servir de referência cruzada às chaves primárias das duas relações S e T que mapeiam os tipos de entidade. I Essa terceira relação R é chamada relação de relacionamento ou, algumas vezes, tabela de pesquisa. Esquema Conceitual ER para o Banco de Dados EMPRESA Passo 5: Mapeamento dos Tipos de Relacionamento Binários M:N I Para cada tipo de relacionamento R M:N, criar uma nova relaçao S para representar R. I Inserir como chave estrangeira em S as chaves primárias das relações que representam os tipos de entidade participantes do relacionamento R. I A combinação das chaves (citadas no item anterior) formará a chave primária de S. I Incluir quaisquer atributos simples (ou os componentes dos compostos) do tipo de relacionamento R como atributos de S. I Observe que não podemos representar um relacionamento M:N por meio de uma simples chave estrangeira em uma das relações participantes. Passo 6: Mapeamento de Atributos Multivalorados I Para cada atributo multivalorado A, criar uma nova relação R. I R deverá conter um atributo correspondente a A, mais chave primária K (como chave estrangeira em R) da relação que representa o tipo de entidade ou de relacionamento que tem A como atributo. I A chave primária de R será a combinação de A e K. I Se o atributo multivalorado for composto, incluiremos seus componentes simples. Esquema Conceitual ER para o Banco de Dados EMPRESA Esquema Conceitual ER para o Banco de Dados EMPRESA Resultado do Mapeamento Passo 7: Mapeamento dos Tipos de Relacionamento N-ário I Para cada tipo de relacionamento R n-ário (n > 2), criar nova relação S. I Incluir como chave estrangeira em S, as chaves primárias das relações que representam os tipos de entidade participantes. I Incluir qualquer tipo de atributo do relacionamento n-ário como atributo de S. A chave primária de S é, normalmente, a combinação de todas as chaves estrangeiras que fazem referência às relações representantes dos tipos de entidade participantes. I I Passo 7: Mapeamento dos Tipos de Relacionamento N-ário Se a restrição de cardinalidade em algum tipo de entidade participante E for 1, então a chave primária de S não deve incluir a chave estrangeira que faz referência à relação correspondente à E. Mapeamento dos Construtores EER para as Relações Passo 8: Opções para mapeamento de especialização/generalização I A) Relações múltiplas (superclasse e subclasse). I B) Relações múltiplas (somente subclasses). I C) Relação única com um atributo tipo. I D) Relação única com múltiplos atributos tipo. Mapeamento dos Construtores EER para as Relações Relações Múltiplas (Superclasse e Subclasses) Exemplo Considerações I Subclasses = {S1 , S2 , . . . , Sm } I Superclasse C, com atributos Atr(C) = {k, a1 , a2 , . . . , an } e chave primária P K(C) = k Relações múltiplas (superclasse e subclasses) I Criar uma relação L para C com Atr(L) = {k, a1 , a2 , . . . , an } e P K(L) = k. I Criar uma relação Li para cada subclasse Si com Atr(Li ) = {k} ∪ Atr(Si ) e P K(Li ) = k. I Essa opção funciona para qualquer situação, ou seja, especialização total, parcial, disjunta ou sobreposta. Mapeamento dos Construtores EER para as Relações Relações Múltiplas (Somente Relações de Subclasses) Exemplo Relações múltiplas (somente relações de subclasses) I Criar uma relação Li para cada subclasse Si com Atr(Li ) = {k, a1 , a2 , . . . , an } ∪ Atr(Si ) e P K(Li ) = k. I Essa opção funciona somente para especializações totais. I Só é recomendado se a especialização tiver a restrição de disjunção. Mapeamento dos Construtores EER para as Relações Relação Única com um Atributo Tipo Exemplo Relação única com um atributo tipo I Criar uma única relação L com Atr(L) = {k, a1 , a2 , . . . , an } ∪ Atr(Si ) ∪ . . . ∪ Atr(Sm ) ∪ {t} e P K(L) = k. I O atributo t é chamado de atributo tipo e serve para indicar a subclasse à qual cada tupla pertence. I Essa opção funciona para quaisquer especializações cujas subclasses sejam disjuntas. Mapeamento dos Construtores EER para as Relações Relação Única com Múltiplos Atributos Tipo Exemplo Relação única com múltiplos atributos tipo I Criar uma única relação L com Atr(L) = {k, a1 , a2 , . . . , an } ∪ Atr(Si ) ∪ . . . ∪ Atr(Sm ) ∪ {t1 , t2 , . . . , tm } e P K(L) = k. I Cada atributo ti é um atributo do tipo booleano que serve para indicar se a tuplas pertence ou não àquela subclasse Si . I Essa opção funciona para quaisquer especializações cujas subclasses sejam sobrepostas (ou disjuntas). Mapeamento dos Construtores EER para as Relações Exemplo de Mapeamento de Reticulado Exemplo: Para hierarquia ou reticulado de especialização/generalização: I Não temos que seguir a mesma opção de mapeamento para todas as especializações. I Ou seja, podemos usar uma opção para uma parte da hierarquia ou reticulado e outras opções para outras partes. Exemplo de Mapeamento de Reticulado I Opção relações múltiplas – superclasse e subclasse para PESSOA/{FUNCIONARIO, EX_ALUNO, ALUNO}. I Opção relação única com um atributo tipo para FUNCIONARIO/{ADMINISTRATIVO, DOCENTE, ALUNO_COLABORADOR}. I Opção relação única com vários atributos tipo para ALUNO_COLABORADOR/{COLABORADOR_PESQUISA, COLABORADOR_ENSINO}, ALUNO/ALUNO_COLABORADOR e ALUNO/{ALUNO_POSGRADUACAO, ALUNO_GRADUACAO}. Exemplo de Mapeamento de Reticulado Mapeamento dos Construtores EER para as Relações Exemplo de Mapeamento dos Tipos União Mapeamento dos Tipos União I Para o mapeamento de uma categoria que define as superclasses que têm chaves diferentes, especificar um novo atributo-chave (chave substituta). I Motivo: as superclasses têm chaves diferentes, de modo que não podemos usar nenhuma delas em particular para a identificação de todas as entidades da categoria. Perguntas? FIM