Prévia do material em texto
Sistemas de Gerenciamento Sistemas de Gerenciamento de Banco de Dadosde Banco de Dados Ramakrishnan • Gehrke Tradução daTradução da Terceira EdiçãoTerceira Edição Sistemas de Gerenciamento de Banco de Dados ISBN 978-85-7726-027-0 A reprodução total ou parcial deste volume por quaisquer formas ou meios, sem o consentimento escrito da editora, é ilegal e confi gura apropriação indevida dos direitos intelectuais e patrimoniais dos autores. Copyright © 2008 de McGraw-Hill Interamericana do Brasil Ltda. Todos os direitos reservados. Av. Brigadeiro Faria Lima, 201 – 17º. andar São Paulo, SP, CEP 05426-100 Todos os direitos reservados. Copyrigth © 2008 de McGraw-Hill Interamericana Editores, S. A. de C. V. Prol. Paseo de la Reforma 1015 Torre A Piso 17, Col. Desarrollo Santa Fé, Delegación Alvaro Obregón México 01376, D. F., México Tradução da terceira edição do original em inglês Database Management Systems. © 2003, 2000, 1998 de The McGraw-Hill Companies, Inc. ISBN da obra original: 0-07-246563-8 Diretor-Geral: Adilson Pereira Editora: Gisélia Costa Supervisora de Produção: Guacira Simonelli Preparação de Texto: Lucrécia Freitas e Mônica de Aguiar Design da Capa: Mick Wiggins Editoração Eletrônica: Crontec Ltda. ________________________________________________________________ R165s Ramarkrishnan, Raghu. Sistemas de gerenciamento de banco de dados [recurso eletrônico] / Raghu Ramarkrishnan,Johannes Gehrke ; tradução: Célia Taniwake. – 3. ed. – Dados eletrônicos. – Porto Alegre : AMGH, 2011. Editado também como livro impresso em 2008. ISBN 978-85-63308-77-1 1. Ciência da computação. 2. Bases de dados – Gerenciamento. I. Gehrke, Johannes. II. Título. CDU 004.658 ________________________________________________________________ Catalogação na publicação: Ana Paula Magnus – CRB 10/2052 21 2 INTRODUÇÃO AO PROJETO DE BANCO DE DADOS Quais são as etapas do projeto de um banco de dados? Por que o modelo ER é utilizado para criar um projeto inicial? Quais são os principais conceitos do modelo ER? Quais são as diretrizes para se utilizar efetivamente o modelo ER? Como o projeto de banco de dados se encaixa dentro da estrutura de projeto geral de um software complexo dentro de grandes empresas? O que é UML e como ela está relacionada com o modelo ER? Conceitos-chave: projeto de banco de dados, projeto conceitual, lógico e físico; modelo ER (entidade-relacionamento), conjunto de entidades, conjunto de rela- cionamentos, atributo, instância, chave; restrições de integridade, relacionamen- tos um-para-muitos e muitos-para-muitos; restrições de participação; entidades fracas, hierarquias de classe, agregração; UML, diagramas de classe, diagramas de banco de dados, diagramas de componente. ☛ ☛ ☛ ☛ ☛ ☛ ➽ Os homens mais bem-sucedidos do mundo usam a imaginação. Eles consideram o futuro, concebem seus modelos mentais, e depois trabalham para materializar esse modelo em todos os seus detalhes, completando aqui, acrescentando um pouco ali, alterando esse ou aquele pedacinho, mas constantemente criando, constantemente criando. — Robert Collier O modelo de dados entidade-relacionamento (ER) nos permite descrever os dados en- volvidos em uma empresa do mundo real em termos de objetos e seus relacionamentos e é amplamente utilizado para desenvolver um projeto inicial de banco de dados. Ele fornece conceitos úteis que nos possibilitam mover de uma descrição informal do que os usuários desejavam de seu banco de dados para uma descrição mais detalhada e 22 CAPÍTULO 2 precisa que pode ser implementada em um SGBD. Neste capítulo, introduziremos o modelo ER e discutiremos como seus recursos nos permitem modelar fielmente uma ampla variedade de dados. Iniciaremos com uma visão geral do projeto de banco de dados na Seção 2.1 para motivar nossa discussão sobre o modelo ER. Dentro de um contexto maior do processo de projeto geral, o modelo ER é utilizado em uma fase chamada projeto conceitual de banco de dados. Introduziremos, então, o modelo ER nas seções 2.2, 2.3 e 2.4. Na Seção 2.5, discutiremos os aspectos de projeto de banco de dados envolvendo o modelo ER. Discorreremos brevemente sobre o projeto conceitual de banco de dados para grandes empresas na Seção 2.6. Na Seção 2.7, apresentaremos uma visão geral da UML, uma abor- dagem de projeto e modelagem que é mais geral em seu escopo do que o modelo ER. Na Seção 2.8, introduziremos um estudo de caso utilizado como um exemplo real em todo o livro. O estudo de caso é um projeto completo de banco de dados, para uma loja na Internet. Ilustraremos as duas primeiras etapas do projeto de banco de dados (análise de requisitos e projeto conceitual) na Seção 2.8. Nos capítulos poste- riores, estenderemos o estudo de caso para abranger as etapas restantes do processo de projeto. Observamos que muitas variantes dos diagramas ER estão em uso, sem que nenhum padrão amplamente aceito prevaleça. A apresentação deste capítulo é representativa da família dos modelos ER e inclui uma seleção dos recursos mais populares. 2.1 PROJETO DE BANCO DE DADOS E DIAGRAMAS ER Iniciamos nossa discussão sobre projeto de banco de dados observando que esta é, tipicamente, apenas uma parte, embora seja uma parte central nos aplicativos que fazem uso intensivo de dados, de um projeto maior de sistema de software. Nosso foco primário é o projeto do banco de dados, e não discutiremos outros aspectos do projeto de software. Retomaremos esse ponto na Seção 2.7. O processo de projeto de banco de dados pode ser dividido em seis etapas. O mo- delo ER é o mais relevante nas três primeiras etapas. 1. Análise de Requisitos: A primeira etapa no projeto de um aplicativo de banco de dados é compreender quais dados devem ser armazenados, que aplicativos devem ser criados para manipular esses dados, e quais operações são mais freqüentes e sujeitas a requisitos de desempenho. Em outras palavras, devemos descobrir o que os usuários desejam do banco de dados. Normalmente, esse é um processo informal que envolve discussões com grupos de usuários, um estudo do ambiente operacio- nal em vigor e como é esperado que ele se altere, análise de toda a documentação disponível sobre os aplicativos existentes que se deseja substituir ou complementar com o banco de dados e assim por diante. Várias metodologias têm sido propostas para organizar e apresentar as informações coletadas nesta etapa, e algumas fer- ramentas automatizadas têm sido desenvolvidas para apoiar o processo. 2. Projeto Conceitual do Banco de Dados: As informações coletadas na etapa de análise de requisitos são usadas para desenvolver uma descrição de alto nível dos dados a serem armazenados, juntamente com as restrições conhecidas para serem apli- cadas sobre estes dados. Esta etapa normalmente é conduzida utilizando o modelo ER e é discutida no restante deste capítulo. O modelo ER é um dos diversos modelos de dados semânticos, ou de alto nível, utilizados no projeto de banco de dados. O objetivo é criar uma descrição simples dos dados que melhor corresponda à visão ou idéia que os usuários e desenvolvedores têm em relação aos dados (e às pessoas e processos a serem representados nos dados). Isso facilita a discussão entre todas Introdução ao Projeto de Banco de Dados 23 as pessoas envolvidas no processo de projeto, inclusive aquelas que não possuem conhecimento técnico. Ao mesmo tempo, o projeto inicial deve ser suficientemente preciso para permitir uma conversão direta em um modelo de dados suportado por um sistema de banco de dados comercial (o que, na prática, significa o modelo relacional). 3. Projeto Lógico de Banco de Dados: Devemos escolher um SGBD para implementar nosso projeto de banco de dados, e converter o projeto conceitual em um esquema de banco de dados no modelo de dados do SGBD escolhido. Consideraremos apenas os SGBDs relacionais e, assim, a tarefa na etapa de projeto lógico consiste em con- verter um esquema ER em umesquema de banco de dados relacional. Discutimos esta etapa em detalhes no Capítulo 3; o resultado é um esquema conceitual, tam- bém chamado de esquema lógico, no modelo de dados relacional. 2.1.1 Além do Projeto ER O diagrama ER é apenas uma descrição aproximada dos dados, criada através de uma avaliação subjetiva das informações coletadas durante a análise de requisitos. Uma análise mais cuidadosa normalmente pode refinar o esquema lógico obtido no final da Etapa 3 anterior. Uma vez que tenhamos um esquema lógico, devemos considerar o critério de desempenho e projetar o esquema físico. Finalmente, devemos tratar os aspectos de segurança e assegurar que os usuários sejam capazes de acessar os dados de que eles precisam, mas não os dados que desejamos ocultar deles. As três etapas restantes do projeto de banco de dados são descritas brevemente em seguida: 4. Refinamento do Esquema: A quarta etapa no projeto de banco de dados consiste em analisar a coleção de relações em nosso esquema de banco de dados relacional para identificar problemas em potencial e refiná-los. Em contraste às etapas de análise de requisitos e projeto conceitual, que são essencialmente subjetivas, o refinamento do esquema pode ser conduzido por uma teoria elegante e poderosa. Discutiremos a teoria de normalização de relações — reestruturação das relações para assegurar algumas propriedades desejáveis — no Capítulo 19. 5. Projeto Físico de Banco de Dados: Nesta etapa, consideramos as cargas típicas es- peradas que nosso banco de dados deve suportar e refinamos ainda mais o projeto de banco de dados para assegurar que ele satisfaça os critérios de desempenho de- sejados. Esta etapa pode apenas envolver a criação de índices em algumas tabelas e agrupamento de tabelas, ou pode envolver um reprojeto substancial de partes do esquema de banco de dados obtido das etapas anteriores de projeto. Discutiremos o projeto físico e a sintonização (tuning) de banco de dados no Capítulo 20. 6. Projeto de Aplicativos e Segurança: Qualquer projeto de software que envolva um SGBD deve considerar aspectos do aplicativo que vão além do banco de dados pro- Ferramentas para Projeto de Banco de Dados: As ferramentas de projeto são disponibilizadas por fabricantes de SGBD Relacionais, assim como por fabri- cantes de produtos de terceiros. Por exemplo, veja o seguinte link para detalhes sobre ferramentas de projeto e análise da Sybase: http://www.sybase.com/products/applicationhttp://www.sybase.com/products/application_tools.tools. O link seguinte fornece detalhes das ferramentas da Oracle: http://www.oracle.com/tools.http://www.oracle.com/tools. 24 CAPÍTULO 2 priamente dito. Metodologias de projeto, como a UML (Seção 2.7), tentam tratar o projeto de software e o ciclo de desenvolvimento completo. Brevemente, devemos identificar as entidades (por exemplo, usuários, grupos de usuários, departamen- tos) e os processos envolvidos no aplicativo. Devemos descrever o papel de cada entidade em cada processo que é refletido em alguma tarefa de aplicativo, como parte de um fluxo dessa tarefa. Para cada papel, devemos identificar as partes do banco de dados que devem ser acessíveis e as partes que não devem ser acessíveis, e devemos tomar medidas para assegurar que essas regras de acesso sejam obede- cidas. Um SGBD fornece diversos mecanismos para auxiliar esta etapa, que serão discutidos no Capítulo 21. Na fase de implementação, devemos codificar cada tarefa em uma linguagem de aplicativo (Java, por exemplo), utilizando o SGBD para acessar os dados. Discutire- mos o desenvolvimento de aplicativos nos capítulos 6 e 7. Em geral, nossa divisão do processo de projeto em etapas deve ser vista como uma classificação dos tipos de etapas envolvidas no projeto. Realisticamente, embora possa- mos começar com um processo de seis etapas esboçadas aqui, um projeto completo de banco de dados provavelmente exigirá uma fase de sintonização (tuning) subseqüente, na qual todos os seis tipos de etapas de projeto são intercalados e repetidos até que o projeto esteja satisfatório. 2.2 ENTIDADES, ATRIBUTOS E CONJUNTOS DE ENTIDADES Uma entidade é um objeto do mundo real distinguível de outros objetos. Exemplos incluem: o brinquedo Dragonzord Verde, o departamento de brinquedos, o gerente do departamento de brinquedos, o endereço residencial do gerente do departamento de brinquedos. Normalmente, é útil identificar uma coleção de entidades semelhantes. Tal coleção é chamada conjunto de entidades. Observe que os conjuntos de entidades não precisam ser disjuntos: o conjunto de funcionários do departamento de brinquedos e o conjunto de funcionários do departamento de utensílios podem ambos conter o funcionário John Doe (que pode trabalhar em ambos os departamentos). Poderíamos também definir um conjunto de entidades chamado Funcionários que contém os con- juntos de funcionários dos dois departamentos: de brinquedos e de utensílios. Uma entidade é descrita utilizando-se um conjunto de atributos. Todas as enti- dades em um determinado conjunto de entidades têm os mesmos atributos; isto é o que queremos dizer com semelhantes. (Essa afirmação é uma simplificação exagerada, como veremos quando discutirmos as hierarquias de herança na Seção 2.4.4, mas ela satisfaz por ora, e realça a idéia principal.) Nossa escolha de atributos reflete o nível de detalhes com os quais desejamos representar as informações sobre as entidades. Por exemplo, o conjunto de entidades Funcionários poderia usar nome, código de pessoa física (CPF) e vaga de estacionamento como atributos. Nesse caso, armazenaremos o nome, CPF e número da vaga do estacionamento para cada funcionário. Entretanto, não armazenaremos, digamos, o endereço de um funcionário (ou o sexo ou a idade). Para cada atributo associado a um conjunto de entidades, devemos identificar um domínio de possíveis valores. Por exemplo, o domínio do atributo nome de Funcio- nários poderia ser o conjunto de cadeias de 20 caracteres.1 Como outro exemplo, se a 1 Para evitar confusão, consideramos que os nomes de atributos não se repetem ao longo dos conjuntos de entidades. Isso não é uma limitação real, uma vez que sempre podemos usar o nome do conjunto de entidades para resolver as ambigüidades quando o mesmo nome de atributo for utilizado em mais de um conjunto de entidades. Introdução ao Projeto de Banco de Dados 25 empresa avalia funcionários em uma escala de 1 a 10 e armazena as avaliações em um campo chamado avaliação, o domínio associado consiste em inteiros de 1 a 10. Além disso, para cada conjunto de entidades, escolhemos uma chave, que consiste em um conjunto mínimo de atributos cujos valores identificam unicamente uma entidade do conjunto. Pode haver mais de uma chave candidata; se houver, designamos uma delas como a chave primária. Por enquanto, consideramos que cada conjunto de entidades contém no mínimo um conjunto de atributos que identifica unicamente uma entidade no conjunto inteiro; ou seja, o conjunto de atributos contém uma chave. Retomaremos esse ponto na Seção 2.4.3. O conjunto de entidades Funcionários com atributos cpf, nome e vaga é ilustrado na Figura 2.1. Um conjunto de entidades é representado por um retângulo, e um atributo é representado por um símbolo oval. Cada atributo da chave primária é sublinhado. A informação do domínio poderia ser listada juntamente com o nome do atributo, mas omitimos isso para manter as figuras compactas. A chave é cpf. nome vaga Funcionários cpf Figura 2.1 O conjunto de entidades Funcionários. 2.3 RELACIONAMENTOS E CONJUNTOS DE RELACIONAMENTOS Um relacionamento é uma associação entre duas ou mais entidades. Por exemplo, podemos ter o relacionamento em que Attishoo trabalha no departamento de farmá- cia. Como com as entidades, podemos desejar reunir um conjunto de relacionamentos semelhantes em um conjunto de relacionamentos. Um conjunto de relacionamentos pode ser considerado um conjunto de n-tuplas: {(e1, ...,en) | e1 Œ E1, ... , en Œ En} Cada n-tupla denota um relacionamento envolvendo n entidades e1 a en, sendo que a entidade ei pertence ao conjunto de entidades Ei. Na Figura 2.2 ilustramos o conjunto de relacionamentos Trabalha_em, no qual cada relacionamento indica um departamento em que um funcionário trabalha. Observe que diversos conjuntos de relacionamentos podem envolver os mesmos conjuntos de entidades. Por exemplo, poderíamos também ter um relacionamento Gerencia envolvendo Funcionários e De- partamentos. Um relacionamento também pode ter atributos descritivos. Estes são usados para registrar informações sobre o relacionamento em vez de sobre uma das entidades participantes; por exemplo, podemos desejar registrar que Attishoo trabalha no de- partamento de farmácia a partir de janeiro de 1991. Essa informação é registrada na Figura 2.2, adicionando-se um atributo, desde, a Trabalha_em. Um relacionamento deve ser identificado unicamente pelas entidades participantes, sem referência aos atri- 26 CAPÍTULO 2 butos descritivos. No conjunto de relacionamento Trabalha_em, por exemplo, cada relacionamento Trabalha_em deve ser identificado univocamente pela combinação de cpf de funcionário e id-depto de departamento. Assim, para um determinado par fun- cionário-departamento, não podemos ter mais de um valor desde associado. cpf id-depto orçamento Trabalha_emFuncionários nome vaga desde Departamentos nome-depto Figura 2.2 O conjunto de relacionamentos Trabalha_em. Uma instância de um conjunto de relacionamentos é um conjunto de seus relacio- namentos. Intuitivamente, uma instância pode ser considerada o ‘retrato’ do conjunto de relacionamentos em determinado momento. Uma instância do conjunto de rela- cionamentos Trabalha_em é ilustrada na Figura 2.3. Cada entidade Funcionários é denotada pelo seu cpf, e cada entidade Departamentos é denotada pela sua id-depto, por simplicidade. O valor desde é ilustrado ao lado de cada relacionamento. (Os co- mentários ‘muitos-para-muitos’ e ‘participação total’ na figura serão discutidos poste- riormente, quando discutirmos restrições de integridade.) Figura 2.3 Uma instância do conjunto de relacionamentos Trabalha_em. Como outro exemplo de um diagrama ER, suponha que cada departamento tenha escritórios em diversas localidades e desejamos registrar as localidades nas quais cada funcionário trabalha. Esse relacionamento é ternário porque devemos registrar uma associação entre um funcionário, um departamento e uma localidade. O diagrama ER para essa variante de Trabalha_em, que denominamos Trabalha_em2, é ilustrado na Figura 2.4. Encerra aqui o trecho do livro disponibilizado para esta Unidade de Aprendizagem. Na Biblioteca Virtual da Instituição, você encontra a obra na íntegra.