Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Sumário 1 Componentes do DER ............................................................................................................. 2 1.1 Entidades ......................................................................................................................... 2 1.2 Atributos .......................................................................................................................... 4 1.2.1 Atributos monovalorados .......................................................................................... 5 1.2.2 Atributo Multivalorado .............................................................................................. 5 1.2.3 Atributo simples VS composto .................................................................................. 6 1.3 Relacionamentos ............................................................................................................. 9 1.3.1 Restrições em relacionamento (Cardinalidade) ...................................................... 11 1.3.2 Relacionamento ternário ......................................................................................... 19 1.3.3 Autorrelacionamento .............................................................................................. 20 1.3.4 Atributos de relacionamento................................................................................... 21 2 Exemplo prático assistência técnica ..................................................................................... 23 Esse conteúdo foi retirado do material do professor Jean Rojas do IFMS/Corumbá e da sexta edição do livro de Carlos Alberto Heuser, obra intitulada Projeto de Banco de Dados. Diagrama Entidade Relacionamento: DER O Diagrama Entidade-Relacionamento (DER) é um modelo conceitual de alto nível, criado na década de 70, e que é empregado no desenvolvimento de projetos de aplicações que vão manipular Banco de Dados. Seu objetivo é o de facilitar a compreensão por parte do usuário, sendo visto como uma ferramenta útil durante o processo de projeto da base de dados, descartando detalhes de como os dados serão armazenados. A figura 2.1 apresenta uma solução proposta de modelagem de alto nível utilizando o DER para o estudo de caso EMPRESA apresentado no material da primeira semana. 2 1 Componentes do DER Um DER é composto pelos seguintes elementos: • Entidades: objeto do mundo real com identificação distinta e com um significado próprio. • Atributos: qualificadores de uma entidade (características que a descrevem). • Relacionamentos: dependência entre entidades associadas: quando um atributo de uma entidade se refere a outra. • Restrições em relacionamentos: limitam a possibilidade de combinações de entidades que podem participar do relacionamento (restrições estruturais). A seguir, analisaremos cada um deles com detalhes. 1.1 Entidades No modelo ER a entidade é um dos conceitos-chave. Uma entidade representa um conjunto de objetos, sejam reais ou abstratos, que se deseja manter informações cadastradas. Ao falar sobre conjunto de dados, algumas pessoas com conhecimento em sistemas de banco de dados relacionais, 3 logo fazem referência a tabelas. Mas existe diferença entre tabelas e entidades, que será explicada na parte relacional. Graficamente, o jeito mais fácil de representar uma entidade é como mostra a figura abaixo: A entidade é Cliente e Maria Santos é uma ocorrência específica da entidade Cliente. Outros exemplos de entidades seriam: Carro, Fornecedor, Funcionário. Os nomes das entidades são sempre representados por substantivos concretos ou abstratos. Não é aconselhável colocar o nome no plural; por definição, uma entidade já é um conjunto. A definição de acentos no nome das entidades é opcional, como o modelo que estamos construindo é abstrato, não faz diferença, único detalhe é na hora da tradução para o modelo lógico, pois a maioria dos SGBDs não aceitam caracteres especiais no nome dos objetos. Uma entidade tem as seguintes características: • Representa uma classe de dados, onde suas instâncias (ocorrências) são a representação desses dados. • É representado por retângulos com nome em seu interior, sendo que o nome deve estar no singular, representando o conjunto (de instâncias). • Possui atributos qualificadores de uma entidade (características que a descrevem). Uma Entidade pode ser um objeto (livro), uma pessoa (empregado), abstrato (curso), acontecimento (inscrição). O nome depende do contexto (pessoa: Aluno, Professor, Segurado, Contribuinte, Empregado). 4 1.2 Atributos O atributo corresponde a um dado que é associado a cada ocorrência de uma entidade ou relacionamento. Eles são dados relacionados com aquela ocorrência específica no diagrama entidade relacionamento. Os atributos são representados por pequenos círculos. Atributos são representados graficamente conforme ilustrado na figura abaixo: Na prática, muitas vezes os atributos não são representados graficamente para não sobrecarregar os diagramas, já que entidades podem possuir muitos atributos. Nesses casos é preferível o uso de representação textual. É importante ressaltar que toda entidade deve ter pelo menos um atributo, sendo que deve apresentar atributo identificador: • Valor sempre distinto para cada instância, caracterizando que não existem objetos repetidos; • Restrição de unicidade ou chave primária; • Não pode ser um valor nulo (vazio, desconhecido). 5 1.2.1 Atributos monovalorados Assim como nos relacionamentos existem cardinalidade, nos atributos elas também existem. O objetivo é dizer quantos valores daquele atributo podem estar em uma ocorrência da entidade ou relacionamento. Monovalorado opcional Veja o exemplo de atributo monovalorado opcional, cardinalidade (0,1): O atributo Complemento é monovalorado opcional, pois ele pode ou não ter valor, afinal, existem endereços que não têm complemento. Monovalorado obrigatório Quando não existe cardinalidade explícita ao lado do atributo, automaticamente entende-se que a cardinalidade dele é (1,1), ou seja, o atributo é monovalorado e obrigatório. Veja como ficaria o diagrama acima se a cardinalidade fosse expressa nos atributos monovalorado obrigatório: Como a maioria dos atributos mostrados no modelo entidade relacionamento são do tipo monovalorado obrigatório (Cardinalidade (1,1)), se fosse preciso exibir a cardinalidade deles, isso tornaria o diagrama visualmente mais poluído. 1.2.2 Atributo Multivalorado Assim como os relacionamentos têm cardinalidade N, indicando que uma ocorrência pode se relacionar com várias outras ocorrências, os atributos também possuem a cardinalidade N para indicar que eles podem receber vários valores daquele atributo. Veja um exemplo de atributo multivalorado opcional: Uma ocorrência da entidade Contato pode ter no mínimo 0 telefone e, no máximo, N. Apesar de ser muito difícil, hoje em dia, uma pessoa não ter telefone, pode acontecer. Assim como existem pessoas que possuem vários números de telefone. 6 Atributo multivalorado obrigatório Além dos atributos multivalorados opcionais, existem os multivalorados obrigatórios. Veja: No caso do cadastro de um site, o usuário obrigatoriamente deve possuir, no mínimo, um e-mail; e, caso queira, pode cadastrar mais de um e-mail para contato. Assim como na área da programação, existe uma infinidade de regras de bons costumes como: manter a formatação do código e manter o padrão dos nomes das variáveis, classe e etc. No DER também existem os bons costumes. Assim como os relacionamentos ternários não são muito utilizados devido a alguns problemas, os atributos multivalorados também enfrentam um grande problema que os tornam questão de mau costume. Ao transformar o modelo do exemplo para relacional, na hora de implementar no banco, será precisoque ele tenha suporte para campos multivalorados ou array. Mas o grande problema é que alguns não têm essa funcionalidade e outros até têm, mas são difíceis de trabalhar. Então, ao invés de criar um atributo multivalorado, você deverá usar uma nova tabela. Veja o exemplo do Usuário, usando uma entidade adicional: O modelo acima, além de ser mais fácil de implementar nos SGBDs relacionais, possibilita adicionar mais detalhes sobre o e-mail, como Descrição. Agora vem a pergunta que não quer calar: Por que aprender sobre atributos multivalorados no curso? Porque na modelagem existem várias decisões que devem ser tomadas pelo modelador. Em último caso, você pode usar os atributos multivalorados como opção. Outra coisa que poderia acontecer é, em um projeto, ter um atributo multivalorado e você nem mesmo ter ideia do que significa. Então, durante o curso, será mostrado o máximo de elementos possíveis e porque devem ser usados ou não. 1.2.3 Atributo simples VS composto Atributo Simples Todos os atributos mostrados até agora são considerados simples e conhecidos como atômicos (do grego átomo, que significa indivisível). Exemplo de atributos simples: 7 Pela lógica não faz sentido dividir o atributo login em duas partes. Por exemplo, para que dividir o login: Maria_2010 em duas partes? Não há necessidade alguma. A mesma coisa para os atributos senha e frase de segurança. Atributo Composto Agora pense no atributo endereço. O que compõe esse atributo? R: logradouro, número, complemento Pode-se criar um atributo composto Endereço, que contenha todos esses atributos. Veja o exemplo: Segundo a definição, um atributo composto é aquele que pode ser divido em partes menores. Veja outro exemplo: O atributo nome_completo foi separado em nome e sobrenome. O atributo end_completo foi separado em estado, cidade e bairro. O grande detalhe está no atributo end_rua, pois se trata de um atributo composto dentro de outro. Você pode criar quantos atributos compostos alinhados quiser, mas lembre-se que se deve manter os diagramas sempre os mais limpos possíveis. É desnecessário criar vários atributos se eles podem ser representados apenas no modelo relacional. Modelo equivalente No modelo entidade relacionamento quase sempre existem vários jeitos de representar um mesmo modelo, o que é chamado de equivalente. No caso dos atributos compostos não é diferente: pode ser feito um modelo equivalente colocando-se todos os atributos simples na própria entidade. Veja como fica a entidade Pessoa: 8 No capítulo de transformação entre modelos, você verá que os dois diagramas são equivalentes (geram o mesmo resultado). É opção do modelador escolher qual usar. Atributos Identificadores Conforme já mencionado, toda entidade tem sempre pelo menos um atributo. Quando o atributo permite distinguir uma ocorrência das demais ocorrências de uma mesma entidade, ele é considerado um especial conhecido como atributo identificador de entidade. Note, contudo, que um atributo identificador corresponde a um conjunto de um ou mais atributos ou relacionamentos. A figura abaixo apresenta um atributo concatenado, que é um atributo identificador composto por mais do que um atributo, nesse caso composto pelos atributos Nome e Número: Outro aspecto a ser observado é a característica do atributo identificador, que pode ser inerente à entidade ou dependente de uma entidade ou relacionamento externo. No primeiro caso, a entidade que possui um atributo identificador próprio é chamada de entidade primária ou entidade forte. Já quando a entidade não pode ser identificada somente através de seus próprios atributos, muitas vezes dependendo de um relacionamento para poder ser identificada, ela é chamada de entidade fraca, sendo representada por um retângulo com linha dupla conforme demonstrado na próxima figura. A seguir apresentamos alguns exemplos para ajudar a compreender esses conceitos. Entidade primária ou entidade forte: • Atributo próprio (CPF, número da placa); • Código atribuído pelo sistema (Número de Matrícula, Código de Fornecedor). Entidade fraca: • Um dependente, que precisa do nome do seu pai ou mãe. • Um item em uma Nota Fiscal, que precisa do número da Nota Fiscal e possivelmente o código do produto correspondente. 9 1.3 Relacionamentos Um Relacionamento é a representação de um conjunto de associações entre as ocorrências de entidades. Dessa forma, podemos representar as interações existentes no mundo real, que foram identificadas no processo de análise, entre as entidades. Em um DER, um relacionamento é representado por uma linha reta ligando as entidades relacionadas e, em geral, tem como nome um verbo que represente o contexto da relação em questão. A figura abaixo apresenta alguns exemplos de relacionamentos utilizando a notação original, onde o nome do relacionamento aparece dentro de um losango na interligação de suas respectivas entidades. Os relacionamentos são usados para manter o histórico das associações mantidas entre a ocorrência de uma entidade com outra ocorrência. Por exemplo, suponha que você queira saber quais os funcionários que trabalham em determinado projeto: • Funcionario armazena os objetos do tipo funcionário. • Projeto armazena os objetos do tipo projeto. • Trabalha armazena a relação entre os objetos do tipo funcionário e projeto. Graficamente, um exemplo desse relacionamento ficaria assim representado: 10 Veja algumas observações sobre a imagem acima: A função do relacionamento Trabalha é guardar os funcionários que trabalham em determinado projeto, como mostra o exemplo acima: • O funcionário 7 trabalha no projeto 1. • O funcionário 3 trabalha no projeto 4. • O funcionário 4 trabalha no projeto 3. Note que existem ocorrências de funcionarios que não trabalham em nenhum projeto: f1, f2, f5 e f6; e existe o projeto p2 que não tem funcionário. Não há problema nisso. Ao abordar entidade, foi mostrado um exemplo sobre ocorrência de entidade, lembrando que ocorrência é um registro único da entidade. Os relacionamentos também possuem ocorrência de relacionamento. Veja a imagem abaixo: O par f7- p1 é uma ocorrência de relacionamento. Como mostra a imagem acima, f7 é uma ocorrência de funcionario e p1 é de projeto. Os relacionamentos geralmente representam a ação de uma entidade sobre outra. Por esse motivo, o nome dos relacionamentos preferencialmente deve ser verbo. 11 1.3.1 Restrições em relacionamento (Cardinalidade) No processo de modelagem é importante identificar não apenas as entidades e seus relacionamentos, mas também estabelecer a quantidade de ocorrências de cada um desses relacionamentos. A essa propriedade damos o nome de cardinalidade, que se desdobra em cardinalidade máxima e a cardinalidade mínima. A cardinalidade tem como principal objetivo dizer ao modelo com quantas ocorrências da outra entidade, uma única ocorrência daquela entidade pode se relacionar. No Diagrama entidade relacionamento as cardinalidades são representadas por dois números, que ficam ao lado da entidade, sendo a primeira cardinalidade mínima e a segunda cardinalidade máxima. Veja alguns relacionamentos e suas cardinalidades: No início, pode parecer um tanto confuso, mas não se preocupe. Você irá entendendo ao acompanhar a explicação passo a passo. 1.3.1.1 Cardinalidade máxima No DER existem as cardinalidades mínimas e máximas. A cardinalidade máxima, como o próprio nome indica, tem o objetivo de mostrar o máximo que uma ocorrência da entidade X pode se relacionar com a da entidade Y. 12 1.3.1.1.1 Relacionamento 1 para 1 Aproveitando o exemplo usado até agora, funcionário projeto, veja a imagem abaixo: No caso acima, está indicado que um funcionário pode participar de, no máximo, um projeto; e um projeto pode ter, no máximo, um funcionário. Vejao gráfico abaixo: Nessa cardinalidade, um projeto não pode estar associado a mais de um funcionário, assim como um funcionário não pode estar em mais de um projeto. 1.3.1.1.2 Relacionamento 1 para N Agora veja este outro exemplo: Nesse exemplo está indicado que um funcionário pode trabalhar em, no máximo, um projeto; e que em um projeto podem trabalhar, no máximo, dez funcionários. Parece estranho, mas no DER a cardinalidade de um elemento fica no lado oposto dele. Veja: Esse é o modo correto de ler um relacionamento. Com o tempo, isso fica tão natural que nem se percebe que os lados são trocados. 13 O exemplo acima contém um problema: no DER não existe cardinalidade máxima que indique o número exato de ocorrências que podem se relacionar, pois, para o banco de dados, é indiferente se vão se relacionar 2 funcionários para um projeto, 10, 100 ou 1000. Então, sempre que for mais de 1 será representado pela letra N. Ajustando, o diagrama acima ficaria assim: Agora, independente, se há 10 ou 1000 funcionários em um projeto, o diagrama cobrirá sem problema algum. Graficamente ficaria assim: Cada funcionário só pode trabalhar em um único projeto, mas um projeto pode ter vários funcionários. Lembrando que não existe problema se, em um projeto, trabalhar apenas um funcionário, como é o caso do p3. 1.3.1.1.3 Relacionamento N para N Veja o gráfico abaixo: 14 Levando em conta a cardinalidade vista anteriormente 1 para N, esse gráfico estaria totalmente errado, pois o funcionário f3 trabalha no projeto p1 e ao mesmo tempo no p4. Segundo o diagrama, um funcionário poderia trabalhar em, no máximo, 1 projeto. Nessa parte entra a cardinalidade máxima N para N. Existem situações em que é necessário que a cardinalidade máxima de ambas as partes seja do tipo N. Veja o exemplo: Com o diagrama acima, o gráfico ficou correto. Agora um mesmo funcionário pode trabalhar em vários projetos, e um projeto pode ter vários funcionários. A cardinalidade é muito importante para o modelo de dados. Você aprenderá no andamento do curso, que ao transformar do modelo conceitual para o modelo lógico, se houver problemas nas cardinalidades, o modelo lógico poderá sair diferente do que se queria representar no modelo conceitual. Exemplos de cardinalidade máxima Primeiro exemplo Nesse exemplo um cliente pode ter no máximo um contrato e um contrato pode ter apenas um cliente. Vale relembrar que a cardinalidade é lida pelo lado oposto. O 1 ao lado do Contrato indica que um cliente pode ter no máximo um contrato; e o 1, ao lado de Cliente, indica que um contrato pode ter no máximo um cliente. Segundo exemplo Um aluno pode ter no máximo 1 curso; já um curso pode ter N alunos, ou seja, vários alunos. Terceiro exemplo 15 Um produto pode ter vários pedidos e um pedido pode ter vários produtos. 1.3.1.2 Cardinalidade Mínima No diagrama entidade relacionamento, se deve expressar o número máximo que uma ocorrência de entidade pode se relacionar com outras ocorrências de entidade, como explicado no tópico anterior, além de indicar o mínimo que uma ocorrência de entidade pode se relacionar com outra ocorrência. As cardinalidades mínimas existentes são 0 e 1, sendo que 0 expressa relacionamento opcional e 1 expressa relacionamento obrigatório. 1.3.1.2.1 Relacionamento opcional Os relacionamentos opcionais são indicados pela cardinalidade mínima 0. Nesse tipo de relacionamento podem existir ocorrências de entidade que não se relacionam com nenhuma outra ocorrência dentro daquele relacionamento. Veja o gráfico a seguir: Para expressar o gráfico acima, no modelo entidade relacionamento, ficaria assim: Note que esse relacionamento é opcional para os dois lados, pois tanto o projeto pode ter no mínimo 0 funcionário, como o funcionário pode trabalhar em no mínimo 0 projeto. Lembrando que no caso acima apenas as cardinalidades mínimas estão sendo mostradas. No fim deste capítulo você encontrará vários exemplos de relacionamentos completos com cardinalidade mínima e máxima. 1.3.1.2.2 Relacionamento obrigatório O relacionamento obrigatório é representado pela cardinalidade mínima 1. Nesse tipo de relacionamento a entidade que for representada com cardinalidade 1 deve, obrigatoriamente, ter todas as ocorrências relacionadas. Obrigatório de um lado 16 No exemplo acima, as cardinalidades são opcionais para os dois lados. Suponha que você queira forçar todo projeto ter no mínimo 1 funcionário trabalhando. Veja como ficaria o diagrama: Agora todo projeto deve ter no mínimo 1 funcionário. Logo, o Projeto se tornou relacionamento obrigatório. Veja um gráfico válido para o diagrama acima: Obrigatório para ambos os lados Se, por algum motivo, for preciso que cada funcionário trabalhe, no mínimo, em um projeto, o diagrama ficaria assim: Veja o gráfico: O relacionamento 1 para 1 é obrigatório para os dois lados. Agora todo funcionário deve trabalhar em, no mínimo, 1 projeto; e um projeto deve ter, no mínimo, um funcionário trabalhando. Acompanhe alguns exemplos de gráficos errados para o relacionamento mínimo 1 para 1 acima: 17 Os funcionários f1, f2, f5 e f6 não trabalham em nenhum projeto e, segundo o diagrama, eles deveriam trabalhar no mínimo em um. Nos projetos p2 e p5 não trabalha nenhum funcionário, sendo que o mínimo deveria ser um funcionário por projeto. O caso acima está errado tanto nos relacionamentos das ocorrências da entidade Funcionário quanto de Projeto, pois todas as ocorrências devem se relacionar com, no mínimo, uma instância da outra entidade. Exemplos de relacionamentos Para fixar os conceitos de relacionamentos e cardinalidade, acompanhe alguns exemplos básicos. Ao final dos tópicos de relacionamento será demonstrado um exemplo completo. Primeiro exemplo: 18 No exemplo acima: • Um cliente pode ter no mínimo 0 contrato e no máximo 1 contrato. • Um contrato pode ter no mínimo 1 cliente e no máximo 1 cliente. • Todo contrato deve ter um cliente associado a ele, pois um contrato sem cliente perde o sentido. • O cliente pode ser atendido pela empresa, mesmo sem ter contrato, mas não pode ter mais de um contrato. Segundo exemplo: No exemplo acima: • Um produto pode ter no mínimo 0 pedido e no máximo N pedidos. • Um pedido deve ter no mínimo 1 produto e no máximo N produtos. • O produto pode existir sem nunca ter sido vendido em um pedido. Por isso sua cardinalidade mínima é 0. Um mesmo produto pode estar em vários pedidos diferentes, por isso a cardinalidade máxima é N. • Um pedido sem produto não tem significado. Então, a cardinalidade mínima dele é 1. Assim, obrigatoriamente todo pedido deve ter no mínimo um produto. Não existe limite de produtos em um pedido, podendo ter N produtos no mesmo pedido. Por isso a cardinalidade máxima dele é N. Terceiro exemplo: No exemplo acima: • Um curso pode ter no mínimo 1 aluno e no máximo N alunos. • Um aluno pode fazer no mínimo 1 curso e no máximo 1 curso. • Todo curso deve ter pelo menos 1 aluno na turma, pois não faz sentido o professor ministrar um curso sem alunos. Por isso a cardinalidade mínima é 1. Em um curso é 19 possível ter vários alunos. No DER, mais de um é expresso como N; a cardinalidade máxima dele é N. • Em diversas faculdades públicas existem situações em que 1 aluno só pode fazer um curso por vez. Nesse caso, a cardinalidade máxima dele é 1. Também não faz sentido manter um aluno no cadastro se ele não faz nenhum curso, por isso a cardinalidade mínima dele é 1. 1.3.2 Relacionamento ternário No DER (diagrama entidade relacionamento) podem existir relacionamentos com grau maior que dois. Esses relacionamentos podem ser ternários, quaternários etc. Seu uso não é muito comum, mas é bom você conhecê-los e saber que existem. Exemplo derelacionamento ternário: Em um relacionamento binário as cardinalidades estão sempre ligadas ao quanto uma ocorrência de entidade pode se relacionar com a ocorrência da outra entidade. Já no relacionamento ternário, um par de ocorrências é que está relacionada à outra entidade. Exemplo: Em um relacionamento chamado Locação, há as entidades Projeto, Funcionário e Função. Você deve pensar do seguinte modo: “um par Funcionário Função pode estar alocado em quantos projetos?”. Veja como fica o diagrama: • Um funcionário e uma função podem participar de, no mínimo, 0 projeto; e no máximo N projetos. • Uma função em um projeto pode ser usada por, no mínimo, 0 funcionário; e no máximo N funcionários. 20 • Um funcionário em um projeto pode exercer, no mínimo, 0 função; e no máximo N funções. Veja o exemplo de gráfico do relacionamento acima: Nesse gráfico estão 3 ocorrências de relacionamento. Porém, ao invés de ser um par de referências, é um trio. O relacionamento ternário não é muito utilizado, pois é possível fazer modelos equivalentes e mais simples de entender com relacionamentos binários. Modelos equivalentes serão demonstrados no decorrer do curso. 1.3.3 Autorrelacionamento Existem relacionamentos entre duas entidades diferentes (binários); existem relacionamentos entre três entidades (ternários); e existem também relacionamentos entre ocorrências da mesma entidade, chamados autorrelacionamento, ou relacionamento recursivo, como trazem algumas bibliografias. Uma ocorrência da entidade exerce uma ação sobre outra ocorrência da mesma entidade. Veja o exemplo de diagrama: Um exemplo usando casamento pode ser meio traumático, para alguns. Porém, para fins didáticos, ele atende perfeitamente. Uma pessoa pode ser casada ou solteira. Então, a cardinalidade 21 mínima deve ser opcional. Por outro lado, uma pessoa não pode ser casada com duas pessoas ao mesmo tempo – pelo menos é isso que está previsto em lei – então, a cardinalidade máxima será um. Note que, no autorrelacionamento, uma ocorrência de entidade exerce uma ação sobre outra ocorrência da mesma entidade. No caso do exemplo, um é marido e a outra, esposa. Veja um possível gráfico de ocorrências para o diagrama acima: No gráfico, estão três ocorrências do relacionamento Casamento e apenas um sortudo, o p7, que é o único solteiro do gráfico. 1.3.4 Atributos de relacionamento Os atributos são propriedades de uma ocorrência de entidade ou relacionamento, cujo objetivo é tornar a ocorrência particular, com características próprias. Até agora, todos os atributos demonstrados estavam ligados às entidades. Mas existem casos em que um atributo não pode ser de responsabilidade de nenhuma entidade. Veja o exemplo abaixo: Primeiro relembre como ler um atributo: • Um paciente pode estar em, no mínimo, 0 consultas; e, no máximo, em N consultas. • Um médico pode realizar, no mínimo, 0 consultas; e, no máximo, N consultas. Até aqui tudo perfeito. Dispõe-se das informações do paciente e das informações do médico. Mas o histórico de data e hora das consultas deve ser salvo no banco de dados. Onde colocar esses atributos? Primeiro, os atributos Data e Hora foram inseridos em Paciente, como mostra a imagem: 22 Com os atributos data e hora na entidade Paciente, não é possível mais considerar as cardinalidades expressas do diagrama, pois como a data e hora da consulta estão fixadas no paciente, ele só poderá participar de uma consulta. Quando ele for realizar outra consulta você deverá apagar o campo data e hora e gravar novamente, perdendo assim o histórico da primeira consulta. Se tirar os atributos da entidade Paciente e colocá-los na entidade Médico, ocorrerá o mesmo problema. O único modo de resolver a questão do diagrama acima, sem criar uma entidade chamada consulta, é fixar os atributos data e hora diretamente no relacionamento consulta. Veja como fica: Agora sim, um médico pode ter consultas marcadas em horários diferentes com vários pacientes, assim como um paciente pode ter várias consultas marcadas com diferentes médicos, todas em horários distintos. Gráfico do relacionamento Modelo equivalente O diagrama acima do Médico e Paciente pode ser reescrito de forma equivalente, sem usar atributos de relacionamento. Veja este diagrama: 23 Note que o relacionamento foi substituído por uma entidade. Leia os relacionamentos e você verá que eles produzem o mesmo resultado. 2 Exemplo prático assistência técnica Você chegou ao fim dos tópicos sobre relacionamento. Faça um exercício de modelagem de dados simples. Tente primeiro fazer sozinho, e só depois olhe a correção. O problema: Sr. Mário é uma pessoa, que deseja manter informações sobre seu negócio. Ele possui uma assistência técnica especializada em computadores, notebook, impressoras, monitores etc. A primeira coisa que ele deseja saber é quais são os equipamentos que entram para manutenção, em sua empresa. Toda vez que um cliente traz um equipamento até a assistência técnica do Sr. Mário, deve ser aberta uma ordem de serviço, mesmo que o equipamento já esteja cadastrado. Outro problema existente é quanto ao histórico do técnico que fez a manutenção em determinado equipamento. Sr. Mário também deseja manter um cadastro de clientes para futuros contatos e coisas do tipo. Crie um modelo de dados baseado na descrição acima. MER (Modelo entidade relacionamento) 24 Discussão sobre o modelo: Relacionamento Equipamento, Ordem de Serviço • Um equipamento pode estar, no mínimo, em uma ordem de serviço; e, no máximo, em N ordens de serviço. • Uma ordem de serviço pode ter, no mínimo, um equipamento; e, no máximo, 1 equipamento. • Segundo a descrição do problema, sempre que um equipamento der entrada deve-se abrir uma nova ordem de serviço para ele; isso torna o relacionamento obrigatório (cardinalidade mínima 1). Um equipamento pode ser trazido à empresa para conserto e funcionar durante meses sem apresentar nenhum problema, mas depois de certo tempo voltar a dar problemas. Ao invés de ser preciso cadastrá-lo novamente no sistema, será possível apenas abrir uma ordem de serviço para ele. Logo, um mesmo equipamento pode estar em N ordens de serviço. • Por questão de regra de negócios, uma ordem de serviço deve ter apenas um equipamento associado a ela, o que torna um relacionamento obrigatório (cardinalidade mínima um, e cardinalidade máxima um). Seria possível considerar que uma ordem de serviço pudesse ter vários equipamentos. Como o texto não diz nada a respeito disso, fica a critério de quem fizer a modelagem. Relacionamento Cliente, Ordem de Serviço • Um cliente pode ter, no mínimo, 0 ordem de serviço; e, no máximo, N ordens de serviço. • Uma ordem de serviço pode ter, no mínimo, um cliente; e, no máximo, um cliente. • O texto sobre a descrição do cadastro de cliente não especifica se, para um cliente existir, é necessário que ele tenha ao menos uma ordem de serviço associada a ele. Por esse motivo, a cardinalidade mínima dele é zero; se no texto estivesse dizendo que para um cliente existir obrigatoriamente deve ter no mínimo uma ordem de serviço, aí sim seria preciso tornar a cardinalidade mínima um. Mas, como está implícita, a decisão pode ser tomada baseando-se no que se tem como melhor exemplo, e pensando no que mudaria se trocasse a cardinalidade, e nisso chegar à melhor opção. Um cliente pode trazer vários equipamentos para manutenção. Sendo assim, ele pode ter várias ordens de serviço, o que justifica a cardinalidade máxima N. • Toda ordem de serviço obrigatoriamente deve ter um cliente associado a ela. Caso contrário, ela perde seu significado; e deve ter, no máximo, um cliente. Em uma ordem de serviço com dois clientes, não se saberia ao certo o dono do equipamento. Relacionamento Técnico, Ordem de Serviço • Um técnico pode estar no mínimo,em 0 ordem de serviço; e, no máximo, em N ordens de serviço. • Uma ordem de serviço deve ter no mínimo um técnico e no máximo um técnico. • O texto não diz, em nenhum momento, que para um técnico existir é necessário que ele já tenha resolvido alguma ordem de serviço. Então, é possível supor que mesmo sem nenhuma ordem de serviço, o técnico pode existir. Logo, é um relacionamento opcional (cardinalidade mínima zero). Um técnico é pago para arrumar vários equipamentos, e cada ordem de serviço está relacionada a um equipamento. Assim, a cardinalidade máxima é N. 25 • Como no caso do relacionamento entre Cliente e Ordem de serviço, toda ordem de serviço obrigatoriamente deve ter um cliente relacionado, nesse relacionamento toda ordem de serviço também deve ter, no mínimo, um técnico relacionado para poder manter o histórico. Na cardinalidade máxima não se pode deixar que mais de um técnico seja associado a uma mesma ordem de serviço, pois isso tornaria mais difícil saber quem realmente fez a manutenção no equipamento daquela ordem de serviço. Esse é um clássico exercício de modelagem de dados. Existem outros semelhantes a ele. Por mais que pareça apenas um exemplo sem utilidade, ele traz vários elementos do mundo real que ajudam a pensar como construir um modelo entidade relacionamento. Exercícios assim, apenas com descrição textual, estão sujeitos a várias interpretações. Uma mesma descrição pode ser modelada de vários modos diferentes. Você deve ter estranhado o fato de os relacionamentos não possuírem nomes. No DER os nomes dos relacionamentos não são obrigatórios, ficando a cargo do modelador colocá-los ou não.
Compartilhar