MER - Relacionamentos 1 MER - Relacionamentos Dado os relacionamentos: Fig. 1 Funcionários Fig. 2 Funcionários Fig. 3 Funcionários N 1 N Lotações Gerenciamentos Participações 1 1 N Departamentos Departamentos Projetos E a seguinte exigência: Não pode haver nenhum funcionário que não esteja lotado em um departamento (Fig.1); Não deve haver nenhum departamento sem gerente (Fig.2); Não deve haver nenhum projeto sem algum funcionário que participe dele. 2 1 MER - Relacionamentos As restrições apresentadas deverão ser representadas no modelo utilizando uma representação gráfica específica. Quando uma restrição é identificada, incluímos uma bolinha cheia na saída da aresta que une um losango ao retângulo. Não pode haver nenhum funcionário que não esteja lotado em um departamento N Projetos N Participações N Lotações 1 Funcionários Departamentos 1 Não deve haver nenhum projeto sem algum funcionário que participe dele Gerenciamentos 1 Não deve haver nenhum departamento sem gerente MER - Relacionamentos Observar no diagrama que: 1. Podem existir funcionários que não são gerentes e funcionários que não participam de projeto nenhum; 2. Pode haver departamentos sem funcionários, por exemplo, no caso de departamentos recém-criados. N Projetos N Participações N Lotações Funcionários 1 Departamentos 1 Gerenciamentos 1 2 MER - Relacionamentos Totalidade Mínima: Suponhamos agora que cada departamento deva necessariamente ter algum funcionário nele lotado e um departamento não possa ser criado com menos de 10 funcionários. Isso significa que cada elemento de Departamentos deve ocorrer em no mínimo 10 pares na entidade Lotações. Como poderíamos representar essa situação ? A restrição anterior pode ser representada graficamente da seguinte forma: Funcionários N 1 Lotações Departamentos 10 MER - Relacionamentos Observação sobre a totalidade mínima: É interessante notar que ao representarmos essas várias restrições de integridade no modelo conceitual, possibilitaremos a conversão estrutural para os modelos operacionais, sem que seja necessário pensar-se nas particularidades. Assim, uma classe 1:N, neste caso, deve provocar a chamada de uma rotina padrão de verificação dessa restrição, sempre que houver inserção de uma entidade do lado N (para saber se tem os 10 funcionários alocados). Funcionários N 1 Lotações Departamentos 10 3 MER - Relacionamentos Agora vamos imaginar um relacionamento que associe os materiais de insumo de uma empresa com os fornecedores dos mesmos: Materiais Código Nome N Fornecimentos Descrição N Nome Fornecedores CGC Endereço Durante o modelamento verificou-se a necessidade de acrescentar o preço de cada material. Esse preço depende, evidentemente, tanto do material como do fornecedor. Isto é, se colocássemos Preço como atributo de Materiais, não estaríamos modelando corretamente, pois o preço de um determinado material depende evidentemente do fornecedor. Portanto, o preço não é um atributo próprio do Material. Evidentemente, também não é atributo próprio do Fornecedor, pois se ele fornecer dois materiais, eles provavelmente tem preços diferentes. MER - Relacionamentos No exemplo visto, temos um caso típico de “atributo do relacionamento”. Na figura a seguir foram incluídos vários atributos do relacionamento, para tentar resolver o problema mencionado. Materiais Código Nome Descrição N Fornecimentos Tipo (fabricação, Revenda) N Fornecedores Preço * Condições Quantidade Prazo CGC Nome Endereço O caso mais comum é do preço depender da quantidade fornecida (quanto maior a quantidade menor o preço) e a cada quantidade corresponder um prazo de entrega. Chamamos a composição desses três atributos de Condições; evidentemente Condições é um atributo multivalorado, como representado no diagrama. Além disso, para cada material o fornecedor pode ser ou um fabricante ou um revendedor. 4 MER - Relacionamentos Auto-Relacionamentos Imagine R como sendo um relacionamento que relaciona elementos de um conjunto de entidades E a elementos desse mesmo conjunto E. Neste caso, R é denominado de auto-relacionamento. Ex: auto-relacionamento “Gerenciamento de Pessoal”. Mostra o fato de funcionários gerenciarem funcionários. FUNCIONÁRIOS 1 Gerencia N Gerenciado Gereciamentos De Pessoal Observar que foram acrescentados nas arestas do relacionamento dois rótulos, “Gerencia” e “Gerenciado”. Eles são necessários para distinguirem o papel que cada elemento do conjunto de entidades tem no relacionamento. MER - Relacionamentos Outro exemplo de auto-relacionamento: materiais (peças) usados em uma empresa e a sua composição. MATERIAIS N É componente de N Tem como componente Composições Quantidade contida A classe agora é N : N pois um material pode ter como componentes vários materiais (um motor é composto de cilindros, válvulas, etc.) e um material pode ser componente de vários materiais (parafuso está contido no motor, no para-choque, na porta, etc.). Observar que foi acrescentada como atributo a “quantidade contida”; por exemplo, um motor pode ter 4 cilindros. 5 MER - Relacionamentos Relacionamentos Triplos Suponhamos uma empresa que constrói equipamentos complexos. A partir de desenhos de projetos dos equipamentos, são feitos documentos de requisições de materiais necessários para a construção; toda requisição de um material dá origem a um ou mais pedidos de compra. Queremos modelar essa estrutura, mostrando quais materiais de que requisições geraram quais pedidos. Essa tripla informação pode ser representada por um relacionamento triplo: Materiais N Observar que na falta de um nome adequado, colocamos no relacionamento as iniciais dos conjunto entidades M-R-P M–R-P N Requisições N Pedidos de Compra MER - Relacionamentos No exemplo anterior, como deve ser entendida a classe N : N : N do relacionamento ? Na verdade os relacionamentos triplos são uma extensão da classe de relacionamentos binários. Portanto, podemos cortar a aresta que sai do Materiais por meio de um arco. O que está a direita desse arco associa-se com um número qualquer de materiais (indicado pelo N). O que está do lado direito é um par de Requisição-Pedido. Materiais N M–R-P N Requisições N Pedidos de Compra 6 MER - Relacionamentos Podemos também imaginar que um material de uma requisição pode dar origem a vários pedidos, e um material em um pedido pode originar-se de várias requisições. Portanto, devemos representar esta situação (usando as bolinhas) indicando as seguintes restrições: não há nenhuma requisição que não pertença a M-R-P, isto é, deve referir-se a algum material constante de algum pedido; qualquer pedido é originário de algum material mencionado em alguma requisição. Materiais N M–R-P N Requisições N Pedidos de Compra MER - Relacionamentos Outro exemplo, agora com um relacionamento 1 : N : N. Dado um aluno em uma disciplina, há um só professor associado a eles, isto é, um aluno não pode ter em uma certa disciplina mais do que um professor; por outro lado, um professor pode ministrar uma disciplina para um número qualquer de alunos, e um professor pode dar a um certo aluno mais do que uma disciplina. Como representaríamos esta situação? Professores 1 P–A–D N Alunos N Disciplinas 7 MER - Relacionamentos Agora um caso 1 : 1 : 1 Imaginemos que um banco queira armazenar informações sobre correntistas, contas correntes e cartão magnético. Os cartões magnéticos existem no mundo real, e têm vários atributos próprios, como data da emissão, número do cartão, data da validade, restrição de quantia a sacar, etc. Assim, o projetista resolveu representá-los por meio de um conjunto de entidades, o mesmo acontecendo com contas correntes e correntistas. Acontece que esse era um banco que confiava em seus correntistas, de modo que sempre emitia um cartão magnético para cada correntista de cada conta corrente (lembremos que uma conta corrente pode ter mais de um correntista. Ex: conta conjunta, e/ou). Se um correntista abre duas contas diferentes, ele ganha automaticamente um cartão para cada uma. Como representamos essa situação? MER - Relacionamentos Resposta do enunciado anterior: Correntistas 1 C–C–C 1 Contas Correntes 1 Cartões Magnéticos 8 MER - Exercícios Departamento Empregado Projeto Escritório Telefone Função Histórico Salarial 17 MER - Exercícios A figura anterior mostra informações existentes no cadastro de pessoal de uma empresa, representadas na forma de um diagrama hierárquico. A figura deve ser lida da seguinte forma: - A empresa possui um conjunto de departamentos. - Cada departamento possui um conjunto de empregados, um conjunto de projetos e um conjunto de escritórios. - Cada empregado tem um histórico de funções exercidas (os cargos que ele já ocupou). Para cada função, o empregado tem também um histórico de salário (valores que recebeu durante o tempo que exerceu a função). - Cada escritório possui um conjunto de telefones. 18 9 MER - Exercícios As informações armazenadas no cadastro incluem as seguintes (podem surgir outras com a interpretação da figura apresentada): Para cada departamento: número (único), orçamento anual e o número do registro do gerente do departamento (único). O gerente é sempre um empregado da empresa. Para cada empregado: número de registro (único), nome, idade, número do projeto em que está trabalhando atualmente (cada empregado trabalha somente em um projeto por vez), número do escritório em que trabalha e número de seu chefe imediato (outro empregado). Além disso é armazenado o nome de cada função que o empregado ocupou, juntamente com o período em que ocupou a função (datas de início e fim) e os diversos salários recebidos neste período (devido a possíveis aumentos em uma mesma função). Para cada projeto: número (único), orçamento total e o número de registro do empregado responsável pelo projeto. Para cada escritório: número (único), área ocupada e números de telefones usados por ele. Um mesmo número pode ser usado por mais de um escritório. Utilize este problema para realizar a abstração de dados, definindo: ENTIDADES, ATRIBUTOS E RELACIONAMENTOS. 19 10