Conceitos de Banco de Dados - PDF
Download "Conceitos de Banco de Dados"
Giovanni Borba Sá
1 Apostila montada pelo professor José Gonçalo dos Santos Contato: Conceitos de Banco de Dados Copyright Todos os Direitos Reservados.
2 1 Introdução Definição de BD Banco de Dados X Abordagem processamento Tradicional de Arquivos Auto Informação Separação entre Programas e Dados Abstração de Dados Sistemas de Gerenciamento de Banco de Dados SGBD Modelos de SGBDs Quando não Utilizar um SGBD Modelagem de Dados Utilizando o Modelo Entidade Relacionamento Entidades e Atributos Tipos Entidades Domínio Atributos Chave Tipos e Instância de Relacionamento Grau de um Relacionamento Relacionamentos como Atributos Nomes de Papéis e Relacionamentos Recursivos Restrições em um tipo relacionamento Tipos Entidades Fracas Diagrama Entidade Relacionamento Extensões do Modelo Entidade Relacionamento Subtipos, Supertipos e Especialização Especialização Generalização O Modelo Relacional Domínio de uma relação Esquema de uma Relação Instância de um Esquema Atributo Chave de uma Relação Normalização Primeira Forma Normal (1FN) Segunda Forma Normal (2FN) Terceira Forma Normal (3FN) ÁLGEBRA RELACIONAL Operação Selecionar Operação projetar Operação produto cartesiano Operação Renomear Operação União (binária) A operação diferença de conjuntos Operação interseção de conjuntos Operação Ligação natural Operação Divisão Operação de inserção ii
3 4.11 Remoção Atualização Linguagem SQL Estrutura Básica de Expressão SQL Cláusulas Distinct e All Predicados e ligações VARIÁVEIS TUPLAS (RENOMEAÇÃO) OPERAÇÕES DE CONJUNTOS ORDENANDO A EXIBIÇÃO DE TUPLAS (ORDER BY) MEMBROS DE CONJUNTOS FUNÇÕES AGREGADAS MODIFICANDO O BANCO DE DADOS Remoção Inserção Atualizações Valores Nulos DEFINIÇÃO DE DADOS VISÕES (VIEWS) RESTRIÇÕES DE INTEGRIDADE Restrições de domínios Restrições de integridade referencial Asserções Arquitetura de Camadas Uma camada (single-tier) Problemas do Single-Tier Duas Camadas (Two-tier) Três camadas (three-tier) / Múltiplas camadas (n-camadas) Solução em múltiplas camadas Servidores SQL Bibliografia iii
4 1 Introdução Antes de começarmos a falar sobre as formas de acesso a dados e definirmos Banco de Dados (BD), algumas considerações devem ser feitas. Como, por exemplo, o que representa um BD em uma instituição. Podemos dizer que o BD é o coração da instituição. Devido a isso, qualquer dano causado ao BD pode atingir a saúde da instituição. Quando falamos em BD, devemos ter em mente os seguintes termos: dados, informações e SGBD - Sistemas de Gerenciamento de Banco de Dados. Mas, qual a relação desses termos com Banco de Dados? Para responder à questão anterior de forma simples, dizemos que um banco de dados guarda dados; esses dados podem ser manipulados por um SGBD de maneira que permita que os usuários os acesse de forma que a integridade dos dados seja mantida, e que esses dados sejam transformados em informações. Como pode ser notado, nos parágrafos anteriores, eu tratei de forma distinta; dados, informações, BD e SGBD. Na verdade, nem sempre essa distinção é feita, há pessoas que tratam o SQL SERVER de forma errônea como BD, o que na verdade é um SGBD; outras dizem que os BDs armazenam informações, o que não uma verdade, porque BD armazena dados, que podem ser transformados em informações, como por exemplo, a Figura 1.1 mostra três tabelas com dados sobre clientes, produtos e compras, mas se olharmos somente a tabela itens, não podemos identificar o cliente que efetuou o pedido. Porém, podemos retirar essa informação através de uma operação de consulta entre as três tabelas e obtermos a informação desejada. Disso, podemos concluir que um BD armazena dados, que podem ser transformados em informações através de inferências sobre eles. Copyright Todos os Direitos Reservados.
5 Cliente CCli Nome CPF Fone 1 Tati Fabi Thays Pedido NPed Data Valor Cliente 1 20/09/ , /09/ , /09/ ,00 3 Figura 1.1: Exemplo de um banco de dados Itens NPed Produto Qtd Valor 1 Blusa 1 50,0 1 Saia 1 100,00 1 Vestido 1 150,00 2 Sandália 1 40,00 2 Meias 3 15,00 2 Tênis 1 130,00 3 Saia 1 100,00 3 Blusa 2 100,00 3 Vestido 1 150, Definição de BD A tecnologia aplicada aos métodos de armazenamento de informações vem crescendo e gerando um impacto cada vez maior no uso de computadores, em qualquer área em que eles podem ser aplicados. Um banco de dados pode ser definido como um conjunto de dados devidamente relacionados. Por dados podemos compreender com fatos conhecidos que podem ser armazenados e que possuem um significado implícito. Porém, o significado do termo banco de dados é mais restrito que simplesmente a definição dada acima. Um banco de dados possui as seguintes propriedades: Um banco de dados é uma coleção lógica coerente de dados com um significado inerente; uma disposição desordenada dos dados não pode ser referenciada como um banco de dados; Um banco de dados é projetado, construído e povoado com dados para um propósito específico; um banco de dados possui um conjunto pré-definido de usuários e aplicações; Um banco de dados representa algum aspecto de mundo real, o qual é chamado de mini-mundo ; qualquer alteração efetuada no mini-mundo é automaticamente refletida no banco de dados. Um banco de dados pode ser criado e mantido por um conjunto de aplicações desenvolvidas especialmente para esta tarefa ou por SGBD. Um SGBD permite aos usuários criarem e manipularem banco de dados de propósito geral. O conjunto formado 2
6 por um banco de dados mais as aplicações que o manipulam é chamado de Sistema de Banco de Dados. 1.2 Banco de Dados X Abordagem processamento Tradicional de Arquivos Auto Informação Uma característica importante da abordagem Banco de Dados é que o SGBD mantém não somente os dados, mas também a forma como são armazenados, contendo uma descrição completa do banco de dados. Estas informações são armazenadas no catálogo do SGBD, o qual contém informações como a estrutura de cada arquivo, o tipo e o formato de armazenamento de cada tipo de dado, restrições, entre outros. A informação armazenada no catálogo é chamada de Meta dados. No processamento tradicional de arquivos, o programa que irá manipular os dados é que contém este tipo de informação, ficando limitado a manipular as informações que ele conhece. Utilizando a abordagem banco de dados, a aplicação pode manipular diversas bases de dados diferentes Separação entre Programas e Dados No Processamento tradicional de arquivos, a estrutura dos dados está incorporada ao programa de acesso. Desta forma, qualquer alteração na estrutura de arquivos implica na alteração no código fonte de todos os programas. Já na abordagem bando de dados, a estrutura é alterada apenas no catálogo, não alterando os programas. A Figura 1.2 ilustra um sistema de banco de dados, como podemos observar, os dados são separados da aplicação e entre os dados e a aplicação existe o SGBD para controlar todo o processo de acesso e manipulação de dados, fazendo com que as regras do BD se tornem independente da aplicação utilizada pelo usuário final. 3
7 Figura 1.2: Exemplo de um Sistema de Banco de Dados Abstração de Dados O SGBD deve fornecer ao usuário uma representação conceitual dos dados, sem fornecer muitos detalhes de como as informações são armazenadas. Um modelo de dados é uma abstração de dados que é utilizada para fornecer esta representação conceitual utilizando conceitos lógicos como objetos, suas propriedades e seus relacionamentos. A estrutura detalhada e a organização de cada arquivo são descritas no catálogo. 1.3 Sistemas de Gerenciamento de Banco de Dados SGBD Dá-se o nome de Sistema Gerenciador de Banco de Dados (SGBD) ao conjunto de programas responsável pela definição de uma base de dados, proporcionando um ambiente para o acesso da comunidade de usuários às informações armazenadas nos seus diversos arquivos. A Figura 1.3 ilustra este conceito. 4
8 Figura 1.3: Sistema de Gerenciamento de Banco de Dados. Ao se utilizar um SGBD, certos objetivos fundamentais devem estar implícitos, como a integração das atividades gerenciais e operacionais da empresa; a obtenção de maior segurança em termos do armazenamento dos dados; a facilitação da tarefa de desenvolvimento de sistemas; a melhor adequação da base de dados à realidade do dia-adia, entre outros. Para que tudo isso seja possível é necessário que o SGBD obedeça a alguns princípios básicos que são apresentados de forma resumida a seguir: 1. Independência de dados - consiste na capacidade de tornar as características físicas dos dados (como localização, estrutura e tamanho) transparentes para a aplicação. Com isso, os programas aplicativos passam a ter apenas uma visão lógica da base de dados, que não é influenciada por eventuais modificações na forma de armazenamento dos dados. Significa também que devem existir duas sublinguagens incorporadas ao banco de dados: uma Linguagem de Definição de Dados (LDD) e uma Linguagem de Manipulação de Dados (LMD). 2. Compartilhamento de dados - deve ser possível que, num determinado momento, mais de um usuário possa acessar os dados armazenados pelo SGBD. Um SGBD multi- 5
9 usuário deve permitir que múltiplos usuários acessem o banco de dados ao mesmo tempo. Este fator é essencial para que múltiplas aplicações integradas possam acessar o banco. O SGBD multi-usuário deve manter o controle de concorrência para assegurar que o resultado de atualizações seja correto. Um banco de dados multi-usuário deve fornecer recursos para a construção de múltiplas visões dos dados. 3. Garantia de integridade de dados - apesar de permitir que os dados sejam compartilhados, o SGBD deve oferecer serviços que evitem que atualizações concorrentes tornem a base de dados inconsistente. 4. Garantia de segurança de dados - o SGBD deve oferecer meios que resguardem a base de dados nos casos de falha de programa, equipamento ou acidentes. Também deve ser possível que alterações indevidas feitas pelos usuários durante a operação dos aplicativos sejam desfeitas sem prejuízo da coerência dos dados. Considera-se igualmente como um item de segurança a ser proporcionado pelo software gerenciador, o controle dos níveis de acesso dos usuários aos dados do sistema. Um SGBD deve fornecer um subsistema de autorização e segurança, o qual é utilizado pelo DBA para criar contas e especificar as restrições destas contas; o controle de restrições se aplica tanto ao acesso aos dados quanto ao uso de softwares inerentes ao SGBD. 5. Relacionamento entre os dados - a implementação dos diversos relacionamentos previstos na base de dados deve ser controlada automaticamente pelo SGBD, externamente à aplicação. Um SGBD deve fornecer recursos para se representar uma grande variedade de relacionamentos entre os dados, bem como, recuperar e atualizar os dados de maneira prática e eficiente. 6. Controle da redundância de dados - devem ser fornecidos meios para que seja possível o controle da repetição de dados pelos diversos arquivos administrados pelo SGBD. Isso é conseguido por meio da centralização da definição dos dados num Dicionário de Dados ou Catálogo, que serve como base para a operação do SGBD. No processamento tradicional de arquivos, cada grupo de usuários deve manter seu próprio 6
10 conjunto de arquivos e dados. Desta forma, acaba ocorrendo redundâncias que prejudicam o sistema com problemas como: toda vez que for necessário atualizar um arquivo de um grupo, então todos os grupos devem ser atualizados para manter a integridade dos dados no ambiente como um todo; a redundância desnecessária de dados levam ao armazenamento excessivo de informações, ocupando espaço que poderia estar sendo utilizado com outras informações. Estes princípios estão interligados entre se, uma falha em um deles pode refletir em todos, ou quase todos, os outros Modelos de SGBDs Os produtos SGBDs podem ser classificados em 5 categorias principais: os de estrutura hierárquica; os de estrutura de rede; os relacionais; os orientados a objeto e os objeto-relacionais. Cada um desses modelos corresponde a um estágio na evolução do hardware disponível para as aplicações comerciais e no estado da arte na área da teoria de Banco de Dados e da Engenharia de Software e diferem entre si por 4 aspectos principais: a ordem cronológica em que surgiram; os tipos de elos (ligações) utilizados para implementar internamente os relacionamentos entre os dados; as modalidades de relacionamento suportadas e, finalmente, o tipo de linguagem utilizada para implementar as aplicações que interagem com a base de dados. Os modelos hierárquicos e de rede já são considerados ultrapassados; e a abordagem orientada a objetos ainda é uma tecnologia em maturação, embora promissora. Os SGBDs mais utilizados hoje em dia foram concebidos com base em um modelo matemático derivado da Teoria dos Conjuntos e que teve um grande desenvolvimento a partir da década de 70. Esse modelo é chamado Modelo Relacional e os SGBD que suportam tais conceitos são chamados de Sistemas Gerenciadores de Bancos de Dados Relacionais (SGBDR). São exemplos de SGBDR: MS- Access, ZIM, MS-SQL Server, Oracle, Sybase, Informix, CA-Ingres, IBM-DB2, Borland- Interbase, entre outros. Os SGBDs objeto-relacionais implementam conceitos orientados a objeto sobre mecanismos relacionais, e ganharam alguma importância nos últimos anos. 7
11 1.3.2 Quando não Utilizar um SGBD Em algumas situações, o uso de um SGBD pode representar uma carga desnecessária aos custos, quando comparado à abordagem processamento de arquivos como por exemplo: alto investimento inicial na compra de software e hardware adicionais; generalidade que um SGBD fornece na definição e processamento de dados; sobrecarga na provisão de controle de segurança, controle de concorrência, recuperação e integração de funções. Problemas adicionais podem surgir caso os projetistas de banco de dados ou os administradores de banco de dados não elaborem os projetos corretamente ou se as aplicações não são implementadas de forma apropriada. Se o DBA não administrar o banco de dados de forma apropriada, tanto a segurança quanto a integridade dos sistemas podem estar comprometidas. A sobrecarga causada pelo uso de um SGBD e a má administração justificam a utilização da abordagem de processamento tradicional de arquivos em casos como: o banco de dados e as aplicações são simples, bem definidas e não se espera mudanças no projeto; a necessidade de processamento em tempo real de certas aplicações, que são terrivelmente prejudicadas pela sobrecarga causada pelo uso de um SGBD; não haverá múltiplo acesso ao banco de dados. 8
12 2 Modelagem de Dados Utilizando o Modelo Entidade Relacionamento O modelo Entidade-Relacionamento (E-R) é um modelo de dados conceitual de alto nível, cujos conceitos foram projetados para estar o mais próximo possível da visão que o usuário tem dos dados, não se preocupando em representar como estes dados estarão realmente armazenados. O modelo E-R é utilizado, principalmente, durante o processo de projeto de banco de dados. 2.1 Entidades e Atributos O objeto básico tratado pelo modelo E-R é a entidade, que pode ser definida como um objeto do mundo real, concreto (automóvel, casa, professor) ou abstrato (duplicata, venda, entre outros) e que possui existência independente. Cada entidade possui um conjunto particular de propriedades (características) que a descreve, chamado atributos. Um atributo pode ser dividido em diversas sub-partes com significado independente entre si, recebendo o nome de atributo composto, como é o caso do atributo endereço, composto de rua, bairro, cidade, estado e CEP. Um atributo que não pode ser subdividido é chamado de atributo simples ou atômico, como por exemplo, o atributo CPF. Cabe, aqui, uma observação sobre atributos atômicos, porque para nós, brasileiros, o atributo nome é atômico, já nos Estados Unidos, por exemplo, o atributo nome é composto, porque se divide em first name, midle name e last name, portanto, dizer que certos atributos são atômicos ou não, depende da interpretação de cada analista. Os atributos que podem assumir apenas um determinado valor em uma determinada instância são denominados atributo simplesmente valorado, como é o caso do atributo salário de um empregado. Um atributo que pode assumir diversos valores em uma mesma instância é denominado multi valorado, como por exemplo, telefone de uma pessoa supondo que ela tenha mais de um telefone e cores de um carro. Um atributo que é gerado a partir de outro é chamado de atributo derivado, são os atributos cujos valores não são armazenados no BD, por não haver necessidade de fazê-lo, como é o caso salário médio dos empregados, que pode ser derivado do atributo salário. 9
13 2.2 Tipos Entidades Um banco de dados costuma conter grupos de objetos que são similares possuindo, os mesmos atributos, porém, cada entidade com seus próprios valores para cada atributo. Estes conjuntos de objetos similares definem um tipo entidade. Cada tipo de entidade é identificado por seu nome e pelo conjunto de atributos, que definem suas propriedades. A descrição do tipo entidade é chamada de esquema do tipo entidade, especificando o nome do tipo entidade, o nome de cada um de seus atributos e qualquer restrição que incida sobre as entidades. 2.3 Domínio Cada atributo simples de um tipo entidade está associado com um conjunto de valores denominado domínio, o qual especifica o conjunto de valores que podem ser designados para este determinado atributo, para cada entidade. 2.4 Atributos Chave Uma restrição muito importante em uma entidade de um determinado tipo entidade é a chave. Um tipo entidade possui um atributo cujos valores são distintos, para cada entidade individual. Este atributo é chamado atributo chave e seus valores podem ser utilizados para identificar cada entidade de forma única. Muitas vezes, uma chave pode ser formada pela composição de dois ou mais atributos. Uma entidade pode também ter mais de um atributo chave. 2.3 Tipos e Instância de Relacionamento Além de conhecer detalhadamente os tipos entidade, é muito comum conhecer também os relacionamentos entre estes tipos entidades. Um tipo relacionamento R entre n entidades E 1, E 2,...,E n, é um conjunto de associações entre entidades deste tipo. Informalmente falando, cada instância de relacionamento r 1 em R é uma associação de entidades, onde a associação inclui exatamente uma entidade de cada tipo entidade participante no tipo relacionamento. Isto 10
14 significa que, estas entidades estão relacionadas de alguma forma no mini-mundo. A Figura 2.1 mostra um exemplo entre dois tipos entidade, empregado e departamento, e o relacionamento entre eles, trabalha para. Repare que para cada relacionamento, participam apenas uma entidade de cada tipo entidade, porém, uma entidade pode participar de mais do que um relacionamento. Figura 2.1: Exemplo de um relacionamento. 2.4 Grau de um Relacionamento O grau de um tipo relacionamento é o número de tipos entidade que participam do tipo relacionamento. No exemplo da Figura 2.1, temos um relacionamento binário. Existem três tipos básicos de grau de relacionamento: binário, ternário e n-ário que se referm à existência de duas, três ou mais entidades envolvidas no fato que o relacionamento representa. O grau de um relacionamento é ilimitado, porém, a partir do grau 3 (ternário), a compreensão e a dificuldade de se desenvolver a relação corretamente se tornam extremamente complexas. Podemos ter também relacionamento binário recursivo, que poderia ser tratado como relacionamento unário visto que apenas um tipo entidade participa do relacionamento, construído por meio de conexões com a mesma entidade, acontecendo como se fossem duas coisas diferentes se relacionando em nossa abstração, duas ocorrências da entidade se relacionando, se associando. 11
15 2.6 Relacionamentos como Atributos Algumas vezes é conveniente pensar em um relacionamento como um atributo. Considere o exemplo da Figura 2.1. Podemos pensar departamento como sendo um atributo da entidade empregado, ou empregador. Como um atributo multivalorado da entidade departamento. Se a existência de uma entidade não for muito bem definida, talvez seja mais interessante para a coesão do modelo lógico, que ela seja representada como um atributo. 2.7 Nomes de Papéis e Relacionamentos Recursivos Cada tipo entidade que participa de um tipo relacionamento desempenha um papel particular no relacionamento. O nome do papel representa: o papel que uma entidade de um tipo entidade participante desempenha no relacionamento. No exemplo da Figura 2.1, temos o papel empregado ou trabalhador para o tipo entidade, EMPREGADO e o papel departamento ou empregador para entidade DEPARTAMENTO. Nomes de papéis não são necessariamente importantes quando todas as entidades participantes desempenham papéis diferentes. Algumas vezes, o papel torna-se essencial para distinguir o significado de cada participação. Isto é muito comum em relacionamentos recursivos. A Figura 2.2 ilustra um exemplo de relacionamento recursivo. No exemplo da Figura 2.2, temos relacionamento entre o tipo entidade EMPREGADO, onde um empregado pode supervisionar outro empregado e vice-versa. 2.8 Restrições em um tipo relacionamento Geralmente, os tipos relacionamentos sofrem certas restrições que limitam as possíveis ligações das combinações das entidades participantes. Estas restrições são derivadas de restrições impostas pelo estado destas entidades no mini-mundo. A Figura 2.3 mostra um exemplo de restrição em um relacionamento recursivo. 12
16 Figura 2.2: Exemplo de relacionamento recursivo. Figura 2.3: Relacionamento empregado gerencia departamento. No exemplo da Figura 2.3, temos a seguinte situação: um empregado pode gerenciar apenas um departamento, enquanto que um departamento pode ser gerenciado por apenas um empregado. A este tipo de restrição, nós chamamos cardinalidade. A cardinalidade indica o número de relacionamentos, do qual uma entidade pode participar. Ela pode ser: 1:1; 1:N; N:N. No exemplo da Figura 2.3, a cardinalidade é 1:1, pois cada entidade empregado pode gerenciar apenas um departamento e vice-versa; no exemplo da Figura 13
17 2.1, no relacionamento EMPREGADO Trabalha para DEPARTAMENTO, O relacionamento é 1:N, pois um empregado pode trabalhar em apenas um departamento, enquanto um departamento pode possuir vários empregados; na Figura 2.4 temos um exemplo de um relacionamento com cardinalidade N:N. Figura 2.4: Relacionamento N:N. No exemplo da Figura 2.4, temos que um empregado pode trabalhar em vários projetos, enquanto que um projeto pode ter vários empregados trabalhando. Outra restrição muito importante é a participação. Ela define a existência de uma entidade através do relacionamento, podendo ser parcial ou total, veja o exemplo da Figura 2.3. A participação do empregado é parcial, pois nem todo empregado gerencia um departamento, porém a participação do departamento neste relacionamento é total, já que todo departamento precisa ser gerenciado por um empregado. Desta forma, todas ocorrências do tipo entidade DEPARTAMENTO precisam participar do relacionamento, mas nem todas ocorrências do tipo entidade EMPREGADO, precisam participar do relacionamento. Já no exemplo da Figura 2.1, ambas as participações são totais, pois todo empregado precisa trabalhar em um departamento e todo departamento tem que ter empregados trabalhando nele. Estas restrições são chamadas de restrições estruturais. Algumas vezes, torna-se necessário armazenar um atributo no tipo relacionamento, veja exemplo da figura 2.3. Pode-se querer saber em que dia o empregado passou a gerenciar o departamento, é difícil estabelecer a qual tipo entidade pertence atributo, pois isto é definido apenas pela 14
18 existência do relacionamento. Quando temos relacionamentos com cardinalidade 1:1, podemos colocar o atributo em uma das entidades, de preferência, em uma cujo tipo entidade tenha participação total. Neste caso, o atributo poderia ir para o tipo entidade departamento. Isto porque, nem todo empregado participará do relacionamento. Caso a cardinalidade seja 1:N, então podemos colocar o atributo no tipo entidade com participação N. Porém, se a cardinalidade for N:M então o atributo deverá ficar no tipo relação, como seria o caso do relacionamento ilustrado pela Figura 2.4, caso queiramos armazenar quantas horas cada empregado trabalhou em cada projeto, então este deverá ser um atributo do relacionamento, trabalha em. 2.9 Tipos Entidades Fracas Alguns tipos entidade podem não ter um atributo chave por si só, isto implica que não poderemos distinguir algumas entidades, porque as combinações dos valores de seus atributos podem ser idênticas. Estes tipos entidades são chamados entidades fracas. Elas precisam estar relacionadas com uma entidade pertencente ao tipo entidade proprietária, entidade forte. Este relacionamento é denominado relacionamento identificador. Veja o exemplo da Figura 2.5. Figura 2.5: Relacionamento com entidade fraca. O tipo entidade DEPENDENTE é uma entidade fraca, pois não possui um atributo chave, identificador. O tipo entidade EMPREGADO não é uma entidade fraca, pois 15
19 possui um atributo para identificação atributo chave, o número do CPF de um empregado. Porém, um dependente de cinco anos de idade não possui, necessariamente, um documento. Desta forma, esta entidade é um tipo entidade fraca. Um tipo entidade fraca possui uma chave parcial, que juntamente com a chave primária da entidade proprietária, forma uma chave primária composta. Neste exemplo, a chave primária do empregado é o CPF. A chave parcial do dependente é o seu nome, pois dois irmãos não podem ter o mesmo nome, falando logicamente. Desta forma, a chave primária dês entidade fica sendo o CPF do pai, ou da mãe, mais o nome do dependente. Todos os exemplos vistos anteriormente foram relacionamentos binários, ou seja, entre dois tipos entidades diferentes ou recursivos. Todavia, o modelo entidaderelacionamento não se restringe apenas a relacionamentos binários. O número de entidades que participam de um tipo relacionamento é irrestrito e armazenam muito mais informações do que diversos relacionamentos binários. Considere o seguinte exemplo: um fornecedor pode fornecer uma ou mais peças para um ou mais projeto. Se criarmos dois relacionamentos binários, não teremos estas informações de forma completa como se criarmos um relacionamento ternário, como ilustra a Figura 2.6. Figura 2.6: Exemplo de relacionamento ternário. 16
20 2.10 Diagrama Entidade Relacionamento O Diagrama Entidade Relacionamento é composto por um conjunto de objetos gráficos que visa representar todos os objetos do modelo Entidade Relacionamento tais como: atributos, atributos chaves, relacionamentos, restrições estruturais, entre outros. O diagrama ER fornece uma visão lógica do banco de dados, fornecendo um conceito mais generalizado de como estão estruturados os dados de um sistema. Os objetos que compõem o diagrama ER estão listados a seguir, na figura 2.7. Figura 2.7: Componentes do diagrama entidade-relacionamento Extensões do Modelo Entidade Relacionamento Os conceitos do modelo Entidade Relacionamento discutidos anteriormente são suficientes para representar conceitual e logicamente à maioria as aplicações de banco de dados, porém, com o surgimento de novas aplicações, surgiu também a necessidade de novas semânticas para a modelagem de informações mais complexas. O modelo Entidade Relacionamento Extendido (ERE) visa fornecer esta semântica para permitir a 17
21 representação de informações complexas. É importante frisar que embora o modelo ERE trate classes e subclasses, ele não possui a mesma semântica de um modelo orientado a objetos. O modelo ERE engloba todos os conceitos do modelo E-R mais os conceitos de subclasse, superclasse, generalização, especialização, e o conceito de herança de atributos Subtipos, Supertipos e Especialização O primeiro conceito do modelo ERE que será abordado é o de subclasse de um tipo entidade. Como visto anteriormente, um tipo entidade é utilizado para representar um conjunto de objetos do mesmo tipo. Em muitos casos, um tipo entidade possui diversos subgrupos adicionais de objetos que são significativas e precisam ser representadas explicitamente devido ao seu significado à aplicação de banco de dados. Para melhor entendimento desses conceitos, consideremos o seguinte exemplo: Para um banco de dados da empresa MERE temos o tipo entidade empregado, o qual possui as seguintes características: nome, RG, CPF, número funcional, endereço completo (rua, número, complemento, CEP, bairro, cidade), sexo, data de nascimento e telefone (DDD e número); caso o(a) funcionário(a) seja um(a) engenheiro(a), secretário(a), então deseja-se armazenar as seguintes informações: número do CREA e especialidade (civil, mecânico, eletro/eletrônico); caso seja um(a) secretário(a), então deseja-se armazenar as seguintes informações: qualificação (bi ou tri língue) e os idiomas no qual possui fluência verbal e escrita. Se as informações número do CREA, especialidade, tipo e idiomas forem representados diretamente no tipo entidade, empregado, estará representando informações de um conjunto limitado de objetos empregados, para todos os funcionários da empresa. Neste caso, podemos criar dois subtipos do tipo entidade, empregado: engenheiro e secretária, as quais irão conter as informações acima citadas. Além disto, engenheiro e secretária podem ter relacionamentos específicos. Uma entidade não pode existir meramente como componente de um subtipo. Antes de ser componente de um subtipo, uma entidade deve ser componente de um supertipo. Isto leva ao conceito de herança de atributos; ou seja, o subtipo herda todos os atributos 18