Baixe o app para aproveitar ainda mais
Prévia do material em texto
29 Linguagem de Programação MODELAGEM DE DADOS Olá! Imagino que esteja ansioso por “colocar a mão na massa” – imple- mentar um banco de dados na prática. Isso é bom, mas ainda deve- mos conter nossa ansiedade. Antes de sair criando tabelas, relacionamentos e consultas, devemos aprender a projetar um banco de dados que atenda satisfatoriamen- te aos objetivos de nossos usuários. Um banco de dados bem modelado demandará pouca ou nenhuma manutenção corretiva num futuro próximo. Por isso, é conveniente des- pender parte de seu tempo inicial de trabalho projetando ou modelan- do o banco de dados propriamente dito. Uma vez concluída essa etapa, pode-se finalmente dedicar tempo à criação do banco de dados com suas tabelas, relacionamentos, consultas, visões, procedimentos etc. Na modelagem de um banco de dados, nos concentramos nos objetivos que pretendemos atender com essa tecnologia. Se pre- tendemos criar um banco de dados para um sistema de controle acadêmico que permita armazenar dados sobre alunos, turmas, disciplinas, notas e frequências, quais serão as tabelas necessárias e seus respectivos atributos? E se o sistema objetivar gerenciar o atendimento de consultas médicas em uma clínica? Certamente serão outras as tabelas e atributos neces- sários. Mas, quais serão essas tabelas e como se relacionarão entre si? Neste capítulo abordaremos a modelagem conceitual de dados. Um modelo conceitual objetiva projetar os requisitos de negócio segundo a perspectiva do usuário-final. Tendo em vista apenas o modelo re- lacional de banco de dados, não precisamos ainda determinar qual SGBD utilizaremos para implementar nosso banco de dados, não importando se o SGBD será o Oracle, o Microsoft SQL-Server, o Sybase, o PostgreeSQL, o Firebird ou o MySQL. O que modelaremos pode ser implementado em qualquer SGBD relacional. Trabalharemos, com especial destaque, com o Modelo de Entidade e Relacionamentos (ER). Bom estudo! Prof. Vanderson José Ildefonso Silva 30 Técnico em Informática 2.1 Modelo entidade-relacionamento O Modelo Entidade-Relacionamento (MER) é uma técnica criada em 1976 por Peter Chen (CHEN, 1990) que expressa graficamente a estru- tura lógica de um banco de dados. A aplicação dessa técnica resulta na elaboração de um diagrama composto dos seguintes elementos: Entidades:1. representadas graficamente por um retângulo, as entida- des são “coisas” ou “objetos” que deverão ser armazenados em um banco de dados. Médico e paciente, por exemplo, são claramente entidades em um banco de dados projetado para suportar um sis- tema de agendamento de consultas (Figura 6). Afinal, tal sistema seria impossível de implementar sem o armazenamento de dados relativos aos médicos que atendem na clínica e aos pacientes que agendam consultas com esses profissionais. Figura 6 – Representação Gráfica das Entidades Médico e Paciente Atributos: 2. são características ou propriedades relevantes de uma entidade. Por “relevantes” pretendemos destacar que nem todas as informações sobre uma entidade são pertinentes para o modelo: sa- ber qual a cor do cabelo do paciente ou o time de futebol para o qual um médico torce em nada contribui para a marcação de uma con- sulta. Por outro lado, o nome do paciente, sua data de nascimento (forma de manter atualizada sua idade), um telefone para contato, o endereço e o sexo a que pertence (“feminino” ou “masculino”) são informações que podem ser classificadas como relevantes para o contexto (Figura 7). Figura 7 – Entidades e seus respectivos atributos Médico Paciente Médico Nr_CRM Nome Celular Paciente Matricula Nome Endereço Telefone Celular Genero Capítulo 2 31 Linguagem de Programação Relacionamentos: 3. são vínculos ou associações lógicas entre duas ou mais entidades. Em alguns casos particulares, um relacionamen- to pode ser estabelecido entre uma entidade e ela mesma (autor- relacionamento). Porém, a forma mais comum de relacionamento é entre duas entidades. As Figuras 8, 09 e 10 apresentam variados exemplos de relacionamentos. Eles são representados por uma linha com um losango sobreposto e um verbo que o identifica. No inte- rior desse losango há geralmente uma seta indicando o sentido da leitura do verbo. Na Figura 8, por exemplo, podemos ler que “mé- dico atende paciente”. Por sua vez, a Figura 09 demonstra um rela- cionamento entre três entidades simultaneamente (relacionamento ternário). Nesse caso não usamos o verbo e nem a seta, apenas o losango na junção das linhas. A vantagem desse relacionamento em relação ao da Figura 08 é que se torna possível saber qual o plano de saúde utilizado pelo paciente em uma determinada consulta com um dado médico. A Figura 10 exemplifica um relacionamento entre uma entidade e ela mesma (o autorrelacionamento). Nesse caso, um funcionário pode coordenar os trabalhos de outros funcionários. Esse relacionamento nos permite identificar quais funcionários são coordenados por outros funcionários. Figura 8 – Relacionamento entre duas entidades Figura 09– Relacionamento entre três entidades (ternário) Figura 10 – Relacionamento de uma entidade consigo mesma(autorrelacionamento) Médico Paciente atende Médico Plano de Saúde Paciente coordena Funcionário Modelagem de Dados 32 Técnico em Informática Atividade 10 Faça um diagrama que demonstre relacionamentos coerentes en- tre as seguintes entidades de um Restaurante: Mesa, Prato, Gar- çon e Comanda (pedidos feitos pelos ocupantes da mesa). Indique para cada entidade um conjunto de atributos adequados. 2.1.1 A Cardinalidade de relacionamentos A cardinalidade é uma característica de todo relacionamento no Mo- delo Entidade-Relacionamento (MER). Indica com quantas ocor- rências de uma entidade as ocorrências de uma outra entidade po- dem se relacionar. A Figura 11 mostra um autorrelacionamento ainda sem a indicação da cardinalidade. A novidade do exemplo está na utilização dos cha- mados indicadores de papéis (“Marido” e “Esposa”). Ele pode ser lido como “pessoa casa com pessoa”. A indicação dos papéis apenas torna claro que, no casamento, algumas pessoas têm o papel de ma- rido e outras, o de esposa. Figura 11– Autorrelacionamento com indicação de Papéis. A ausência de cardinalidade nos impossibilita uma melhor compreen- são das regras envolvidas nesse casamento entre pessoas. Em algumas sociedades é permitido que um homem se case com várias mulheres. Caso nosso banco de dados precise refletir esse costume, devemos im- por um relacionamento de cardinalidade um-para-muitos (1:N), como mostrado na Figura 12. casa com Pessoa Marido Esposa Capítulo 2 33 Linguagem de Programação Figura 12 – Cardinalidade Um-para-Muitos (1:N) O relacionamento da Figura 12 exemplifica as regras de uma sociedade poligâmica, na qual um homem pode ter várias esposas. Então lemos que “uma (1) pessoa (Marido) pode casar-se com muitas (N) pesso- as (Esposas)”. Define, também, que “uma pessoa (Esposa) somente pode casar-se com uma pessoa (Marido)”. Portanto, os direitos não são iguais nessa sociedade e a cardinalidade define isso com clareza. Um homem pode ter várias mulheres, mas uma mulher pode ter apenas um homem como marido. Os atributos da entidade Pessoa evidenciados na figura acima são: Identificador:1. código que possibilite distinguir uma pessoa de ou- tra sem que haja confusões. Nome:2. nome completo da pessoa. Não serviria para identificar com precisão uma pessoa, dada a possibilidade da ocorrência de homô- nimos (pessoas com o mesmo nome. Ex: José da Silva). Sexo:3. classificação das pessoas conforme seu sexo: “F” para femini- no e “M” para masculino. IdentificadorMarido: 4. atributo que será utilizado apenas pelas pessoas do sexo feminino. Geralmente, sociedades poligâmicasnão demons- tram tolerância com casamentos de pessoas do mesmo sexo. Esse atri- buto ou terá valor nulo (para homens e mulheres solteiras) ou conterá o identificador de uma pessoa do sexo masculino (o marido). A Figura 13 apresenta uma tabela em banco de dados relacional que corresponderia a uma implementação do diagrama da figura anterior, no qual um homem poderia ter várias esposas, mas, uma mulher, so- mente um marido. casa com Pessoa Identificador Nome Sexo IdentificadorMarido Marido Esposa 1 N Modelagem de Dados 34 Técnico em Informática Figura 13 – Tabela Pessoa correspondente a Entidade Pessoa Observamos que, pelos dados da tabela Pessoa, Altair Ramos tem três esposas (Martha, Sueli e Ângela). Essas mulheres possuem o seu número identificador na coluna (atributo) IdentificadorMarido. Por outro lado, Karla apresenta esse atributo sem a indicação de qualquer número (va- lor nulo). Significa que Karla é solteira. Rita de Cássia (pessoa de identi- ficador = 6) é casada com Ricardo Souza (pessoa de identificador = 5). Devemos destacar que a cardinalidade indicada não implica a obriga- toriedade de cada homem ter mais de uma esposa. No exemplo, Ricardo tem apenas uma esposa, e poderiam ainda existir homens solteiros. Suponhamos agora que uma verdadeira revolução de costumes tenha acontecido nessa sociedade poligâmica. A partir de agora, os homens somente poderão se casar com uma mulher, mas uma mulher poderá casar-se com muitos homens (poliandria). Nosso MER sofreria uma alteração em sua cardinalidade, deixando de apresentar um relaciona- mento um-para-muitos (1:N) para assumir um relacionamento mui- tos-para-um (N:1). A Figura 14 mostra o resultado dessa mudança para uma sociedade poliândrica. Curiosamente, essa figura quase não difere da Figura 12. As únicas alterações perceptíveis são a troca de posições entre “N” e “1” na indicação da cardinalidade, além da substituição do atributo IdentificadorMarido pelo IdentificadorEsposa. Portanto, a ordem dos fatores influi sobre o resultado final. O relacionamento agora indi- ca que “uma pessoa (Marido) pode casar-se com apenas uma pessoa (Esposa)” e que “uma pessoa (Esposa) pode casar-se com muitas pessoas (Maridos)”. Pessoa Identificador Nome Sexo IdentificadorMarido 1 Altair Ramos M 2 Karla Ramalho F 3 Martha Ramos F 1 4 Sueli Cantagalo F 1 5 Ricardo Souza M 6 Rita de Cássia F 5 7 Ângela Paneton F 1 Capítulo 2 35 Linguagem de Programação Figura 14 – Cardinalidade Muitos-para-Um Essa estranha sociedade foi de um extremo (poligamia) a outro (polian- dria). Agora consideremos que homens e mulheres negociaram uma sa- ída mais equilibrada, tornando essa sociedade monogâmica. Essa nova situação é representada na Figura 15. Figura 15– Cardinalidade Um-para-Um Mais uma vez deparamos com pequenas mudanças: o atributo Identi- ficadorConjuge substitui o atributo IdentificadorEsposa ou Identifi- cadorMarido; e a cardinalidade do relacionamento agora é Um-para- Um (1:1). Não temos mais o indicador “N” (que simboliza “muitos” ou “vários”). Dessa forma, agora um homem pode casar-se com ape- nas uma mulher simultaneamente e uma mulher, com somente um homem por vez. Esgotamos todas as possibilidades de cardinalidade para esse relacio- namento? Certamente que não. Ainda há a possibilidade de que um ho- mem possa casar-se com muitas mulheres e que também uma mulher possa casar-se com muitos homens. Esse seria um relacionamento de cardinalidade Muitos-para-Muitos (N:N). casa com Pessoa Identificador Nome Sexo IdentificadorEsposa Marido Esposa 1N casa com Pessoa Identificador Nome Sexo IdentificadorConjuge Marido Esposa 11 Modelagem de Dados 36 Técnico em Informática A Figura 16 exemplifica essa situação de Muitos-para-Muitos. Nes- se caso as mudanças são substanciais e merecem uma explicação mais detalhada. Figura 16 – Cardinalidade Muitos-para-Muitos Olhando para a Figura 16, percebemos que um retângulo tracejado apareceu sobre o losango do relacionamento. Essa é uma consequên- cia direta de qualquer relacionamento de cardinalidade Muitos-para- Muitos. Esse retângulo tracejado corresponde a uma relação e, como tal, possui nome (Casamento) e atributos (IdentificadorMarido e IdentificadorEsposa). Transpondo essa situação para um banco de dados relacional, encontra- mos duas tabelas: Pessoa e Casamento, exemplificado na Figura 17. casa com Pessoa Identificador Nome Sexo Casamento IdentificadorMarido IdentificadorEsposa N N Capítulo 2 37 Linguagem de Programação Figura 17 – Banco de Dados equivalente ao Modelo ER da Figura 16 Conforme os dados apresentados na Figura 17, Eduardo Licoli (Iden- tificador = 1) possui duas ocorrências na tabela Casamento. Uma vez que é do sexo masculino, seu Identificador aparece na coluna (atributo) IdentificadorMarido. Significa que Eduardo é casado com duas mulhe- res: Ana Paula Souza (Identificador = 2) e Cecília Castro (Identificador = 6). Como essas pessoas são do sexo feminino, seus identificadores são reproduzidos na coluna IdentificadorEsposa da tabela Casamento. Por analogia, Ronaldo Silvestre é casado com três mulheres: Ana Paula Sou- za, Cibele Tornado e Cecília Castro. Sérgio Couto continua solteiro, pois não tem ocorrências na tabela Casamento. Atividade 11 Acrescente a cardinalidade aos relacionamentos da Atividade 10. 2.1.2 Exemplos do modelo entidade-relacionamento Considere um banco de dados que objetive manter informações atua- lizadas sobre os projetos desenvolvidos por uma empresa e as equipes responsáveis por esses mesmos projetos. Todos os integrantes das equi- pes são funcionários da empresa. Cada projeto é gerenciado por um funcionário e as equipes podem ser formadas por um número indeter- Pessoa Identificador Nome Sexo 1 Eduardo Lincoli M 2 Ana Paula Souza F 3 Ronaldo Silvestre M 4 Cibele Tornado F 5 Anabela Couto F 6 Cecília Castro F 7 Sérgio Souto M Casamento IdentificadorMarido IdentificadorEsposa 1 2 1 6 3 2 3 4 3 6 Modelagem de Dados 38 Técnico em Informática minado de funcionários. Independentemente dos projetos, cada funcio- nário possui uma função específica na empresa (administrador, analista de sistemas, contador, engenheiro, etc.). De cada projeto importa armazenar seu número identificador, nome, data de início, data prevista de conclusão e data efetiva de conclusão. Em relação a cada funcionário é importante guardar sua matrícula, nome, sexo e função. A Figura 18 apresenta um diagrama ER que modela o banco de dados proposto. Nela há três relacionamentos, três entidades e uma relação. Observe que conforme modelado, um funcionário pode gerenciar muitos projetos, mas um projeto pode ser gerenciado apenas por um funcioná- rio. Por outro lado, um funcionário pode trabalhar em muitos projetos (simultaneamente ou ao longo do tempo), e cada projeto pode ter muitos funcionários nele trabalhando. Também é verdade que um funcionário possui apenas uma função, mas uma função pode pertencer a muitos fun- cionários. Portanto, um funcionário não pode ser contador e programador de computadores ao mesmo tempo, mas a empresa pode, por exemplo, ter mais de um programador de computadores dentre seus funcionários. Como indicam os atributos do modelo, um projeto ainda em andamen- to apresentaria a Data_Final_Efetiva com valor nulo. A existência de uma Data_Final_Prevista e de uma Data_Final_Efetiva permite ava- liar o atraso de um projeto em andamento ou já concluído. Figura 18 – Exemplo de Diagrama ER Funcionário Matricula Nome Sexo Função Possui trabalha em Id_Função Descrição Projeto Equipe 1 1 N N N N Matricula Numero Numero Nome Data_Inicio Data_Final_Prevista Data_Final_Efetiva Capítulo2 39 Linguagem de Programação Consideremos agora a modelagem de um banco de dados desenvolvido para o gerenciamento de uma biblioteca. Para efeito de simplificação, essa biblioteca empresta apenas livros. Não há revistas ou dvds em seu acervo. Também é vetado ao usuário dessa biblioteca reservar um livro indisponível no momento como em algumas bibliotecas em que o usuá- rio pode entrar em uma fila de reservas, de modo que, ao ser devolvido um exemplar do livro reservado, os usuários que fizeram a reserva po- dem, conforme a ordem que ocupam na fila, requisitar o empréstimo do livro. Como dito, nossa biblioteca não dispõe desse serviço. Por outro lado, o banco de dados modelado deve prover os seguintes requisitos: (1) Manter dados sobre as obras do acervo, como nome dos autores, data da aquisição, editora, edição e título. (2) Manter registro de todos os livros de uma mesma obra. (3) Efetuar o empréstimo e a devolução de livros, mantendo registros detalhados dos mesmos ao longo do tempo. (4) Consultar livros por código de identificação, título da obra, nome de autores e gênero da obra (autoajuda, dicionário, literatura, etc.). (5) Manter dados sobre os usuários da biblioteca: matrícula, nome, sexo, data de nascimento, endereço e telefone. A Figura 19 mostra o diagrama ER para o sistema de informação dessa biblioteca. Não se assuste com o tamanho; embora seja maior que o an- terior, ainda é bem menor que a média em uma situação real. Repare que foram usadas duas entidades – Obra e Livro – em vez de uma com todos os seus atributos. Você deve estar se perguntando o porquê dessa decisão. Embora, a princípio, pareça correto utilizar uma entidade com todos esses atributos, na verdade eles pertencem a entidades diferentes. A entidade Livro, por exemplo, refere-se a uma edição em particular de uma obra. Considere uma obra do século XIX, como Helena, de Ma- chado de Assis, um clássico da literatura brasileira em sua fase român- tica, que já foi publicada por diferentes editoras ao longo de mais de um século de existência. Portanto, a entidade Editora não poderia estar relacionada à entidade Obra, mas sim à entidade Livro, como demons- trado na Figura 19. Se fosse diferente, essa obra somente poderia ser publicada por uma editora. Modelagem de Dados 40 Técnico em Informática Figura 19 – Diagrama ER do Sistema de Gerenciamento de Biblioteca Por analogia, o atributo Edição não pode estar na entidade Obra, mas na entidade Livro. Afinal, somente livros publicados de uma mesma obra podem ter edições diferentes. Nessa biblioteca, por exemplo, podem existir 30 livros da obra Helena. Desses, 10 foram publicados pela edi- tora Guanabara em 1981 e são da quinta edição e 4 desses livros adqui- ridos mais recentemente foram publicados pela editora Martin Claret. A entidade Autor se relaciona à entidade Obra, pois se estivesse relaciona- da a Livro implicaria o relacionamento pouco justificável de seus autores a cada livro adquirido pela biblioteca. Nesse caso, se 50 livros da obra de Alexandre Dumas, Os Três Mosqueteiros, fossem doados para a bibliote- publica referencia classifica escreve movimenta Movimentação Autoria 1 1 1 NN N N N N N Usuário Matrícula Nome Sexo Data_Nascimento Telefone Celular E_Mail Endereço Matrícula Nr_Livro Data_Emprestimo Data_Prevista Data_Devolução Autor Id_Autor Nome Obra Nr_Obra Título Nr_Obra Id_Autor Livro Nr_Livro Data_Aquisição Edição Editora Id_Editora Nome_Fantasia Gênero Id_Gênero Descrição Capítulo 2 41 Linguagem de Programação ca, um funcionário deveria relacionar sua ocorrência a 50 ocorrências de Livros. Contudo, o relacionamento de Autor com Obra evita esse traba- lho. O autor Alexandre Dumas seria relacionado a uma única obra e esta, por sua vez, aos 50 livros dessa mesma obra. O funcionário da biblioteca agradece seu empenho em tornar sua tarefa menos árdua. Olhando o diagrama ER da Figura 19, notamos que um gênero pode classificar várias obras, mas que uma obra pode ser classificada por um gênero. Assim, Helena e Os Três Mosqueteiros podem ser classificadas como Literatura. Porém, nenhuma dessas obras pode ser classificada em mais de um gênero simultaneamente. Um autor pode escrever muitas obras e uma obra pode ser escrita por muitos autores. Em razão da cardinalidade N:N surgiu a relação Au- toria (o retângulo tracejado), cobrindo a possibilidade de obras com mais de um autor, comum em livros didáticos ou em uma coleção de artigos científicos. Um livro pode referenciar apenas uma obra, mas uma obra pode ser referenciada por muitos livros. Uma editora pode publicar muitos livros, mas um livro pode ser publi- cado apenas por uma editora. Um usuário pode movimentar vários livros e um mesmo livro pode ser movimentado por vários usuários ao longo do tempo. Mais uma vez a cardinalidade N:N faz emergir a relação Movimentação. Essa relação ar- mazena os empréstimos e devoluções de livros efetuados na biblioteca. Quando a biblioteca empresta um livro para um usuário, uma ocorrên- cia de movimentação é gerada com o atributo Data_Devolução nulo e Data_Empréstimo com a data atual do sistema. Na devolução do livro essa movimentação é atualizada com a alteração do atributo Data_De- volução para a data corrente do sistema. Um terceiro e último exemplo de um diagrama ER está na Figura 20. Modelagem de Dados 42 Técnico em Informática Figura 20 – Diagrama ER para Marcação de Consultas Médicas Nesse caso temos um banco de dados modelado para suportar um sis- tema de gerenciamento da marcação de consultas médicas. Na verda- de, deve estar lembrado, já fizemos algumas considerações acerca desse contexto (Figuras 7 a 10), mas ainda não havíamos apresentado seu diagrama completo. O referido diagrama foi modelado a partir dos seguintes requisitos: armazenar dados de médico: número de registro no Conselho Re-1. gional de Medicina (CRM), nome completo, sexo, telefone fixo, ce- lular e e-mail para contato. armazenar informações de paciente: número identificador, nome 2. completo, sexo, telefone fixo e celular. identificar as especialidades de cada médico (um mesmo médico 3. pode atuar, por exemplo, como clínico geral e dermatologista). agendar consultas para um paciente, especificando o plano de saúde 4. e o médico. possui N N N N N Médico CRM Nome Sexo Telefone Celular E-Mail Paciente Consulta Especialista Id_Paciente Nome Sexo Telefone Celular Especialidade Cod_Especialidade Descrição Plano_Saude Id_Plano Nome_Fantasia CRM Cod_Especialidade CRM Data Hora Id_Plano Id_Paciente Capítulo 2 BANCO DE DADOS - CAPÍTULO 2 BANCO DE DADOS - PARTE I
Compartilhar