Beruflich Dokumente
Kultur Dokumente
Osvaldo Kotaro Takai Isabel Cristina Italiano Joo Eduardo Ferreira DCC-IME-USP Fevereiro - 2005
ndice
1 INTRODUO ................................................................................................................. 6 1.1 MODELOS DE DADOS ...................................................................................................... 6 1.1.1 Modelo Hierrquico.................................................................................................. 6 1.1.2 Modelo em Rede ..................................................................................................... 7 1.1.3 Modelo Relacional ................................................................................................... 8 1.1.4 Modelo Orientado a Objetos.................................................................................... 8 1.1.5 Sistemas Objeto-Relacionais .................................................................................. 9 1.2 ARQUITETURAS DE BANCO DADOS .................................................................................. 9 1.2.1 Introduo................................................................................................................ 9 1.2.2 Arquiteturas ........................................................................................................... 10 1.2.3 Resumo das arquiteturas de SGBDs .................................................................... 11 1.3 AMBIENTE DE IMPLEMENTAO CLIENTE-SERVIDOR ....................................................... 12 2 DEFINIO GERAL....................................................................................................... 14 2.1 PROPRIEDADES:........................................................................................................... 14 2.2 CARACTERSTICAS DA ABORDAGEM DE BASE DE DADOS X PROCESSAMENTO TRADICIONAL DE ARQUIVOS ............................................................................................................................ 15 2.3 CAPACIDADES DO SGBD.............................................................................................. 16 2.4 VANTAGENS ADICIONAIS DA ABORDAGEM DA BASE DE DADOS ........................................ 17 2.5 QUANDO NO UTILIZAR UM SGBD................................................................................. 18 2.6 PROFISSIONAIS E ATIVIDADES ENVOLVIDAS EM UM SGBD .............................................. 18 3 CONCEITOS E ARQUITETURAS DE SGBDS ............................................................. 19 3.1 MODELOS DE DADOS, ESQUEMAS E INSTNCIAS ............................................................ 19 3.1.1 Categorias de Modelos de Dados ......................................................................... 19 3.1.2 Esquemas e Instncias ......................................................................................... 19 3.2 ARQUITETURA E INDEPENDNCIA DE DADOS DE SGBDS ............................................... 20 3.3 LINGUAGENS DE BASE DE DADOS.................................................................................. 21 4 MODELAGEM DE DADOS USANDO O MODELO ENTIDADE-RELACIONAMENTO (MER) 22 4.1 MODELO DE DADOS CONCEITUAL DE ALTO-NVEL E PROJETO DE BASE DADOS ............... 22 4.2 UM EXEMPLO ............................................................................................................... 22 4.3 CONCEITOS DO MODELO ENTIDADE-RELACIONAMENTO.................................................. 23 4.3.1 Entidades e Atributos ............................................................................................ 23 4.3.2 Tipos de Entidades, Conjunto de Valores e Atributos-Chaves ............................. 24 4.3.3 Relacionamentos, Papis e Restries Estruturais .............................................. 25 4.3.4 Tipo de Entidade-Fraca ......................................................................................... 30 4.3.5 Projeto da Base de Dados COMPANHIA utilizando o MER ................................. 31 4.4 DIAGRAMA ENTIDADE-RELACIONAMENTO (DER)............................................................ 31 4.5 TIPOS DE RELACIONAMENTOS DE GRAU MAIOR QUE DOIS .............................................. 33 4.6 QUESTES PARA A SNTESE ......................................................................................... 37 5 O MODELO DE DADOS RELACIONAL ........................................................................ 38 5.1 CONCEITOS DO MODELO RELACIONAL ........................................................................... 38 5.1.1 Notao do Modelo Relacional.............................................................................. 39 5.1.2 Atributos-chaves de uma Relao......................................................................... 40 5.1.3 Esquemas de Bases de Dados Relacionais e Restries de Integridade ............ 41 5.1.4 Operaes de Atualizaes sobre Relaes ........................................................ 44
MAPEAMENTO DO MER PARA O MODELO DE DADOS RELACIONAL ................... 45 LINGUAGENS FORMAIS DE CONSULTA.................................................................... 49 7.1 LGEBRA RELACIONAL ................................................................................................. 49 7.1.1 Operaes SELECT e PROJECT ......................................................................... 49
7.1.1.1 7.1.1.2 O Operador SELECT................................................................................................. 49 O Operador PROJECT .............................................................................................. 50
7.1.2 Seqncia de Operaes ...................................................................................... 51 7.1.3 Renomeando Atributos.......................................................................................... 52 7.1.4 Operaes da Teoria dos Conjuntos..................................................................... 52 7.1.5 A Operao JOIN .................................................................................................. 55 7.1.6 Conjunto completo de Operaes da lgebra Relacional..................................... 57 7.1.7 A Operao DIVISION........................................................................................... 57 7.1.8 Operaes Relacionais Adicionais ........................................................................ 58 7.1.9 Funes de Agregao ......................................................................................... 58 7.1.10 Operaes de Clausura Recursiva ................................................................... 60 7.2 EXEMPLOS DE CONSULTAS NA LGEBRA RELACIONAL.................................................... 60 7.3 QUESTES DE REVISO................................................................................................ 62 7.4 CLCULO RELACIONAL ................................................................................................. 63 7.4.1 Clculo Relacional de Tuplas ................................................................................ 63 7.4.2 Clculo Relacional de Domnio ............................................................................. 65 8 A LINGUAGEM SQL ...................................................................................................... 67 8.1 ESTRUTURA BSICA ..................................................................................................... 67 8.1.1 A operao RENAME ............................................................................................ 68 8.1.2 Operaes com Strings ......................................................................................... 68 8.1.3 Ordenao e Apresentao de Tuplas.................................................................. 68 8.1.4 Operaes com Conjuntos .................................................................................... 68 8.1.5 Funes Agregadas............................................................................................... 69 8.1.6 Subconsultas Aninhadas ....................................................................................... 69 8.1.7 Vises .................................................................................................................... 70 8.1.8 Insero ................................................................................................................. 70 8.1.9 Atualizao ............................................................................................................ 71 8.1.10 Remoo ........................................................................................................... 71 8.1.11 SQL DDL ........................................................................................................... 71 9 DEPENDNCIAS FUNCIONAIS E NORMALIZAO DE BASE DE DADOS RELACIONAIS ............................................................................................................................ 75 9.1 DIRETRIZES PARA O PROJETO INFORMAL DE ESQUEMAS DE RELAES .......................... 75 9.1.1 Semntica de atributos de relao ........................................................................ 75 Informao redundante em tuplas e anomalias de atualizaes ....................................... 76 9.2 ANOMALIA DE INSERO ............................................................................................... 77 9.2.1 Anomalia de remoo............................................................................................ 77 9.2.2 Anomalia de modificao ...................................................................................... 77 9.2.3 Discusso .............................................................................................................. 78 9.2.4 Valores null em tuplas ........................................................................................... 78 9.2.5 Tuplas esprias ..................................................................................................... 78 9.3 DEPENDNCIAS FUNCIONAIS ......................................................................................... 80 9.3.1 Definio de Dependncia Funcional.................................................................... 80 9.3.2 Formas Normais Determinados pelas Chaves Primrias ..................................... 82
9.2.1.1. 9.2.1.2. 9.2.1.3. Primeira Forma Normal (1FN) ................................................................................... 82 Segunda Forma Normal (2FN) .................................................................................. 82 Terceira Forma Normal (3FN) ................................................................................... 83
10
DATA WAREHOUSE UMA VISO GERAL ................................................................ 89 10.1 O QUE O DATA WAREHOUSE ...................................................................................... 89 10.2 O MODELO DIMENSIONAL E SUAS IMPLEMENTAES ....................................................... 90 10.2.1 O modelo formal da base de dados multidimensional ...................................... 93 10.3 ASPECTOS DA MODELAGEM DIMENSIONAL ..................................................................... 95 10.3.1 Caractersticas .................................................................................................. 95
Conceitos da modelagem.................................................................................. 95
A granularidade das informaes .............................................................................. 96 As dimenses ............................................................................................................ 97 Os fatos ..................................................................................................................... 98
10.3.3 Os trs tipos de mtricas................................................................................... 98 10.3.4 Outros elementos da tabela fato ....................................................................... 99 10.4 OS ESQUEMAS BSICOS E SUAS VARIAES ................................................................ 101 10.4.1 O esquema Star clssico ................................................................................ 101
10.4.1.1 10.4.1.2 10.4.1.3 As variaes do esquema Star................................................................................ 105 O esquema Snowflake ............................................................................................ 109 As variaes do esquema Snowflake...................................................................... 109
10.5 AGREGAES DAS INFORMAES ............................................................................... 115 10.5.1 Definindo os agregados .................................................................................. 115 10.5.2 Implementando os agregados......................................................................... 117 10.6 UTILIZANDO OS AGREGADOS COM UM NOVO COMPONENTE: O NAVEGADOR DE AGREGADOS 119 10.6.1 O processo de carga ....................................................................................... 119
Prefcio
Esta apostila foi escrita para apoiar a aprendizagem dos alunos nas disciplinas de introduo a Sistemas Banco de Dados do IME-USP. Seu contedo uma pesquisa de vrios autores, sendo em partes transcries e tradues dos mesmos. Os captulos de 1 a 9 foram baseados nas referncias [1], [2], [3], [4], [5], [6] e [7]. O Captulo 10 foi baseado nas demais referncias que constam no final deste documento. O Apndice A foi baseado em [5]. Esta apostila tem como objetivo ser uma primeira leitura para os alunos iniciantes no curso de banco de dados e tenta sempre mostrar os temas abordados de forma simples e clara, propiciando subsdios para aprofundar-se nos temas tratados utilizando outras bibliografias. No intuito de ser didtica, esta apostila est estruturada da seguinte forma: O Captulo 1 apresenta uma introduo aos modelos e arquiteturas de banco de dados. O Captulo 2 traz os conceitos bsicos de sistemas de banco de dados, necessrios compreenso do restante deste material. No Captulo 3, as arquiteturas de banco de dados so apresentadas. O Captulo 4 trata de modelagem de banco de dados usando o paradigma entidade relacionamento. O Captulo 5 aborda o modelo relacional. O Captulo 6 ilustra como efetuar o mapeamento de um diagrama entidade relacionamento para o modelo relacional, de forma intuitiva. O Captulo 7 traz uma discusso e exemplos de linguagens de consultas formais, quais sejam: lgebra relacional, Clculo relacional de Tuplas e Clculo Relacional de Domnio. No Captulo 8, a linguagem SQL linguagem de consulta comercial mais difundida para o modelo relacional introduzida, por meio de sua teoria e exemplos prticos. O Captulo 9 trata de projeto de banco de dados, normalizao e dependncias funcionais entre os dados. No Captulo 10 uma viso geral sobre Data warehouse fornecida ao leitor. Finalmente, o Apndice A traz exemplos de consultas nas linguagens de consultas vistas anteriormente. Os autores agradecem imensamente aos alunos: Bianka M.M.T. Gonalves, Clodis Boscarioli, Rodolpho Iemini Atoji e Fernando Henrique Ferraz P. da Rosa, pelas valorosas correes, edies e sugestes do texto em questo.
Base de Dados
1 Introduo
O primeiro Sistema Gerenciador de Banco de Dados (SGBD) comercial surgiu no final de 1960 com base nos primitivos sistemas de arquivos disponveis na poca, os quais no controlavam o acesso concorrente por vrios usurios ou processos. Os SGBDs evoluram desses sistemas de arquivos de armazenamento em disco, criando novas estruturas de dados com o objetivo de armazenar informaes. Com o tempo, os SGBDs passaram a utilizar diferentes formas de representao, ou modelos de dados, para descrever a estrutura das informaes contidas em seus bancos de dados. Atualmente, os seguintes modelos de dados so normalmente utilizados pelos SGBDs: modelo hierrquico, modelo em redes, modelo relacional (amplamente usado) e o modelo orientado a objetos.
1.1
Modelos de Dados
Figura 1.1 - Diagrama de estrutura de rvore Cliente - Conta Corrente 1.1.2 Modelo em Rede
O modelo em redes surgiu como uma extenso ao modelo hierrquico, eliminando o conceito de hierarquia e permitindo que um mesmo registro estivesse envolvido em vrias associaes. No modelo em rede, os registros so organizados em grafos onde aparece um nico tipo de associao (set) que define uma relao 1:N entre 2 tipos de registros: proprietrio e membro. Desta maneira, dados dois relacionamentos 1:N entre os registros A e D e entre os registros C e D possvel construir um relacionamento M:N entre A e D. O gerenciador Data Base Task Group (DBTG) da CODASYL (Committee on Data Systems and Languages) estabeleceu uma norma para este modelo de banco de dados, com linguagem prpria para definio e manipulao de dados. Os dados tinham uma forma limitada de independncia fsica. A nica garantia era que o sistema deveria recuperar os dados para as aplicaes como se eles estivessem armazenados na maneira indicada nos esquemas. Os geradores de relatrios da CODASYL tambm definiram sintaxes para dois aspectos chaves dos sistemas gerenciadores de dados: concorrncia e segurana. O mecanismo de segurana fornecia uma facilidade na qual parte do banco de dados (ou rea) pudesse ser bloqueada para prevenir acessos simultneos, quando necessrio. A sintaxe da segurana permitia que uma senha fosse associada a cada objeto descrito no esquema. Ao contrrio do Modelo Hierrquico, em que qualquer acesso aos dados passa pela raiz, o modelo em rede possibilita acesso a qualquer n da rede sem passar pela raiz. No Modelo em Rede o sistema comercial mais divulgado o CAIDMS da Computer Associates. O diagrama para representar os conceitos do modelo em redes consiste em dois componentes bsicos: Caixas, que correspondem aos registros e Linhas, que correspondem s associaes. A Figura 1.2 ilustra um exemplo de diagrama do modelo em rede.
Estes dois modelos: Hierrquico e Rede so Orientados a Registros, isto , qualquer acesso base de dados insero, consulta, alterao ou remoo feito em um registro de cada vez.
Figura 1.3 Tabelas do modelo relacional Cliente - Conta Corrente 1.1.4 Modelo Orientado a Objetos
Os bancos de dados orientados a objeto comearam a se tornar comercialmente viveis em meados de 1980. A motivao para seu surgimento est em funo dos limites de armazenamento e representao semntica impostas no modelo relacional. Alguns exemplos so os sistemas de informaes geogrficas (SIG), os sistemas CAD e CAM, que so mais facilmente construdos usando tipos complexos de dados. A habilidade para criar os tipos de dados necessrios uma caracterstica das linguagens de programao orientadas a objetos. Contudo, estes sistemas necessitam guardar representaes das estruturas de dados que utilizam no armazenamento permanente. A estrutura padro para os bancos de dados orientados a objetos foi feita pelo Object Database Management Group (ODMG). Esse grupo Processamento dedicado, exclusivo. Codd era investigador da IBM. O modelo foi apresentado num artigo publicado em 1970, mas s nos anos 80 o modelo foi implementado.
2 1
formado por representantes dos principais fabricantes de banco de dados orientados a objeto disponveis comercialmente. Membros do grupo tm o compromisso de incorporar o padro em seus produtos. O termo Modelo Orientado a Objetos usado para documentar o padro que contm a descrio geral das facilidades de um conjunto de linguagens de programao orientadas a objetos e a biblioteca de classes que pode formar a base para o Sistema de Banco de Dados. Quando os bancos de dados orientados a objetos foram introduzidos, algumas das falhas perceptveis do modelo relacional pareceram ter sido solucionadas com esta tecnologia e acreditava-se que tais bancos de dados ganhariam grande parcela do mercado. Hoje, porm, acredita-se que os Bancos de Dados Orientados a Objetos sero usados em aplicaes especializadas, enquanto os sistemas relacionais continuaro a sustentar os negcios tradicionais, onde as estruturas de dados baseadas em relaes so suficientes. O diagrama de classes UML serve geralmente como o esquema para o modelo de dados orientado a objetos. Observe o exemplo da Figura 1.4, e compare as diferenas com o modelo anterior.
Figura 1.4 - Diagrama UML Cliente - Conta Corrente 1.1.5 Sistemas Objeto-Relacionais
A rea de atuao dos sistemas Objeto-Relacional tenta suprir a dificuldade dos sistemas relacionais convencionais, que o de representar e manipular dados complexos, visando ser mais representativos em semntica e construes de modelagens. A soluo proposta a adio de facilidades para manusear tais dados utilizando-se das facilidades SQL (Structured Query Language) existentes. Para isso, foi necessrio adicionar: extenses dos tipos bsicos no contexto SQL; representaes para objetos complexos no contexto SQL; herana no contexto SQL e sistema para produo de regras.
1.2
1.2.1 Introduo
Atualmente, devem-se considerar alguns aspectos relevantes para atingir a eficincia e a eficcia dos sistemas informatizados desenvolvidos, a fim de atender seus usurios nos mais variados domnios de aplicao: automao de escritrios, sistemas de apoio a decises, controle de reserva de recursos, controle e planejamento de produo, alocao e estoque de recursos, entre outros. Tais aspectos so: a) Os projetos Lgico e Funcional do Banco de Dados devem ser capazes de prever o volume de informaes armazenadas a curto, mdio e longo prazo. Os projetos devem ter uma grande capacidade de adaptao para os trs casos mencionados; b) Deve-se ter generalidade e alto grau de abstrao de dados, possibilitando confiabilidade e eficincia no armazenamento dos dados e permitindo a utilizao de diferentes tipos de gerenciadores de dados atravs de linguagens de consultas padronizadas; c) Projeto de uma interface gil e com uma "rampa ascendente" para propiciar aprendizado suave ao usurio, no intuito de minimizar o esforo cognitvo;
10
d) Implementao de um projeto de interface compatvel com mltiplas plataformas (UNIX, Windows NT, Windows Workgroup, etc); e) Independncia de Implementao da Interface em relao aos SGBDs que daro condies s operaes de armazenamento de informaes (ORACLE, SYSBASE, INFORMIX, PADRO XBASE, etc). f) Converso e mapeamento da diferena semntica entre os paradigmas utilizados no desenvolvimento de interfaces (Imperativo (ou procedural), Orientado a Objeto, Orientado a evento), servidores de dados (Relacional) e programao dos aplicativos (Imperativo, Orientado a Objetos).
1.2.2 Arquiteturas
As primeiras arquiteturas usavam mainframes para executar o processamento principal e de todas as funes do sistema, incluindo os programas aplicativos, programas de interface com o usurio, bem como a funcionalidade dos SGBDs. Esta a razo pela qual a maioria dos usurios fazia acesso aos sistemas via terminais que no possuam poder de processamento, apenas a capacidade de visualizao. Todos os processamentos eram feitos remotamente, apenas as informaes a serem visualizadas e os controles eram enviados do mainframe para os terminais de visualizao, conectados a ele por redes de comunicao. Como os preos do hardware foram decrescendo, muitos usurios trocaram seus terminais por computadores pessoais (PC) e estaes de trabalho. No comeo os SGBDs usavam esses computadores da mesma maneira que usavam os terminais, ou seja, o SGBD era centralizado e toda sua funcionalidade, execuo de programas aplicativos e processamento da interface do usurio eram executados em apenas uma mquina. Gradualmente, os SGBDs comearam a explorar a disponibilidade do poder de processamento no lado do usurio, o que levou arquitetura cliente-servidor. A arquitetura cliente-servidor foi desenvolvida para dividir ambientes de computao onde um grande nmero de PCs, estaes de trabalho, servidores de arquivos, impressoras, servidores de banco de dados e outros equipamentos so conectados juntos por uma rede. A idia definir servidores especializados, tais como servidor de arquivos, que mantm os arquivos de mquinas clientes, ou servidores de impresso que podem estar conectados a vrias impressoras; assim, quando se desejar imprimir algo, todas as requisies de impresso so enviadas a este servidor. As mquinas clientes disponibilizam para o usurio as interfaces apropriadas para utilizar esses servidores, bem como poder de processamento para executar aplicaes locais. Esta arquitetura se tornou muito popular por algumas razes. Primeiro, a facilidade de implementao dada a clara separao das funcionalidades e dos servidores. Segundo, um servidor inteligentemente utilizado porque as tarefas mais simples so delegadas s mquinas clientes mais baratas. Terceiro, o usurio pode executar uma interface grfica que lhe familiar, ao invs de usar a interface do servidor. Desta maneira, a arquitetura cliente-servidor foi incorporada aos SGBDs comerciais. Diferentes tcnicas foram propostas para se implementar essa arquitetura, sendo que a mais adotada pelos Sistemas Gerenciadores de Banco de Dados Relacionais (SGBDRs) comerciais a incluso da funcionalidade de um SGBD centralizado no lado do servidor. As consultas e a funcionalidade transacional permanecem no servidor, sendo que este chamado de servidor de consulta ou servidor de transao. assim que um servidor SQL fornecido aos clientes. Cada cliente tem que formular suas consultas SQL, prover a interface do usurio e as funes de interface usando uma linguagem de programao. O cliente pode tambm se referir a um dicionrio de dados o qual inclui informaes sobre a distribuio dos dados em vrios servidores SQL, bem como os mdulos para a decomposio de uma consulta global em um nmero de consultas locais que podem ser executadas em vrios stios. Comumente o servidor SQL tambm chamado de back-end machine e o cliente de front-end machine. Como SQL prov uma linguagem padro para o SGBDRs, esta criou o ponto de diviso lgica entre o cliente e o servidor. Atualmente, existem vrias tendncias para arquitetura de Banco de Dados, nas mais diversas direes.
11
Plataformas centralizadas. Na arquitetura centralizada, existe um computador com grande capacidade de processamento, o qual o hospedeiro do SGBD e emuladores para os vrios aplicativos. Esta arquitetura tem como principal vantagem a de permitir que muitos usurios manipulem grande volume de dados. Sua principal desvantagem est no seu alto custo, pois exige ambiente especial para mainframes e solues centralizadas. Sistemas de Computador Pessoal - PC. Os computadores pessoais trabalham em sistema stand-alone, ou seja, fazem seus processamentos sozinhos. No comeo esse processamento era bastante limitado, porm, com a evoluo do hardware, tem-se hoje PCs com grande capacidade de processamento. Eles utilizam o padro Xbase e quando se trata de SGBDs, funcionam como hospedeiros e terminais. Desta maneira, possuem um nico aplicativo a ser executado na mquina. A principal vantagem desta arquitetura a simplicidade. Banco de Dados Cliente-Servidor. Na arquitetura Cliente-Servidor, o cliente (front_end) executa as tarefas do aplicativo, ou seja, fornece a interface do usurio (tela, e processamento de entrada e sada). O servidor (back_end) executa as consultas no DBMS e retorna os resultados ao cliente. Apesar de ser uma arquitetura bastante popular, so necessrias solues sofisticadas de software que possibilitem: o tratamento de transaes, as confirmaes de transaes (commits), desfazer transaes (rollbacks), linguagens de consultas (stored procedures) e gatilhos (triggers). A principal vantagem desta arquitetura a diviso do processamento entre dois sistemas, o que reduz o trfego de dados na rede. Banco de Dados Distribudos (N camadas). Nesta arquitetura, a informao est distribuda em diversos servidores. Como exemplo, observe a Figura 1.5. Cada servidor atua como no sistema cliente-servidor, porm as consultas oriundas dos aplicativos so feitas para qualquer servidor indistintamente. Caso a informao solicitada seja mantida por outro servidor ou servidores, o sistema encarrega-se de obter a informao necessria, de maneira transparente para o aplicativo, que passa a atuar consultando a rede, independente de conhecer seus servidores. Exemplos tpicos so as bases de dados corporativas, em que o volume de informao muito grande e, por isso, deve ser distribudo em diversos servidores. Porm, no dependente de aspectos lgicos de carga de acesso aos dados, ou base de dados fracamente acopladas, em que uma informao solicitada vai sendo coletada numa propagao da consulta numa cadeia de servidores. A caracterstica bsica a existncia de diversos programas aplicativos consultando a rede para acessar os dados necessrios, porm, sem o conhecimento explcito de quais servidores dispem desses dados.
12
1.3
13
14
2 Definio Geral
Base de Dados: Coleo de dados relacionados; Dados: Valor de um campo armazenado, matria-prima para obteno de informao; Informao: Dados compilados e processados de acordo com solicitao de consultas e anlises
2.1
Propriedades:
Uma base de dados uma coleo de dados logicamente relacionados, com algum significado. Associaes aleatrias de dados no podem ser chamadas de base de dados; Uma base de dados projetada, construda e preenchida (instanciada) com dados para um propsito especfico. Ela tem um grupo de usurios e algumas aplicaes pr-concebidas para atend-los; Uma base de dados representa algum aspecto do mundo real, algumas vezes chamado de mini-mundo. Mudanas no mini-mundo provocam mudanas na base de dados.
15
Uma base de dados tem alguma fonte de dados, algum grau de interao com eventos do mundo real e uma audincia que est ativamente interessada no seu contedo. Um Sistema Gerenciador de Base de Dados (SGBD) uma coleo de programas que permitem aos usurios criarem e manipularem uma base de dados. Um SGBD , assim, um sistema de software de propsito geral que facilita o processo de definir, construir e manipular bases de dados de diversas aplicaes.
Definir uma base de dados envolve a especificao de tipos de dados a serem armazenados na base de dados. Construir uma base de dados o processo de armazenar os dados em algum meio que seja controlado pelo SGBD. Manipular uma base de dados indica a utilizao de funes como a de consulta, para recuperar dados especficos, modificao da base de dados para refletir mudanas no mini-mundo (inseres, atualizaes e remoes), e gerao de relatrios.
A base de dados e o software de gerenciamento da base de dados compem o chamado Sistema de Base de Dados. A Figura 2.1 apresenta um esquema genrico de um Sistema de Banco de Dados em sua interao com seus usurios.
Usurios/Programadores Sistema de Base de Dados Consultas/Programas de Aplicaes
Base
2.2
A tabela abaixo traz as principais caractersticas que diferem um sistema desenvolvido na perspectiva de banco de dados versus um desenvolvimento pelo tradicional gerenciamento de arquivos.
16
Representao de dados ao nvel fsico Cada viso implementada por mdulos especficos
Capaz de permitir diversas aplicaes independncia entre dados e programas Representao conceitual atravs de dados e programas Permite mltiplas vises
facilidade de consultas
2.3
Capacidades do SGBD
Controle de Redundncia: no processamento tradicional de arquivos, muitos grupos de usurios mantm seus prprios arquivos para manipular suas aplicaes de processamento, que pode provocar o armazenamento de informaes redundantes; Problemas: Duplicao de esforos; Desperdcio de espao; Inconsistncia: alterao em alguns arquivos e em outros no, ou em todos os arquivos, porm, de maneira independente; Compartilhamento de Dados: SGBDs multiusurios devem fornecer controle de concorrncia para assegurar que atualizaes simultneas resultem em modificaes corretas. Um outro mecanismo que permite a noo de compartilhamento de dados em um SGBD multiusurio a facilidade de definir vises de usurio, que usada para especificar a poro da base de dados que de interesse para um grupo particular de usurios; Restries de Acesso Multiusurio: quando mltiplos usurios compartilham uma base de dados, comum que alguns usurios no autorizados no tenham acesso a todas as informaes da base de dados. Por exemplo, os dados financeiros so freqentemente considerados confidenciais e, desse modo, somente pessoas autorizadas devem ter acesso. Alm disso, pode ser permitido a alguns usurios, apenas a recuperao dos dados. J, para outros, so permitidas a recuperao e a modificao. Assim, o tipo de operao de acesso - recuperao ou modificao - pode tambm ser controlado. Tipicamente, usurios e grupos de usurios recebem uma conta protegida por palavraschaves, que usada para se obter acesso base de dados, o que significa dizer que contas diferentes possuem restries de acesso diferentes. Um SGBD deve fornecer um subsistema de autorizao e segurana, que usado pelo DBA para criar contas e especificar restries nas contas. O SGBD deve ento obrigar estas restries automaticamente. Note que um controle similar pode ser aplicado ao software do SGBD; Fornecimento de Mltiplas Interfaces: devido aos vrios tipos de usurios, com variados nveis de conhecimento tcnico, um SGBD deve fornecer uma variedade de interfaces atend-los. Os tipos de interfaces incluem linguagens de consulta para usurios ocasionais, interfaces de linguagem de programao para programadores de aplicaes, formulrios e interfaces dirigidas por menus para usurios comuns; Representao de Relacionamento Complexo entre Dados: uma base de dados pode possuir uma variedade de dados que esto inter-relacionados de muitas maneiras. Um SGBD deve ter a capacidade de representar uma variedade de relacionamentos complexos entre dados, bem como recuperar e modificar dados relacionados de maneira fcil e eficiente; Reforar Restries de Integridade: muitas aplicaes de base de dados tero certas restries de integridade de dados. A forma mais elementar de restrio de integridade a
17
especificao do tipo de dado de cada item. Existem tipos de restries mais complexas. Um tipo de restrio que ocorre freqentemente a especificao de que um registro de um arquivo deve estar relacionado a registros de outros arquivos. Um outro tipo de restrio especifica a unicidade sobre itens de dados. Estas restries so derivadas da semntica dos dados e do mini-mundo que eles representam. Algumas restries podem ser especificadas ao SGBD e automaticamente executadas. Outras restries podem ser verificadas pelos programas de atualizao ou no tempo da entrada de dados. Note que um item de dados pode ser inserido erroneamente, mas ainda atender as restries de integridade; Fornecer Backup e Restaurao: Um SGBD deve fornecer recursos para restaurao caso ocorram falhas de hardware ou software. O subsistema de backup e restaurao do SGBD o responsvel pela restaurao. Por exemplo, se o sistema de computador falhar no meio da execuo de um programa que esteja realizando uma alterao complexa na base de dados, o subsistema de restaurao responsvel por assegurar que a base de dados seja restaurada ao estado anterior ao incio da execuo do programa. Alternativamente, o subsistema de restaurao poderia assegurar que o programa seja reexecutado a partir do ponto em que havia sido interrompido.
2.4
Potencial para obrigar a Padronizao: a abordagem de base de dados permite que o DBA defina e obrigue a padronizao entre os usurios da base de dados em grandes organizaes. Isso facilita a comunicao e a cooperao entre vrios departamentos, projetos e usurios. Padres podem ser definidos para formatos de nomes, elementos de dados, telas, relatrios, terminologias, etc. O DBA pode obrigar a padronizao em um ambiente de base de dados centralizado, muito mais facilmente que em um ambiente onde cada usurio ou grupo tem o controle de seus prprios arquivos e programas de aplicao; Flexibilidade: mudanas na estrutura de uma base de dados podem ser necessrias devido a mudanas nos requisitos. Por exemplo, um novo grupo de usurios pode surgir com necessidade de informaes adicionais, ainda no disponveis na base de dados. Alguns SGBDs permitem que tais mudanas na estrutura da base de dados sejam realizadas sem afetar a maioria dos programas de aplicaes existentes; Reduo do Tempo de Desenvolvimento de Aplicaes: uma das principais caractersticas de venda da abordagem de base de dados o tempo reduzido para o desenvolvimento de novas aplicaes, como a recuperao de certos dados da base de dados para a impresso de novos relatrios. Projetar e implementar uma nova base de dados pode tomar mais tempo do que escrever uma simples aplicao de arquivos especializada. Porm, uma vez que a base de dados esteja em uso, geralmente o tempo para se criar novas aplicaes, usando-se os recursos de um SGBD, bastante reduzido. O tempo para se desenvolver uma nova aplicao em um SGBD estimado em 1/4 a 1/6 do que o tempo de desenvolvimento, usando-se apenas o sistema de arquivos tradicional, devido s facilidades de interfaces disponveis em um SGBD; Disponibilidade de Informaes Atualizadas: to logo um usurio modifique uma base de dados, todos os outros usurios sentem imediatamente esta modificao. Esta disponibilidade de informaes atualizadas essencial para muitas aplicaes, tais como sistemas de reservas de passagens areas ou bases de dados bancrias. Isso somente possvel devido ao subsistema de controle de concorrncia e restaurao do SGBD; Economia de Escala: a abordagem de SGBDs permite a consolidao de dados e de aplicaes reduzindo-se, desse modo, o desperdcio em atividades redundantes de processamento em diferentes projetos ou departamentos. Isto possibilita organizao como um todo investir em processadores mais poderosos, e perifricos de armazenamento e de comunicao mais eficientes.
18
2.5
bases de dados e aplicaes simples, bem definidas sem expectativa de mudana; existem restries de tempo que no podem ser satisfeitas em SGBDs; no h necessidade de acesso multiusurio.
2.6
Administrador da Base de Dados: em qualquer organizao onde muitas pessoas compartilham muitos recursos, existe a necessidade de um administrador chefe para supervisionar e gerenciar estes recursos. Num ambiente de base de dados, o recurso primrio a prpria base de dados e os recursos secundrios so o prprio SGBD e softwares relacionados. A administrao desses recursos de responsabilidade do DBA (Database Administrator). O DBA responsvel por autorizar acesso base de dados e coordenar e monitorar seu uso. O DBA responsvel por problemas, tais como, quebra de segurana ou baixo desempenho. Em grandes organizaes, o DBA auxiliado por tcnicos; Projetistas da Base de Dados: os projetistas de base de dados tm a responsabilidade de identificar os dados a serem armazenados na Base de Dados e escolher estruturas apropriadas para representar e armazenar tais dados. Estas tarefas so geralmente executadas antes que a base de dados seja utilizada. responsabilidade destes projetistas obter os requisitos necessrios dos futuros usurios da base. Tipicamente, os projetistas interagem com cada grupo de usurios em potencial e definem vises da base de dados para adequar os requisitos e processamentos de cada grupo. Estas vises so ento analisadas e, posteriormente, integradas para que, ao final, o projeto da base de dados possa ser capaz de dar subsdio aos requisitos de todos os grupos de usurios; Analistas de Sistemas e Programadores de Aplicao: analistas de sistemas determinam os requisitos de usurios finais, especialmente dos usurios comuns, e desenvolvem especificaes das transaes para atender a estes requisitos; programadores de aplicaes implementam estas especificaes produzindo programas e, ento, testam, depuram, documentam e mantm estes programas. Analistas e programadores devem estar familiarizados com todas as capacidades fornecidas pelo SGBD para desempenhar estas tarefas. Usurios Finais: existem profissionais que precisam ter acesso base de dados para consultar, modificar e gerar relatrios. A base de dados existe para estes usurios. Existem algumas categorias de usurios finais: usurios ocasionais: ocasionalmente fazem acesso base de dados, mas eles podem necessitar de diferentes informaes a cada vez que fazem acesso. Eles podem usar uma linguagem de consulta sofisticada para especificar suas requisies e so, tipicamente, gerentes de mdio ou alto-nvel; usurios comuns ou paramtricos: estes usurios realizam operaes padres de consultas e atualizaes, chamadas TRANSAES PERMITIDAS, que foram cuidadosamente programadas e testadas. Estes usurios constantemente realizam recuperaes e modificaes na base de dados; usurios sofisticados: incluem engenheiros, analistas de negcios e outros que procuraram familiarizar-se com as facilidades de um SGBD para atender aos seus complexos requisitos; Profissionais de Apoio: Projetistas e Implementadores de SGBD Desenvolvedores de Ferramentas Operadores de Manuteno
19
Uma das caractersticas fundamentais da abordagem de base de dados que ela fornece algum nvel de abstrao de dados, pela omisso de detalhes de armazenamento de dados que no so necessrios para a maioria dos usurios. O modelo de dados a principal ferramenta que fornece esta abstrao. Um Modelo de Dados um conjunto de conceitos que podem ser usados para descrever a estrutura de uma base de dados. Por estrutura de uma base de dados entende-se os tipos de dados, relacionamentos e restries pertinentes aos dados. Muitos modelos de dados tambm definem um conjunto de operaes para especificar como recuperar e modificar a base de dados.
20
3.2
A arquitetura mais difundida na literatura a Arquitetura Three-Schema (tambm conhecida como arquitetura ANSI/SPARC), proposta por Tsichritzis & Klug em 1978. A meta desta arquitetura, exibida na Figura 3.1, separar as aplicaes de usurios da base de dados fsica. Nesta arquitetura, esquemas podem ser definidos em trs nveis: 1. O nvel interno tem um esquema interno que descreve a estrutura de armazenamento fsico da base de dados. O esquema interno usa um modelo de dados fsico e descreve todos os detalhes de armazenamento de dados e caminhos de acesso base de dados; 2. O nvel conceitual tem um esquema conceitual que descreve a estrutura de toda a base de dados. O esquema conceitual uma descrio global da base de dados, que omite detalhes da estrutura de armazenamento fsico e se concentra na descrio de entidades, tipos de dados, relacionamentos e restries. Um modelo de dados de alto-nvel ou um modelo de dados de implementao podem ser utilizados neste nvel. 3. O nvel externo ou viso possui esquemas externos ou vises de usurios. Cada esquema externo descreve a viso da base de dados de um grupo de usurios da base de dados. Cada viso descreve, tipicamente, a parte da base de dados que um particular grupo de usurios est interessado e esconde deste o restante da base de dados. Um modelo de dados de alto-nvel ou um modelo de dados de implementao podem ser usados neste nvel. USURIOS FINAIS
NVEL EXTERNO
VISO EXTERNA 1
VISO EXTERNA N
mapeamento externo/conceitual NVEL CONCEITUAL mapeamento conceitual/interno NVEL INTERNO ESQUEMA INTERNO ESQUEMA CONCEITUAL
21
Independncia Lgica de Dados: a capacidade de alterar o esquema conceitual sem ter que mudar os esquemas externos ou programas de aplicao. Pode-se mudar o esquema conceitual para expandir a base de dados, com a adio de novos tipos de registros (ou itens de dados), ou reduzir a base de dados removendo um tipo de registro. Neste ltimo caso, esquemas externos que se referem apenas aos dados remanescentes no devem ser afetados; Independncia Fsica de Dados: a capacidade de alterar o esquema interno sem ter que alterar o esquema conceitual externo. Mudanas no esquema interno podem ser necessrias devido a alguma reorganizao de arquivos fsicos para melhorar o desempenho nas recuperaes e/ou modificaes. Aps a reorganizao, se nenhum dado foi adicionado ou perdido, no haver necessidade de modificar o esquema conceitual.
3.3
Linguagem de Definio de Dados (Data Definition Language - DDL): utilizada pelo DBA e projetistas de base de dados para definir seus esquemas. O SGBD tem um compilador para processar descries em DDL e construir a descrio do esquema armazenado no catlogo; Linguagem de Manipulao de Dados (Data Manipulation Language - DML): uma vez que o esquema compilado e a base de dados preenchida com dados, os usurios tm que ter algum modo de manipular os dados. Manipulaes comuns como recuperao, insero, remoo e modificao de dados so realizadas pela DML.
22
4.1
Mini-Mundo
Esquema Conceitual (em um Modelo de Dados de Alto-Nvel) Independente de qualquer SGBD MAPEAMENTO DO MODELO DE DADOS SGBD especfico Esquema Conceitual (em um Modelo de Dados de um SGBD especfico)
PROJETO FSICO
4.2
Um Exemplo
Neste exemplo, descrita uma base de dados COMPANHIA que ser utilizada para ilustrar o processo de projeto de base de dados. So listados os requisitos da base de dados e criado o seu esquema conceitual passo-a-passo ao mesmo tempo em que so introduzidos os conceitos de modelagem usando o MER. A base de dados COMPANHIA armazena os dados dos empregados, departamentos e projetos. Supe-se que aps a Obteno e Anlise dos Requisitos, os projetistas da base de dados produziram a seguinte descrio do mini-mundo parte da companhia a ser representada na base de dados:
23
A companhia organizada em departamentos. Cada departamento tem um nome, um nmero e um empregado que gerencia o departamento. Armazena-se a data de incio que o empregado comeou a gerenciar o departamento. Um departamento pode ter diversas localizaes; Um departamento controla inmeros projetos, sendo que cada um tem um nome, um nmero e uma localizao; Do empregado armazena-se o nome, o nmero do seguro social, endereo, salrio, sexo e data de nascimento. Todo empregado associado a um departamento, mas pode trabalhar em diversos projetos, que no so necessariamente controlados pelo mesmo departamento. Armazena-se, tambm, o nmero de horas que o empregado trabalha em cada projeto. Mantm-se, ainda, a indicao do supervisor direto de cada projeto; Os dependentes de cada empregado so armazenados para propsito de garantir os benefcios do seguro. Para cada dependente ser armazenado o nome, sexo, data de nascimento e o relacionamento com o empregado.
4.3
24
Endereo da Rua
Cidade
Estado
CEP
Nome da Rua
Nmero
Apartamento
chamados atributos derivados3. Alguns valores de atributos podem ser derivados de entidades relacionadas. Por exemplo, um atributo Nmero de Empregados de uma entidade departamento que pode ser calculado contando-se o nmero de empregados relacionados com o departamento. Outras situaes: uma entidade pode no ter quaisquer valores para um atributo. Por exemplo, o atributo Apartamento aplica-se somente queles empregados que residam em algum prdio. Para tais situaes, um valor especial chamado null criado. O valor null pode tambm ser utilizado para denotar que o valor desconhecido, como por exemplo, quando o cliente em um cadastro no responde o nmero do CEP da rua onde reside. O significado para o primeiro uso do null no aplicvel e, para o segundo, desconhecido.
Atributos derivados no necessitam ser armazenados na base de dados, podendo ser calculados por meio de uma consulta.
25
1 (Cooper Sugar, Ribeiro Preto, Joo da Silva) 2 (FastCom, Dallas, Paulo Paz) c
26
empregado com o departamento em que este trabalha. Cada instncia de relacionamento em TRABALHA-PARA associa uma entidade empregado e uma entidade departamento. A Figura 4.5 ilustra este exemplo, onde cada instncia de relacionamento ri conectada a uma entidade empregado e a uma entidade departamento. No mini-mundo representado nesta Figura, os empregados e1, e3 e e6 trabalham para o departamento d1; e2 e e4 trabalham para d2; e e5 e e7 trabalham para d3.
TRABALHA-PARA EMPREGADO r e
1 2 3 4 5 6 7 1
DEPARTAMENTO
r r r r r r
e e e e e e
d 1
3
d 2
4
d 3
5
6 7
FORNECE FORNECEDOR s
1 2
r r r r
PROJETO
j 1
3
j 2
4
PEA p
1 2 3
r r r
j 3
5
p p
6 7
27
Em geral, um tipo de relacionamento ternrio representa mais informao do que trs tipos de relacionamentos binrios. Por exemplo, considere os trs tipos de relacionamentos binrios: PODE-FORNECER, USA e FORNECE-ALGO. Supe-se que: a. PODE-FORNECER, entre os tipos de entidades FORNECEDOR e PEA, possui uma instncia (s, p) com o significado: "o fornecedor s pode fornecer a pea p" (para qualquer projeto); b. USA, entre os tipos de entidades PROJETO e PEA, possui uma instncia (j, p) com o significado: "o projeto j usa a pea p"; e c. FORNECE-ALGO, entre os tipos de entidades FORNECEDOR e PROJETO, possui uma instncia (s, j) com o significado: "o fornecedor s fornece alguma pea para o projeto j". A existncia dessas trs instncias de relacionamentos (s, p), (j, p) e (s, j) em PODEFORNECER, USA e FORNECE-ALGO, respectivamente, no necessariamente implica que uma instncia (s, j, p) exista no tipo de relacionamento ternrio FORNECE. Isto tem sido chamado armadilha de conexo. Relacionamento como Atributo: Convm, algumas vezes, pensar em um tipo de relacionamento em termos de atributos. Considere-se o tipo de relacionamento TRABALHA-PARA discutido anteriormente. Pode-se pensar em colocar um atributo chamado Departamento no tipo de entidade EMPREGADO onde o valor deste atributo em cada entidade empregado a entidade departamento em que ele trabalha. Quando se pensa em um tipo de relacionamento binrio como atributo, existem duas alternativas: Departamento como atributo do tipo de entidade EMPREGADO ou Empregado como atributo do tipo de entidade DEPARTAMENTO. Neste ltimo caso, o atributo Empregado um atributo multivalorado, onde os valores pertencem ao tipo de entidade EMPREGADO. Qualquer uma dessas alternativas representada pelo tipo de relacionamento TRABALHAPARA. Nomes de Papis e Relacionamentos Recursivos: Cada tipo de entidade que participa de um tipo de relacionamento possui um papel especfico no relacionamento. O nome do papel indica o papel que uma entidade de um tipo de entidade tem para cada instncia de relacionamento. Por exemplo, no tipo de relacionamento TRABALHA-PARA, EMPREGADO tem o papel empregado ou trabalhador e DEPARTAMENTO tem o papel de departamento ou empregador. A escolha do nome nem sempre simples. Para o tipo de relacionamento ternrio FORNECE, difcil encontrar-se um nome. O nome de papel no exclusividade do tipo de relacionamento onde os tipos de entidades participantes so distintos. Em alguns casos, um mesmo tipo de entidade participa mais que uma vez em um tipo de relacionamento com diferentes papis. Nesses casos, essencial identificar os nomes dos papis a fim de distinguir o significado de cada participao. Tais tipos de relacionamentos so chamados recursivos. Para ilustrar, considere a Figura 4.7:
SUPERVISIONA EMPREGADO 1 e
1 2 3
r r
2 2
e e e
4
1 1 r
28
o papel de supervisor e os marcados com "2" representam o papel de supervisionado. Assim, e1 supervisiona e2, e2 supervisiona e3 e e3 supervisiona e4. Restries sobre Tipos de Relacionamentos: Os tipos de relacionamento possuem certas restries que limitam as combinaes possveis de entidades participando nas instncias de relacionamento. Estas restries so determinadas pelas situaes do mini-mundo que os relacionamentos representam. Por exemplo, na Figura 4.5, se existir uma regra que um empregado trabalha para apenas um departamento, ento esta restrio deve ser descrita no esquema. Pode-se distinguir dois principais tipos de restries de relacionamento que ocorrem com relativa freqncia: razo de cardinalidade e participao. A restrio razo de cardinalidade especifica a quantidade de instncias de relacionamento que uma entidade pode participar. No tipo de relacionamento binrio TRABALHA-PARA, DEPARTAMENTO:EMPREGADO tem razo de cardinalidade 1:N. Isto significa que cada entidade departamento pode estar relacionada a inmeras entidades empregado (muitos empregados podem trabalhar para um departamento) mas uma entidade empregado pode estar relacionada a apenas um departamento (um empregado pode trabalhar apenas para um departamento). As razes de cardinalidade mais comuns para tipos de relacionamento binrio so 1:1, 1:N e M:N. Um exemplo de um tipo de relacionamento binrio 1:1 pode ser observado na Figura 4.8, entre DEPARTAMENTO e EMPREGADO GERENCIA, que relaciona uma entidade departamento com o empregado que gerencia esse departamento. Este relacionamento 1:1 pois sabe-se que um empregado pode gerenciar apenas um departamento e que um departamento pode ter apenas um gerente.
e
1 2 3 4 5 6 7
e e e e e e
r r r
d d d
29
PROJETO r
e
1 2 3 4
e e e
r r r r r
p 1 p 2 p 3
p 4
5
30
exemplo o caso de representar a data em que um gerente comeou a gerenciar um departamento atravs de um atributo DataIncio para o tipo de relacionamento GERENCIA (Figura 4.8). Note-se que atributos de tipos de relacionamento 1:1 ou 1:N podem ser includos como atributos de um dos tipos de entidades participantes. Por exemplo, o atributo DataIncio para o tipo de relacionamento GERENCIA pode ser um atributo tanto de EMPREGADO quanto de DEPARTAMENTO; embora, conceitualmente, ele pertena ao relacionamento GERENCIA. Isso ocorre porque GERENCIA um relacionamento 1:1. Assim, toda entidade departamento ou empregado participam em apenas uma instncia de relacionamento e, dessa forma, o valor do atributo DataIncio pode ser representado em uma das entidades participantes. Para um tipo de relacionamento 1:N, um atributo de relacionamento pode somente ser colocado no tipo de entidade que est do lado N do relacionamento. Por exemplo, na Figura 4.5, se o relacionamento TRABALHA-PARA tiver um atributo DataIncio indicando quando um empregado comeou a trabalhar para um departamento, este atributo pode ser colocado como atributo de EMPREGADO. Isto acontece porque o relacionamento 1:N, tal que cada entidade empregado participa apenas uma nica vez em uma instncia de TRABALHA-PARA. Em ambos os tipos de relacionamento 1:1 e 1:N, a deciso de onde colocar um atributo de relacionamento determinada subjetivamente pelo projetista de esquemas. Se o valor de um atributo determinado pela combinao das entidades participantes em uma instncia de relacionamento, e no apenas por uma das entidades, ento o atributo deve ser especificado como um atributo de relacionamento. Esta condio aplica-se a atributos de tipos de relacionamentos M:N, porque as entidades dos tipos de entidades participantes podem participar em inmeras instncias de relacionamento. Um exemplo disso o atributo Horas do relacionamento M:N TRABALHA-EM (Figura 4.9). O nmero de horas que um empregado trabalha em um projeto determinado pela combinao empregado-projeto e no separadamente.
31
Um tipo de entidade-fraca tem uma chave-parcial, que um conjunto de atributos que pode univocamente identificar entidades-fracas relacionadas mesma entidade proprietria. No exemplo, assume-se que nenhum dependente de um mesmo empregado ter o mesmo nome, ento o atributo Nome de DEPENDENTE ser a chave-parcial. Um tipo de entidade-fraca pode, algumas vezes, ser representado como atributo composto e multivalorado. No exemplo, pode-se especificar um atributo composto e multivalorado denominado Dependente para EMPREGADO, onde os atributos componentes so Nome, DataNasc, Sexo e Relao, substituindo-se assim, o tipo de entidade-fraca DEPENDENTE. A escolha de qual representao usar determinada pelo projetista da base de dados. Um critrio usado para se adotar a representao de tipo de entidade-fraca quando o tipo de entidade-fraca tem muitos atributos ou participa, independentemente, em outros tipos de relacionamentos alm do tipo de relacionamento que o identifica.
4.4
A Figura 4.10 ilustra um DER para o esquema da base de dados COMPANHIA. Os tipos de entidades tais como EMPREGADO, DEPARTAMENTO e PROJETO so mostrados em retngulos. Tipos de relacionamentos tais como TRABALHA-PARA, GERENCIA, CONTROLA e TRABALHA-EM so mostrados em losngulos interligados a tipos de entidades participantes. Atributos so mostrados em elipses conectadas a tipos de entidades ou relacionamentos. Os componentes de um atributo composto so tambm representados em elipses, porm conectadas ao atributo ao qual eles pertencem (atributo Nome de EMPREGADO). Atributos multivalorados so denotados em elipses com linhas duplas (atributo Localizao de DEPARTAMENTO). Os atributos-chaves so sublinhados. Atributos derivados em elipses com linhas tracejadas (atributo NumeroDeEmpregados de DEPARTAMENTO).
32
Os tipos de entidades-fracas so distinguidos por retngulos com linhas duplas e os relacionamentos de identificao por losngulos com linhas duplas (tipo de entidade-fraca DEPENDENTE e tipo de relacionamento de identificao DEPENDENTE-DE). A chave-parcial de um tipo de entidade-fraca sublinhada com linha tracejada.
Nmero Pnome Mnome Snome Nome Nome Nss Endereo Sexo Salrio
N 1
Localizao
TRABALHA-PARA
EMPREGADO DataNasc
DataIncio
NmeroDeEmpregados
DEPARTAMENTO
1 supervisor supervisiona
GERENCIA
CONTROLA
SUPERVISIONA
Horas
N M 1 N
TRABALHA-EM
PROJETO
DEPENDENTE-DE
DEPENDENTE
Nome
Sexo
DataNasc
Relao
33
Localizao
TRABALHA-PARA
(4,n)
Sexo
Salrio
EMPREGADO DataNasc
supervisor (0,n) supervisiona (0,1)
DataIncio
(0,1)
NmeroDeEmpregados
(1,1)
DEPARTAMENTO
(0,n)
GERENCIA CONTROLA
(1,n)
SUPERVISIONA
(0,n)
Horas
(1,1)
(1,n)
TRABALHA-EM
PROJETO
DEPENDENTE-DE
(1,1)
DEPENDENTE
Nome
Sexo
DataNasc
Relao
4.5
Na Seo 4.3.3 definiu-se grau de um tipo de relacionamento como o nmero de tipos de entidades participantes e chamou-se o tipo de relacionamento de grau dois de binrio e de grau trs de ternrio. A notao do DER para um tipo de relacionamento ternrio mostrada na Figura 4.13(a), que mostra o esquema para o tipo de relacionamento FORNECE que foi mostrado no nvel de extenso na Figura 4.6. Em geral, um tipo de relacionamento R de grau n ir ter n arestas no DER, cada um conectando R para cada tipo de entidade participante. A Figura 4.13(b) mostra um DER para os tipos de relacionamento binrio PODE-FORNECER, USA E FORNECE-ALGO. Como visto na Seo 4.3.3, estes trs tipos de relacionamento binrio no so equivalentes ao tipo de relacionamento ternrio FORNECE. freqentemente difcil decidir se um determinado relacionamento deve ser representado como um tipo de relacionamento de grau n ou dividido em muitos tipos de relacionamentos de menor grau. O projetista da base de dados deve guiar-se pela semntica, ou pelo significado da situao particular que estiver representando, para decidir qual alternativa adotar. Um outro exemplo mostrado na Figura 4.13(c). O tipo de relacionamento ternrio FORNECE representa a informao sobre os instrutores que oferecem cursos em um dado semestre. Assim, ele possui uma instncia de relacionamento (i, s, c) onde o instrutor i oferece o curso c
34
durante o semestre s. Os trs tipos de relacionamento binrios mostrados na Figura 4.13(c) tm os seguintes significados: a. PODE-DAR: relaciona os instrutores que podem dar um dado curso. b. D: relaciona os instrutores que do algum curso num dado semestre. c. OFERECIDO: relaciona os cursos oferecidos num dado semestre por algum professor. Em geral, os relacionamentos binrios e ternrios representam informaes diferentes, mas certas restries podem ser feitas entre estes relacionamentos. Por exemplo, uma instncia de relacionamento (i, s, c) somente ir existir em OFERECE se a instncia (i, s) em D, a instncia (s, c) em OFERECIDO e a instncia (i, c) em PODE-DAR existirem. No entanto, o inverso no sempre verdade; pode ser que existam instncias (i, s), (s, c) e (i, c) nos trs tipos de relacionamentos binrios e, mesmo assim, no existir nenhuma instncia (i, s, c) em OFERECE. Sobre certas restries adicionais (i, s, c) pode existir, por exemplo, se o tipo de relacionamento PODE-DAR for 1:1, ou seja, se um instrutor somente puder dar aulas em apenas um curso e um curso puder ter apenas um instrutor. O projetista da base de dados deve analisar cada situao especfica para decidir qual tipo de relacionamento binrio e ternrio ir necessitar.
Nome Quantidade Nome
FORNECEDOR Nmero
FORNECE
PROJETO
(a)
PEA
Nome
M
FORNECE-ALGO
Nome
FORNECEDOR Nmero N
PODE-FORNECER
PROJETO
(b)
M N PEA USA
Semestre M D N
Ano
Nome
Sem-Ano
FORNECE
SEMESTRE
(c)
M N CURSO OFERECIDO
35
Note-se que possvel ter um tipo de entidade-fraca com um tipo de relacionamento de identificao ternrio (ou n-rio). Neste caso, o tipo de entidade-fraca pode ter muitos tipos de entidades proprietrias da identificao. Um exemplo mostrado na Figura 4.14. As razes de cardinalidade tambm so aplicveis em tipos de relacionamentos n-rios.
Nome
Quantidade
Nome
CANDIDATO
REALIZA
COMPANHIA
Departamento
Dept/Data
RESULTA
36
Smbolo
Significado
Tipo de Entidade Tipo de Entidade-Fraca Tipo de Relacionamento Tipo de Relacionamento Identificador Atributo Atributo-Chave Atributo Multivalorado
....
Atributo Composto
E1
1
R
N
E2
E1
R
(min, max)
E2
37
4.6
1. Discuta o papel de um modelo de dados de alto-nvel no processo de projeto de base de dados. 2. Cite alguns casos onde o valor null pode ser aplicado. 3. Defina os seguintes termos: entidade, atributo, valor de atributo, instncia de relacionamento, atributo composto, atributo multivalorado, atributo derivado e atributochave. 4. O que um tipo de entidade? Descreva as diferenas entre entidade e tipo de entidade. 5. O que um tipo de relacionamento? Descreva as diferenas entre instncia e tipo de relacionamento. 6. Quando necessrio utilizar nome de papis na descrio de tipos de relacionamentos? 7. Descreva as duas alternativas para especificar as restries estruturais sobre tipos de relacionamentos. Quais so as vantagens e desvantagens de cada uma? 8. Sobre quais condies pode um atributo de um tipo de relacionamento binrio ser promovido a um atributo de um dos tipos de entidades participantes? 9. Sobre quais condies um tipo de relacionamento pode se tornar um atributo de um tipo de entidade? 10. Qual o significado de um tipo de relacionamento recursivo? D alguns exemplos disso. 11. Quando o conceito de entidade-fraca til na modelagem de dados? Defina os termos: tipo de entidade proprietrio, tipo de relacionamento de identificao e chave-parcial. 12. Um tipo de relacionamento de identificao pode ter grau maior que dois? 13. Discuta as condies em que um tipo de relacionamento ternrio pode ser representado por um nmero de tipos de relacionamentos binrios.
38
5.1
O modelo de dados relacional representa os dados da base de dados como uma coleo de relaes. Informalmente, cada relao pode ser entendida como uma tabela ou um simples arquivo de registros. Por exemplo, a base de dados de arquivos representada pela Figura 5.1, considerada estando no modelo relacional. Porm, existem diferenas importantes entre relaes e arquivos.
ESTUDANTE
Nmero 17 8
CURSO
Nome Introd. Cincias de Comp. Estrutura de Dados Matemtica Discreta Base de Dados Nmero DCC3380 DCC3380 DCC3320 Curso MAT2410 DCC1310 DCC3320 MAT2410 DCC1310 DCC3380
PR-REQUISITO
Pr-requisito DCC3320 MAT2410 DCC1310 Semestre 1 1 2 1 1 1 Ano 86 86 87 87 87 87 Professor Kotaro Alberto Kleber Carlos Alberto Souza Nvel B C A A B A
SEO
HISTRICO
NmeroEstudante 17 17 8 8 8 8
39
exemplo, na Figura 5.1 anterior, a primeira tabela chamada ESTUDANTE porque cada linha representa o fato sobre uma particular entidade estudante. Os nomes das colunas - Nome, Nmero, Classe, Departamento - especificam como interpretar os valores em cada linha, baseando-se nas colunas em que cada um se encontra. Todos os valores de uma mesma coluna so, normalmente, do mesmo tipo. Na terminologia de base de dados relacional, a linha chamada de tupla, a coluna chamada de atributo e a tabela de relao. O tipo de dado que especifica o tipo dos valores que podem aparecer em uma coluna chamado de domnio. Uma relao esquema R, denotada por R(A1, A2, ..., An), um conjunto de atributos R={A1, A2, ..., An}. Cada atributo Ai indica o nome do papel de algum domnio D na relao esquema R. D chamado domnio de Ai e denotado por dom(Ai). Uma relao esquema utilizada para descrever uma relao e R o nome dessa relao. O grau de uma relao o nmero de atributos da relao. Considere o exemplo de uma relao esquema de grau 7, que descreve estudantes universitrios: ESTUDANTE(Nome, NSS, Telefone, Endereo, TelComercial, Anos, MPA) Nesta relao esquema, ESTUDANTE o nome da relao esquema, que tem 7 atributos. Pode-se especificar alguns domnios para atributos da relao ESTUDANTE: dom(Nome)=Nomes dom(NSS)=Nmero do seguro social dom(Telefone)=Nmero de telefone nacional dom(TelComercial)=Nmero de telefone nacional dom(MPA)=Mdia dos Pontos Acumulados Uma relao r (ou instncia de relao) da relao esquema R(A1, A2, ..., An), tambm denotada por r(R), um conjunto de tuplas r={ t1, t2, ..., tm}. Cada tupla t uma lista ordenada
de n valores t=<v1, v2, ..., vn>, onde cada valor vi, 1 i n, um elemento do dom(Ai) ou um valor especial null. So utilizados, com freqncia, os termos inteno da relao para o esquema R e extenso da relao para a instncia r(R).
Atributos
ESTUDANTE
tuplas
Anos 19 18 25 28 19
40
Uma relao esquema R de grau n representada como R(A1, A2, ..., An). Uma tupla t em uma relao r(R) representada como t=<v1, v2, ..., vn>, onde vi o valor correspondente para atributos Ai. Sero utilizadas as seguintes notaes para se referir aos valores dos componentes de tuplas: t[Ai] indica o valor de vi em t para o atributo Ai. t[Au, Aw, ..., Az] onde Au, Aw, ..., Az uma lista de atributos de R, indica o conjunto de valores <vu, vw, ..., vz> de t correspondentes aos atributos especificados na lista. As letras Q, R e S denotam nomes de relao. As letras q, r e s denotam instncias de relao. As letras t, u e v denotam tuplas. Em geral, o nome de uma relao tal como ESTUDANTE indica o conjunto atual de tuplas na relao - instncia corrente da relao - e ESTUDANTE(Nome, NSS, ...) refere-se relao esquema. Os nomes de atributos so algumas vezes qualificados com o nome da relao a qual pertencem, por exemplo, ESTUDANTE.Nome ou ESTUDANTE.Anos.
Considere uma tupla t=<'Barbara', '533', '555-999', 'Av. f, 54', null, 19, 3.25> da relao ESTUDANTE da Figura 5.2; t[Nome]=<'Barbara'> e t[NSS, MPA, Anos]=<'533', 3.25, 19>.
41
Em geral, uma relao esquema pode ter mais que uma chave. Nestes casos, cada chave chamada chave-candidata. Por exemplo, o esquema da relao ESTUDANTE poderia ter um atributo adicional Cdigo, para indicar o cdigo interno de estudantes na escola. Assim, o esquema teria duas chaves candidatas: NSS e Cdigo. comum designar uma das chaves candidatas como a chave-primria da relao. A indicao no modelo de qual chavecandidata a chave-primria realizada sublinhado-se os atributos que formam a chavecandidata escolhida. Quando uma relao esquema tem muitas chaves-candidatas, a escolha da chave-primria arbitrria; no entanto, sempre melhor escolher a chave-primria com o menor nmero de atributos.
EMPREGADO
PNOME MNOME SNOME NSS DATANASC ENDEREO SEXO SALARIO NSSSUPER NDEP
DEPARTAMENTO
DNOME DNMERO NSSGER DATINICGER
LOCAIS_DEPTO
DNMERO DLOCALIZAO
PROJETO
PNOME PNMERO PLOCALIZAO DNUM
TRABALHA_EM
NSSEMP PNRO HORAS
DEPENDENTE
NSSEMP NOMEDEPENDENTE SEXO DATANIV RELAO
42
A restrio de integridade de entidade estabelece que nenhum valor da chave-primria pode ser nulo. Isso porque, o valor de uma chave-primria utilizado para identificar tuplas em uma relao. Por exemplo, se duas ou mais tuplas tiverem o valor null para a chaveprimria, no haver como diferenciar uma tupla da outra. As restries de chave e de integridade de entidade aplicam-se apenas a relaes individuais. A restrio de integridade referencial uma restrio que especificada entre duas relaes e usada para manter a consistncia entre tuplas de duas relaes. Informalmente, a restrio de integridade referencial estabelece que uma tupla de uma relao que se refere outra relao deve se referir a uma tupla existente naquela relao. Por exemplo, na Figura 5.4, o atributo NDEP de EMPREGADO indica o nmero do departamento que cada empregado trabalha. Assim, todos os valores de NDEP nas tuplas da relao EMPREGADO devem pertencer ao conjunto de valores do atributo DNMERO da relao DEPARTAMENTO.
EMPREGADO PNOME MNOME John B Franklin T Alicia J Jennifer S Ramesh K Joyce A Ahmad V James E SNOME Smith Wong Zelaya Wallace Narayan English Jabbar Borg NSS 123456789 333445555 999887777 987654321 666884444 453453453 987987987 888665555 DATANASC 09-JAN-55 08-DEZ-45 19-JUL-58 20-JUN-31 15-SET-52 31-JUL-62 29-MAR-59 10-NOV-27 ENDEREO R. A, 1 R. B, 2 Av. C, 3 Trav. D, 4 R. E, 5 R. F, 6 Av G, 7 Av H, 8 SEXO M M F F M F M M SALARIO 3000 4000 2500 4300 3800 2500 2500 5500 NSSSUPER 333445555 888665555 987654321 888665555 333445555 333445555 987654321 null NDEP 5 5 4 4 5 5 4 1
DEPARTAMENTO DNOME DNMERO Pesquisa 5 Administrativo 4 Gerencial 1 LOCAIS_DEPTO DNMERO 1 4 5 5 5 PROJETO PNOME ProdutoX ProdutoY ProdutoZ Automao Reorganizao Beneficiamento
PNMERO 1 2 3 10 20 30
DNUM 5 5 5 4 1 4
TRABALHA_EM NSSEMP PNRO 123456789 1 123456789 2 666884444 3 453453453 1 453453453 2 333445555 2 333445555 3 333445555 10 333445555 20 999887777 30 999887777 10 987987987 10 987987987 30 987654321 30 987654321 20 DEPENDENTE NSSEMP 333445555 333445555 333445555 987654321 123456789 123456789 123456789
HORAS 32.5 7.5 40.0 20.0 20.0 10.0 10.0 10.0 10.0 30.0 10.0 35.0 5.0 20.0 Null
SEXO F M F M M F F
43
Para definir formalmente a restrio de integridade referencial, h a necessidade de antes definir o conceito de chave-estrangeira (CE). As condies para uma chave-estrangeira, descritas abaixo, especificam uma restrio de integridade referencial entre duas relaes esquemas R1 e R2. Um conjunto de atributos CE na relao esquema R1 ser uma chaveestrangeira de R1 se ele satisfizer as seguintes regras: 1. Os atributos em CE tm o mesmo domnio dos atributos da chave-primria CP da outra relao esquema R2. Diz-se que os atributos CE referenciam ou referem-se relao R2. 2. Uma CE na tupla t1 ou tem um valor que ocorre como CP de alguma tupla t2 de R2 ou tem o valor null. No primeiro caso, tem-se t1[CE]=t2[CP], e diz-se que t1 referencia ou refere-se tupla t2. Uma base de dados tem muitas relaes, e usualmente possuem muitas restries de integridade referencial. Para especificar estas restries, o projetista deve ter um claro entendimento do significado ou papel que os atributos desempenham nas diversas relaes esquemas da base de dados. Normalmente, as restries de integridade referencial so derivadas dos relacionamentos entre entidades representadas pelas relaes esquemas. Por exemplo, considere a base de dados mostrada na 5.4. Na relao EMPREGADO, o atributo NDEP refere-se ao departamento em que cada empregado trabalha; desse modo, designa-se NDEP como a chave-estrangeira de EMPREGADO referenciando a relao DEPARTAMENTO. Isso significa que um valor de NDEP em alguma tupla t1 da relao EMPREGADO deve ter um valor correspondente para a chave-primria da relao DEPARTAMENTO - o atributo DNMERO - em alguma tupla t2 da relao DEPARTAMENTO ou o valor de NDEP pode ser null se o empregado no pertencer a nenhum departamento. Na Figura 5.4, a tupla do empregado "John Smith" referencia a tupla departamento de "Pesquisa", indicando que "John Smith" trabalha para este departamento. Note-se que uma chave-estrangeira pode referenciar sua prpria relao. Por exemplo, o atributo NSSSUPER em EMPREGADO refere-se ao supervisor de um empregado; isto , um outro empregado. Pode-se, diagramaticamente, mostrar as restries de integridade desenhando-se arcos direcionados partindo da chave-estrangeira para a relao referenciada. A Figura 5.5 ilustra o esquema apresentado na Figura 5.3 com as restries de integridade referencial anotadas desta maneira.
EMPREGADO
PNOME MNOME SNOME NSS DATANASC ENDEREO SEXO SALARIO NSSSUPER NDEP
DEPARTAMENTO
DNOME DNMERO NSSGER DATINICGER
LOCAIS_DEPTO
DNMERO DLOCALIZAO
PROJETO
PNOME PNMERO PLOCALIZAO DNUM
TRABALHA_EM
NSSEMP PNRO HORAS
DEPENDENTE
NSSEMP NOMEDEPENDENTE SEXO DATANIV RELAO
44
Todas as restries de integridade deveriam ser especificadas no esquema da base de dados relacional se o projetista tiver interesse em manter essas restries vlidas para toda a base de dados. Assim, em um sistema relacional, a linguagem de definio de dados (DDL) deveria fornecer recursos para especificar os vrios tipos de restries tal que o SGDB possa verificlas automaticamente. Muitos sistemas de gerenciamento de base de dados relacionais permitem restries de chave e de integridade de entidade mas, infelizmente, alguns no permitem a integridade referencial. Alm dos tipos de restries descritas acima, existem outras mais gerais, algumas vezes chamadas de restries de integridade semnticas, que podem ser especificadas e verificadas numa base de dados relacional. Exemplos de tais restries so "o salrio de um empregado no deve ultrapassar o salrio de seu supervisor" e "o nmero mximo de horas por semana que um empregado pode trabalhar num projeto 56". Tais restries no so verificadas por SGBD relacionais atualmente encontrados no mercado.
45
EMPREGADO
PNOME MNOME SNOME NSS cp DATANASC ENDEREO SEXO SALARIO ce NSSSUPER ce DNUM
DEPARTAMENTO
DNOME DNMERO cp ce NSSGER * DATINICGER
LOCAIS_DEPTO
Ce DNMERO DLOCALIZAO \________________________/ Cp
PROJETO
PNOME PNMERO cp PLOCALIZAO ce DNUM
TRABALHA_EM
Ce ce PNRO NSSEMP \_______________/ Cp HORAS*
DEPENDENTE
Ce NOMEDEPENDENTE NSSEMP \___________________________/ Cp SEXO DATANIV RELAO
46
Passo 1: Para cada entidade regular E no DER, criar uma relao R que inclua todos os atributos simples de E. Para um atributo composto, inclua apenas os atributos simples que compem o atributo composto. Escolha um dos atributos-chave de E como sendo a chave-primria de R. Se a chave escolhida de E for composta, ento o conjunto de atributos simples que o compem iro formar a chave-primria de R. No exemplo, foram criadas as relaes EMPREGADO, DEPARTAMENTO e PROJETO correspondentes s entidades regulares EMPREGADO, DEPARTAMENTO e PROJETO presentes no DER. Os atributos indicados com ce (chave-estrangeira) ou * (atributos de relacionamento) no foram includos ainda; eles sero adicionados durante os passos subseqentes. Foram escolhidas as chavesprimrias NSS, DNMERO e PNMERO para as relaes EMPREGADO, DEPARTAMENTO e PROJETO respectivamente. Passo 2: Para cada tipo de entidade fraca W do DER com o tipo de entidade de identificao E, criar uma relao R e incluir todos os atributos simples (ou os componentes simples de atributos compostos) de W como atributos de R. Alm disso, incluir como a chave-estrangeira de R a chave-primria da relao que corresponde ao tipo de entidade de identificao; isto resolve o problema do tipo do relacionamento de identificao de W. A chave-primria de R a combinao da chave-primria do tipo de entidade de identificao e a chave-parcial do tipo de entidade fraca W. No exemplo, foi criada a relao DEPENDENTE correspondente ao tipo de entidade fraca DEPENDENTE do DER. Foi includa a chave-primria da relao EMPREGADO - que corresponde ao tipo de entidade de identificao - como um atributo de DEPENDENTE; foi renomeado o atributo NSS para NSSEMP, embora no seja necessrio. A chave-primria da relao DEPENDENTE a combinao {NSSEMP, NOMEDEPENDENTE} porque NOMEDEPENDENTE chave-parcial de DEPENDENTE. Passo 3: Para cada tipo de relacionamento binrio 1:1 R do DER, criar as relaes S e T que correspondem aos tipos de entidade participantes em R. Escolher uma das relaes, por exemplo S, que inclua como chave-estrangeira de S a chave-primria de T. melhor escolher o tipo de entidade com participao total em R como a relao S. Inclua todos os atributos simples (ou os componentes simples de atributos compostos) do tipo de relacionamento 1:1 R como atributos de S. No exemplo, foi mapeado o tipo de relacionamento 1:1 GERENCIA da Figura 4.10, escolhendo o tipo de entidade participante DEPARTAMENTO para fazer o papel de S porque sua participao no tipo de relacionamento GERENCIA total (todo departamento tem um gerente). Foi includa a chave-primria da relao EMPREGADO como a chave-estrangeira na relao DEPARTAMENTO que foi chamado de NSSGER . Tambm foi includo o atributo simples DataIncio do tipo de relacionamento GERENCIA na relao DEPARTAMENTO e foi renomeado como DATINICGER. Note-se que, uma alternativa para o mapeamento de um tipo de relacionamento 1:1 seria unir os dois tipos de entidades e o tipo de relacionamento numa nica relao. Isto particularmente apropriado quando ambas as participaes so total e quando os tipos de entidade no participam em quaisquer outros tipos de relacionamentos. Passo 4: Para cada tipo de relacionamento binrio regular 1:N (no fraca) R, identificar a relao S que representa o tipo de entidade que participa do lado N do tipo de relacionamento. Inclua como chave-estrangeira de S a chave-primria da relao T que representa o outro tipo de entidade que participa em R; isto porque cada instncia da entidade do lado 1 est relacionada a mais de uma instncia de entidade no lado N do tipo de relacionamento. Por exemplo, no tipo de relacionamento 1:N TRABALHA-PARA cada empregado est relacionado a um nico departamento. Inclua tambm quaisquer atributos simples (ou componentes simples de atributos compostos) do tipo de relacionamento 1:N como atributos de S.
47
No exemplo, foram mapeados os tipos de relacionamentos 1:N TRABALHA-PARA e SUPERVISIONA. Para TRABALHA-PARA incluiu-se a chave-primria da relao DEPARTAMENTO como a chave-estrangeira na relao EMPREGADO e foi chamado DNUM. Para SUPERVISIONA incluiu-se a chave-primria da relao EMPREGADO como a chave-estrangeira na relao EMPREGADO e foi denominado NSSSUPER. O relacionamento CONTROLA mapeado da mesma maneira. Passo 5: Para cada tipo de relacionamento binrio M:N R, criar uma nova relao S para representar R. Incluir como chave-estrangeira em S as chaves-primrias das relaes que representam os tipos de entidade participantes; sua combinao ir formar a chave-primria de S. Inclua tambm qualquer atributo simples do tipo de relacionamento M:N (ou componentes simples dos atributos compostos) como atributos de S. Note-se que no se pode representar um tipo de relacionamento M:N como uma simples chave-estrangeira em uma das relaes participantes - como foi feito para os tipos de relacionamentos 1:1 e 1:N - por causa da razo de cardinalidade M:N. Relacionamentos M:N sempre derivam uma nova relao, para o tipo relacionamento. No exemplo foi mapeado o tipo de relacionamento M:N TRABALHA-EM criando-se a relao TRABALHA_EM na Figura 4.6. Incluiu-se as chaves-primrias das relaes PROJETO e EMPREGADO como chaves-estrangeiras em TRABALHA_EM e foi renomeado NSS para NSSEMP e Nmero para PNRO respectivamente. Tambm foi includo um atributo HORAS para representar o atributo Horas do tipo de relacionamento. A chave-primria da relao TRABALHA_EM a combinao das chaves-estrangeiras {NSSEMP, PNRO}. Note-se que sempre possvel mapear relacionamentos 1:1 ou 1:N da mesma maneira que os relacionamentos M:N. Esta alternativa pode ser adotada desde que existam poucas instncias de relacionamento a fim de evitar valores null em chavesestrangeiras, ou em casos em que cardinalidade ir ser futuramente modificada de 1:1 ou 1:N para M:N. Passo 6: Para cada atributo A multivalorado, criar uma nova relao R que inclua um atributo correspondendo a A e a chave-primria K da relao que representa o tipo de entidade ou o tipo de relacionamento que tem A como atributo. A chave-primria de R a combinao de A e K. Se o atributo multivalorado composto inclua os atributos simples que o compem. No exemplo foi criada a relao LOCAIS_DEPTO. O atributo DLOCALIZAO representa o atributo multivalorado Localizao de DEPARTAMENTO, enquanto DNMERO - como chave-estrangeira - representa a chave-primria da relao DEPARTAMENTO. A chave-primria de LOCAIS_DEPTO a combinao de {DNMERO, DLOCALIZAO}. Uma tupla ir existir em LOCAIS_DEPTO para cada localizao que um departamento tiver. A Figura 6.1 mostra o esquema da base de dados relacional obtida aplicando-se os passos acima, e a Figura 5.4 mostra uma instncia deste esquema. Observa-se que no foi discutido o mapeamento de tipos de relacionamento n-rio (n > 2) porque no existem na Figura 4.10. Estes tipos de relacionamentos podem ser mapeados da mesma forma que os tipos de relacionamentos M:N, apenas observando o seguinte passo adicional no procedimento de mapeamento. Passo 7: Para cada tipo de relacionamento n-rio R, n>2, criar uma nova relao S para representar R. Inclua como chave-estrangeira em S as chaves-primrias das relaes que representam os tipos de entidades participantes. Incluindo-se tambm qualquer atributo simples do tipo de relacionamento n-rio (ou componentes simples dos atributos compostos) como atributo de S. A chave-primria de S normalmente uma combinao de todas as chaves-estrangeiras e referencia as relaes que representam os tipos de entidades participantes. Porm, se a restrio de
48
participao (min, max) de um dos tipos de entidades E que participa em R tiver max=1, ento a chave-primria de S pode ser a chave-estrangeira que referencia a relao E' correspondente a E; isto porque cada entidade e em E ir participar em apenas uma instncia de R e, portanto, pode identificar univocamente esta instncia de relacionamento. Por exemplo, considere o tipo de relacionamento da Figura 4.13a. Este relacionamento triplo pode ser mapeado para a relao FORNECE mostrada na Figura 6.2, onde a chave-primria a combinao das chaves-estrangeiras {FNOME, PNOME, NMERO}.
FORNECEDOR
FNOME
...
PROJETO
PNOME
...
PEA
NMERO
...
FORNECE
FNOME PNOME NMERO
QUANTIDADE
49
As discusses anteriores sobre o modelo relacional contemplaram apenas os aspectos estruturais. Agora, a ateno ser voltada para a lgebra relacional, que uma coleo de operaes utilizadas para manipular relaes. Essas operaes so usadas para selecionar tuplas de uma determinada relao ou para combinar tuplas relacionadas a diversas relaes com o propsito de especificar uma consulta - uma requisio de recuperao - sobre a base de dados. As operaes da lgebra relacional so normalmente divididas em dois grupos. O primeiro deles inclui um conjunto de operaes da teoria de conjuntos. As operaes so UNION, INTERSECTION, DIFFERENCE e CARTESIAN PRODUCT. O segundo grupo consiste de operaes desenvolvidas especificamente para bases de dados relacionais, tais como: SELECT, PROJECT e JOIN entre outras.
50
com salrio superior a R$2.500,00 ou trabalham no departamento 5 e ganham mais que R$3.000,00. Neste caso, pode-se especificar a consulta da seguinte forma:
(NDEP = 4 AND SALRIO > 2500) OR (NDEP = 5 AND SALRIO > 3000) (EMPREGADO)
O resultado mostrado na Figura 7.1a.
(a) PNOME Franklin Jennifer Ramesh MNOME T S K SNOME Wong Wallace Narayan NSS 333445555 987654321 666884444 DATANASC 08-DEZ-45 20-JUN-31 15-SET-52 ENDEREO R. B, 2 Trav. D, 4 R. E, 5 SEXO M F M SALARIO 4000 4300 3800 NSSSUPER 888665555 888665555 333445555 NDEP 5 4 5
(b)
(c)
SEXO M M F F M M M
<cond1> ( <cond2> (...( <condn> (R))...))= <cond1> AND <cond2> AND ... AND <condn>(R)
<lista de atributos>
(<nome da relao>)
51
onde o smbolo usado para representar o operador PROJECT e <lista de atributos> uma lista de atributos da relao especificada por <nome da relao>. A relao resultante tem apenas os atributos especificados em <lista de atributos> e estes atributos aparecem na mesma ordem em que foram especificados. Assim, o grau igual ao nmero de atributos em <lista de atributos>. Convm salientar que, caso a lista de atributos no contenha atributos chaves, ento provvel que tuplas duplicadas apaream no resultado. A operao PROJECT remove implicitamente quaisquer tuplas duplicadas, tal que o resultado da operao PROJECT seja um conjunto de tuplas e assim, uma relao vlida. Por exemplo, considere a seguinte operao:
(DEP5_EMPS)
52
(a)
DEP5_EMPS (b)
MNOME B T K A
ENDEREO R. A, 1 R. B, 2 R. E, 5 R. F, 6
SEXO M M M F
NDEP 5 5 5 5
RESULT PRIMEIRO_NOME John Franklin Ramesh Joyce SOBRENOME Smith Wong Narayan English SALRIO 3000 4000 3800 2500
Figura 7.2 Exemplo de execuo de uma expresso da lgebra Relacional 7.1.3 Renomeando Atributos
Normalmente, mais simples dividir uma seqncia de operaes especificando as relaes intermedirias ao invs de escrever uma nica expresso da lgebra relacional. Pode-se, tambm, utilizar a tcnica de renomear atributos nas relaes intermedirias. Para renomear atributos de uma relao, que resultou da aplicao de uma operao da lgebra relacional, basta listar os nomes dos atributos entre parnteses: DEP5_EMPS
NDEP=5 (EMPREGADO) PNOME, SNOME, SALRIO
(DEP5_EMPS)
(DEP5_EMPS)
NSSSUPER
RESULT2(NSS)
(DEP5_EMPS)
RESULTRESULT1 RESULT2 A relao RESULT1 contm o nmero do seguro social de todos os empregados que trabalham no departamento 5. RESULT2 contm o nmero do seguro social de todos os empregados que diretamente supervisionam empregados que trabalham no departamento 5. A
53
operao UNION gera uma relao que contm tanto as tuplas de RESULT1 quanto de RESULT2. A Figura 7.3 ilustra este exemplo.
RESULT1 NSS 123456789 333445555 666884444 453453453 RESULT2 NSS 333445555 888665555 RESULT NSS 123456789 333445555 666884444 453453453 888665555
R S = S R, e R S = S R.
Estas operaes podem ser aplicadas a qualquer nmero de relaes, e ambas so associativas: R (S T) = (R S) T, e R (S T) = (R S) T.
A operao DIFFERENCE no comutativa: R - S S - R. A operao CARTESIAN PRODUCT, denotada por , tambm uma operao de conjunto binria, mas as relaes sobre as quais so aplicadas no necessitam ser unio compatvel. Esta operao usada para combinar tuplas de duas relaes tal que tuplas relacionadas possam ser identificadas. Em geral, o resultado de R(A1, A2, ..., An) S(B1, B2, ..., Bm) a relao Q com n + m atributos Q(A1, A2, ..., An, B1, B2, ..., Bm) nesta ordem. A relao resultante Q tem uma tupla para cada
combinao de tuplas. Assim, se R tem nR tuplas e S tem nS tuplas, ento RS ter nR*nS tuplas. Para ilustrar, considere que se deseja recuperar para cada empregado do sexo feminino uma lista de nomes de seus dependentes; isso pode ser feito da seguinte forma:
54
RESULTPNOME, SNOME, NOMEDEPENDENTE(DEP_ATUAL) As tuplas geradas a partir da seqncia de operaes acima so mostradas na Figura 7.4. A relao EMP_DEP o resultado da operao CARTESIAN PRODUCT entre EMP_NOMES da Figura 7.4, e DEPENDENTE da Figura 5.4. Em EMP_DEP, cada tupla de EMP_NOMES combinada com todas as tuplas de DEPENDENTE, gerando um resultado que no tem muito significado. Deseja-se apenas combinar tuplas de empregado feminino com seus dependentes, o que significa dizer: tuplas de DEPENDENTES onde os valores de NSSEMP so iguais aos valores de NSS de EMPREGADO. Em DEP_ATUAL, foi obtido isto. O CARTESIAN PRODUCT cria tuplas com atributos combinados de duas relaes. Pode-se ento selecionar apenas as tuplas que estejam relacionadas especificando uma condio de seleo apropriada, como foi feita no exemplo. Devido seqncia: CARTESIAN PRODUCT seguido de SELECT, ser muito comum para se identificar tuplas relacionadas de duas relaes, uma operao especial JOIN foi criada para especificar esta seqncia como uma nica operao. Assim, a operao CARTESIAN PRODUCT raramente utilizada isoladamente.
MNOME J S A
SEXO F F F
NDEP 4 4 5
EMP_NOMES PNOME SNOME Alicia Zelaya Jennifer Wallace Joyce English EMP_DEP PNOME Alicia Alicia Alicia Alicia Alicia Alicia Alicia Jennifer Jennifer Jennifer Jennifer Jennifer Jennifer Jennifer Joyce Joyce Joyce Joyce Joyce Joyce Joyce
SNOME Zelaya Zelaya Zelaya Zelaya Zelaya Zelaya Zelaya Wallace Wallace Wallace Wallace Wallace Wallace Wallace English English English English English English English
NSS 999887777 999887777 999887777 999887777 999887777 999887777 999887777 987654321 987654321 987654321 987654321 987654321 987654321 987654321 453453453 453453453 453453453 453453453 453453453 453453453 453453453
NSSEMP 333445555 333445555 333445555 987654321 123456789 123456789 123456789 333445555 333445555 333445555 987654321 123456789 123456789 123456789 333445555 333445555 333445555 987654321 123456789 123456789 123456789
NOMEDEPENDENTE Alice Theodore Joy Abner Michael Alice Elizabeth Alice Theodore Joy Abner Michael Alice Elizabeth Alice Theodore Joy Abner Michael Alice Elizabeth
SEXO F M F M M F F F M F M M F F F M F M M F F
DATANIV 05-ABR-76 25-OUT-73 03-MAI-48 29-FEV-78 01-JAN-78 31-DEZ-78 05-MAI-57 05-ABR-76 25-OUT-73 03-MAI-48 29-FEV-78 01-JAN-78 31-DEZ-78 05-MAI-57 05-ABR-76 25-OUT-73 03-MAI-48 29-FEV-78 01-JAN-78 31-DEZ-78 05-MAI-57
RELAO FILHA FILHO ESPOSA MARIDO FILHO FILHA ESPOSA FILHA FILHO ESPOSA MARIDO FILHO FILHA ESPOSA FILHA FILHO ESPOSA MARIDO FILHO FILHA ESPOSA
NSS 987654321
NSSEMP 987654321
NOMEDEPENDENTE Abner
SEXO M
DATANIV 29-FEV-78
RELAO MARIDO
SNOME Wallace
NOMEDEPENDENTE Abner
55
A operao JOIN, denotada por , usada para combinar tuplas relacionadas de relaes em uma nica tupla. Esta operao muito importante para quaisquer bases de dados relacionais, pois permite processar relacionamentos entre relaes. Para ilustrar a operao JOIN, suponha que se deseja recuperar os nomes dos gerentes de cada departamento. Para obter-se o nome dos gerentes, necessrio combinar cada tupla de departamento com tuplas de empregados cujo valor NSS seja igual ao valor de NSSGER na tupla departamento. Isto feito usando a operao JOIN, ento projeta-se o resultado sobre aqueles atributos necessrios: DEPT_GERDEPARTAMENTO NSSGER=NSS EMPREGADO
O resultado da primeira operao mostrado na Figura 7.5. O exemplo utilizado para ilustrar o CARTESIAN PRODUCT pode ser especificado usando o operador JOIN trocando as duas operaes: EMP_DEPEMP_NOMES DEPENDENTE DEP_ATUALNSS=NSSEMP (EMP_DEP) por DEP_ATUALEMP_NOME NSS=NSSEMP DEPENDENTE
DEPT_GER DNOME Pesquisa Administrativo Gerencial
DNMERO 5 4 1
MNOME T S E
R <condio join> S.
O resultado de JOIN uma relao Q com n+m atributos Q(A1, A2, ..., An, B1, B2, ..., Bm) nesta ordem; Q tem um tupla para cada combinao de tuplas uma de R e uma de S onde quer que a combinao satisfaa a condio join. Esta a principal diferena entre CARTESIAN PRODUCT e JOIN; em JOIN, apenas combinaes de tuplas que satisfazem a condio join que aparecer no resultado, j no CARTESIAN PRODUCT, todas as combinaes de tuplas so includas no resultado. A condio join especificada sobre atributos de R e de S, e avaliada para cada combinao de tuplas. Uma condio join tem a forma: <condio> AND <condio> AND,...,OR, ..., AND <condio> onde cada condio da forma Ai Bj, Ai um atributo de R, Bj um atributo de S, Ai e Bj tm
o mesmo domnio e um dos operadores de comparao { =, <, , >, , }. Uma operao JOIN de condio especificada denominada THETA JOIN. Tuplas cujos valores dos atributos join so null no aparecem no resultado. muito comum encontrar JOIN que envolva condies joins com apenas a comparao de igualdade. Um JOIN, onde apenas o operador de comparao = utilizado chamado EQUIJOIN. Os dois exemplos anteriores eram EQUIJOIN. Note-se, que no resultado de uma EQUIJOIN sempre ter um ou mais pares de atributos que tem valores idnticos em todas as tuplas. Por exemplo, na Figura 7.5 os valores dos atributos NSSGER e NSS so idnticos em todas as tuplas de DEPT_GER porque condio join de igualdade especificada sobre estes
56
atributos. Devido a esta duplicao ser desnecessria, uma nova operao chamada NATURAL JOIN foi criada. Denota-se o join natural por *, que basicamente um equijoin seguido da remoo de atributos desnecessrios. Um exemplo : PROJ_DEPTPROJETO *
DNUM=DNMERO
DEPARTAMENTO
Os atributos DNUM e DNMERO so chamados atributos de unio. A relao resultante mostrada na Figura 7.6a. Na relao PROJ_DEPT, cada tupla combina uma tupla de PROJETO com a tupla de DEPARTAMENTO que controla o projeto. Na relao resultante, manteve-se apenas o primeiro atributo de unio. Devido s comparaes em uma condio join de um join natural serem sempre comparaes de igualdade, pode-se descartar o operador de comparao e apenas listar os atributos de unio como segue: PROJ_DEPTPROJETO * Assim, a forma geral de um NATURAL JOIN : QR *
(<lista1>),(<lista2>) (DNUM), (DNMERO)
DEPARTAMENTO
Neste caso, <lista1> especifica uma lista de i atributos de R e <lista2> especifica uma lista de i atributos de S. Apenas os atributos da primeira relao R <lista1> sero mantidos na relao resultante Q. Se os atributos sobre os quais o join natural especificado tiverem os mesmos nomes em ambas relaes, pode-se tirar a condio join totalmente. Por exemplo, para aplicar um join natural sobre DNMERO de DEPARTAMENTO e LOCAIS_DEPTO, suficiente escrever: DEPT_LOCSDEPARTAMENTO * LOCAIS_DEPTO A relao resultante mostrada na Figura 7.6b, que combina cada departamento com suas localizaes e tem uma tupla para cada localizao. Esta operao executada igualando-se todos os pares de atributos que tenham o mesmo nome nas duas relaes. Note que, se nenhuma combinao de tuplas satisfizer a condio join, ento o resultado ser uma relao vazia. Em geral, se R tiver nR tuplas e S tiver nS tuplas, o resultado de uma operao JOIN R <condio join> S ter entre zero e nR*nS tuplas. Se no existir <condio join> para satisfazer, ento todas as combinaes de tuplas sero includas. Nestes casos, JOIN torna-se um CARTESIAN PRODUCT.
PROJ_DEPT (a) PNOME ProdutoX ProdutoY ProdutoZ Automao Reorganizao Beneficiamento PNMERO 1 2 3 10 20 30 PLOCALIZAO Bellaire Sugarland Houston Stafford Houston Stafford DNUM 5 5 5 4 1 4 DNOME Pesquisa Pesquisa Pesquisa Administrativo Gerencial Administrativo NSSGER 333445555 333445555 333445555 987654321 888665555 987654321 DATINICGER 22-MAI-78 22-MAI-78 22-MAI-78 01-JAN-85 19-JUN-71 01-JAN-85
DNMERO 1 4 5 5 5
57
<condio>
(R S)
Similarmente, uma operao NATURAL JOIN pode ser especificada como um CARTESIAN PRODUCT seguida pelas operaes SELECT e PROJECT. Assim, as vrias formas de JOIN tambm no so estritamente necessrias para expressar o poder da lgebra relacional. No entanto, elas so muito convenientes assim como a operao INTERSECTION porque elas so utilizadas com freqncia pelas aplicaes de base de dados relacional. Outras operaes foram includas por convenincia. Ser discutida uma delas: DIVISION.
(EMPREGADO)
NSSEMP = NSS
SMITH_PNOS
(TRABALHA_EM *
SMITH)
Depois, criar uma relao que inclua tuplas da forma <PNRO, NSSEMP> que lista todos os empregados, cujo nmero do seguro social NSSEMP, que trabalham num determinado projeto PNRO: NSS_PNRO PNRO, NSSEMP (TRABALHA_EM) Finalmente, aplicar a operao DIVISION para as relaes obtidas a fim de obter os nmeros dos seguros sociais desejados: NSS_DESEJADO(NSS)NSS_PNRO SMITH_PNOS RESULT PNOME, SNOME (NSS_DESEJADO * EMPREGADO) Os resultados das operaes acima so mostrados na Figura 7.7a. Em geral, a operao DIVISION aplicada para duas relaes R(Z) S(X), onde X Z. Seja Y=Z - X; isto , Y o conjunto de atributos de R que no so atributos de S. O resultado da diviso uma relao T(Y) que incluir uma tupla t se tR cujo tR[Y] = t aparecer em R com tR[X] = Ts para toda tupla tS em S. Isto significa que para uma tupla aparecer no resultado T da diviso, os valores em t devem aparecer em R em combinao com todas as tuplas de S.
58
A Figura 7.7b ilustra a utilizao da operao DIVISON onde R = Z = {A, B}, S = X = {A}, e T = Y = {B}; isto , X e Y so (ambos) atributos simples. A relao resultante T ter apenas um nico atributo B = Z - X. Note que b1 e b4 aparecem em R em combinao com todas as trs tuplas de S; por isso que eles aparecem na relao resultado T. Todos os outros valores de B em R no apareceram com todas as tuplas de S e no foram selecionados; b2 no aparece com a2; e b3 no aparece com a1. A operao de diviso pode ser expressa como uma seqncia de operaes , e -: T1Y (R) T2Y ((S T1) - R) TT1 - T2
(a)
NSS_PNRO NSSEMP 123456789 123456789 666884444 453453453 453453453 333445555 333445555 333445555 333445555 999887777 999887777 987987987 987987987 987654321 987654321 8886655555 PNRO 1 2 3 1 2 2 3 10 20 30 10 10 30 30 20 20 SMITH_PNO PNRO 1 2 NSS_DESEJADO NSS 123456789 453453453
(b)
R A a1 a2 a3 a4 a1 a3 a2 a3 a4 a1 a2 a3 B b1 b1 b1 b1 b2 b2 b3 b3 b3 b4 b4 b4 S A a1 a2 a3 T B b1 b4
Figura 7.7 Resultado da aplicao de um operador de diviso 7.1.8 Operaes Relacionais Adicionais
Existem algumas consultas comuns em bases de dados relacionais que no podem ser realizadas como as operaes da lgebra descritas na seo anterior. Muitas linguagens de consulta de SGBD possuem a capacidade de realizar essas consultas. Nesta seo sero discutidas algumas dessas consultas e define-se operaes adicionais que so usadas para expressar essas consultas.
59
SUM, AVERAGE, MAXIMUM e MINIMUM. A funo de contagem de tuplas normalmente chamada COUNT. Cada uma destas funes pode ser aplicada a todas as tuplas de uma relao. Um outro tipo comum de consulta envolve o agrupamento de tuplas de uma relao pelo valor de alguns de seus atributos e ento a aplicao de alguma funo agregada independente para cada grupo de tuplas. Um exemplo o agrupamento de tuplas de empregados pelo NDEP. Pode-se ento listar, para cada NDEP a mdia salarial de empregados num determinado departamento. Pode-se definir uma operao FUNCTION, que pode ser usada para especificar estes tipos de consultas.
<atributos de agrupamento> <lista de funes> (<nome
da relao>)
onde <atributos de agrupamento> uma lista de atributos da relao especificada em <nome da relao> e <lista de funes> uma lista de pares (<funo><atributo>). Em cada par, <funo> uma das funes seguintes: SUM, AVERAGE, MAXIMUM, MINIMUM, COUNT, e <atributo> um atributo da relao especificada por <nome da relao>. A relao resultante tem tantos atributos quanto aqueles que existirem em atributos de agrupamento alm da lista de funes combinada. Por exemplo, para recuperar cada nmero de departamento, o nmero de empregados em departamento, e sua mdia salarial, escreve-se: R(DNO, NRO_EMPS, MDIA)NDEP
COUNT NSS, AVERAGE SALRIO (EMPREGADO)
O resultado desta operao mostrado na Figura 7.8a. No exemplo acima, foi especificada uma lista de nomes de atributos - entre parnteses - para a relao R. Se nenhuma lista tivesse sido especificada, ento os atributos da relao resultante teriam como o nome a concatenao do nome da funo com o nome do atributo especificado. Por exemplo, o resultado da seguinte operao mostrado na Figura 7.8b.
NDEP COUNT NSS, AVERAGE SALRIO (EMPREGADO)
Se nenhum atributo de agrupamento for especificado, as funes sero aplicadas para todos os valores de tuplas na relao, tal que a relao resultante ter uma nica tupla. Por exemplo, o resultado da seguinte operao mostrado na Figura 7.8
60
SUPERVISO(SNN1, SNN2)NSS, NSSSUPER (EMPREGADO) RESULT1SNN1 (SUPERVISO SNN2 = NSS BORG_NSS) Para recuperar todos os empregados supervisionados por Borg no nvel dois, isto , todos os empregados e'' supervisionados pelo empregado e' que diretamente supervisionado por Borg, pode-se aplicar um outro JOIN ao resultado da primeira consulta: RESULT2SNN1 (SUPERVISO SNN2 = NSS RESULT1) Para obter todos os empregados supervisionados nos nveis um e dois por 'James Borg', podese aplicar a operao UNION como segue: RESULT3(RESULT1 RESULT2) Embora seja possvel recuperar os empregados supervisionados em cada nvel, no possvel especificar uma consulta tal como " recupere todos os supervisionados de 'James Borg' em todos os nveis" se no for conhecido o nmero mximo de nveis.
7.2
Nesta seo sero apresentados exemplos para ilustrar o uso das operaes da lgebra relacional. Todos os exemplos referem-se base de dados da Figura 5.4. Em geral, a mesma consulta pode ser realizada de vrias maneiras usando diferentes operadores relacionais. Consulta 1: Encontrar o nome e o endereo de todos os empregados que trabalham para o departamento 'Pesquisa'. PESQUISA_DEPTO DNOME = 'Pesquisa' (DEPARTAMENTO) PESQUISA_DEPTO_EMPS(PESQUISA_DEPTO DNMERO = NDEP EMPREGADO) RESULT
PNOME, SNOME, ENDEREO
(PESQUISA_DEPTO_EMPS)
61
Esta consulta poderia ser especificada de outra maneira; por exemplo, a ordem das operaes JOIN e SELECT poderia ser invertida ou o JOIN poderia ser trocado pelo NATURAL JOIN. Consulta 2: Para todo projeto localizado em 'Stafford', listar o nmero do projeto, o nmero do departamento responsvel, e o sobrenome, endereo e data de nascimento do gerente responsvel pelo departamento. STAFFORD_PROJS
PLOCALIZAO = 'Stafford'
DNUM = DNMERO
SSNGER = NSS
Consulta 3: Encontrar os nomes de empregados que trabalham em todos os projetos controlados pelo departamento 5. DEPT5_PROJS(PNO)
PNMERO
( DNUM=5 (PROJETO)))
EMP_PROJ(NSS, PNO) NSSEMP, PNRO (TRABALHA_EM) RESULT_EMP_SSNSEMP_PROJ DEPT5_PROJS RESULT SNOME, PNOME (RESULT_EMP_SSNS * EMPREGADO) Consulta 4: Fazer uma lista de nmeros de projetos no qual um empregado, cujo sobrenome 'Smith' , trabalha no projeto ou gerente do departamento que controla o projeto.
( SNOME='Smith' (EMPREGADO)) SMITH_WORKER_PROJS PNRO (TRABALHA_EM * SMITH) MGRS SNOME, DNMERO (EMPREGADO NSS = NSSGER DEPARTAMENTO) SMITH_MGS SNOME = 'Smith' (MGRS) SMITH_MANAGED_DEPTS(DNUM) DNMERO (SMITH_MGRS) SMITH_MGR_PROJS(PNRO) PNMERO (SMITH_MANAGED_DEPTS * PROJETO) RESULT(SMITH_WORKER_PROJS SMITH_MGR_PROJS)
NSS
SMITH(NSSEMP)
Consulta 5: Listar os nomes de todos os empregados com dois ou mais dependentes. Esta consulta no pode ser realizada usando apenas a lgebra relacional. Devese utilizar a operao FUNCTION com a funo de agregao COUNT, que no da lgebra relacional. Nas formulaes que se seguiro, assume-se que dependentes de um mesmo empregado possuem nomes distintos. T1(NSS, NO_DE_DEPS)NSSEMP T2
NO_DE_DEPS >= 2 COUNT NOMEDEPENDENTE
(DEPENDENTE)
RESULT
SNOME, PNOME
EMPS_COM_DEPS(NSS) NSSEMP (DEPENDENTE) EMPS_SEM_DEPS(TODOS_EMPS - EMPS_COM_DEPS) RESULT SNOME, PNOME (EMPS_SEM_DEPS * EMPREGADO)
62
EMPS_COM_DEPS(NSS)
7.3
1. 2. 3. 4.
Questes de Reviso
O que unio compatvel? Por que as operaes UNION, INTERSECTION e DIFFERENCE so operaes que necessitam que as relaes sejam: unio compatvel? Discuta algumas das consultas onde seja necessrio renomear atributos a fim de especificar consultas no ambguas. Discuta os vrios tipos de operaes JOIN. Resuma em forma de tabela que contenha o nome da operao, o propsito da operao e a notao. Especifique as seguintes consultas sobre a base de dados mostrada na Figura 5.3 usando operaes relacionais discutidas neste captulo. Mostra tambm os resultados de cada consulta se aplicada base de dados da Figura 5.4. a) b) c) d) e) f) g) h) i) Recuperar os nomes de empregados do departamento 5 que trabalham mais que 10 horas no projeto 'ProdutoX'. Listar os nomes dos empregados que tenham um dependente com o mesmo nome (PNOME). Encontrar os nomes de empregados que so diretamente supervisionados por 'Franklin Wong'. Para cada projeto, listar o nome do projeto e o total de horas (de todos os empregados) gastos em cada projeto. Recuperar os nomes dos empregados que trabalham em todos os projetos. Recuperar os nomes dos empregados que no trabalham em quaisquer projetos. Para cada departamento, recuperar o nome do departamento e a mdia salarial dos empregados que trabalham no departamento. Recuperar a mdia salarial de todos os empregados femininos. Encontrar os nomes e endereos de empregados que trabalham em ao menos um projeto localizado em Houston mas cujo departamento no possua localizao em Houston. Listar os sobrenomes dos gerentes de departamentos que no tenham dependentes. Generalize a consulta i) acima para listar os nomes e endereos de empregados que trabalham em um projeto em alguma cidade , mas que o departamento no tenha nenhuma localizao nessa cidade.
j) k)
63
7.4
Clculo Relacional
O Clculo Relacional (CR) uma linguagem de consulta formal onde, por meio de uma expresso declarativa, pode-se especificar uma solicitao de recuperao. No h nenhuma restrio na forma de avaliar uma solicitao. Uma expresso de clculo permite a descrio da consulta desejada sem especificar os procedimentos para obteno dessas informaes, ou seja, no-procedural. Contudo, deve ser capaz de descrever formalmente a informao desejada, com exatido. Existem dois tipos: Clculo Relacional de Tuplas (CRT) e Clculo Relacional de Domnio (CRD), ambos subconjuntos simples de lgica de primeira ordem. No Clculo Relacional existem variveis, constantes, operadores lgicos, de comparao e quantificadores. As expresses de Clculo so chamadas de frmulas. Uma tupla de respostas essencialmente uma atribuio de constantes s variveis que levam a frmula a um estado verdadeiro. Em CRT, as variveis so definidas sobre (isto , associam) tuplas. J em CRD, variveis so definidas sobre o domnio dos elementos (ou seja, sobre os valores dos campos). Todas as expresses de consulta descritas em CR possuem equivalentes em AR.
baseado na especificao de um nmero de variveis de tuplas. Cada varivel de tupla pode assumir como seu valor qualquer tupla da relao especificada. Uma consulta em CRT especificada da seguinte forma: {varivel tupla | predicado} O resultado de tal consulta o conjunto de todas as variveis tuplas para as quais o predicado indicado como verdadeiro. Uma expresso genrica do clculo relacional de tuplas tem a forma{t1.A1, t2.A2,..., tn.An | predicado(t1, t2,..., tn, tn+1, tn+2, ...,tn+m)} onde t1, t2,..., tn, tn+1, tn+2, ...,tn+m so variveis de tuplas, cada Ai um atributo da relao na qual ti se encontra e o predicado uma frmula do clculo relacional de tuplas. As frmulas atmicas de clculo de predicados podem ser uma das seguintes: 1-) Uma frmula atmica R(ti), onde R o nome de uma relao e ti uma varivel de tupla. Este tomo identifica a extenso da varivel de tupla ti como a relao cujo nome seja R. 2-) Uma frmula atmica ti.A op tj.B, onde op um dos operadores de comparao no conjunto {=, >, <, ...}, ti e tj so variveis de tuplas, A um atributo da relao na qual ti se encontra, B um atributo da relao na qual tj se encontra. 3-) Um frmula atmica ti.A op c ou c op tj.B, onde op um dos operadores de comparao no conjunto {=, >, <, ...}, ti e tj so variveis de tuplas, A um atributo da relao na qual ti se encontra, B um atributo da relao na qual tj se encontra e c um valor constante. Cada uma das frmulas atmicas anteriormente especificadas tem seu valor verdade avaliado como TRUE ou FALSE para uma combinao especfica de tuplas. Para frmulas do tipo 1, caso a varivel de tupla seja atribuda a uma tupla da relao R dada, esta assume valor TRUE; caso contrrio, FALSE. J nas frmulas do tipo 2 e 3, se as variveis de tupla forem designadas de forma que os valores dos atributos especificados satisfaam o predicado, esta assumir valor verdade TRUE.
64
Todas as variveis tuplas abordadas at ento so consideradas variveis livres4, uma vez que estas no aparecem quantificadas. Contudo, alm das definies acima, quantificadores (universal () ou existencial ()) podem aparecer nas frmulas. Neste caso, as variveis que os sucedem so denominadas variveis limite. Uma frmula definida, de forma recursiva, por uma ou mais frmulas atmicas, conectadas por operadores lgicos (AND, OR, NOT), como segue: 1-) Qualquer frmula atmica. 2-) Se F1 e F2 so frmulas atmicas, ento (F1 AND F2), (F1 OR F2), NOT (F1) e NOT (F2) tambm o so, tendo seus valores verdade derivados a partir de F1 e F2, da seguinte forma: a-) (F1 AND F2) ser TRUE apenas se ambos, F1 e F2, forem TRUE; b-) (F1 OR F2) ser TRUE quando uma das duas frmulas F1 e F2, for TRUE; c-) NOT(F1) ser TRUE quando F1 for FALSE; c-) NOT(F2) ser TRUE quando F2 for FALSE. 3-) Se F1 uma frmula atmica, ento ( t5)(F1) tambm o , e seu valor verdade apenas ser TRUE se a frmula F for avaliada como verdadeira para pelo menos uma tupla atribuda para ocorrncias livres de t em F. 4-) Se F1 uma frmula atmica, ento ( t)(F1) tambm o , e seu valor verdade apenas ser TRUE se a frmula F for avaliada como verdadeira para todas as tuplas atribudas para ocorrncias livres de t em F. possvel escrever expresses equivalentes manipulando operadores quantificadores. Alguns casos dessa manipulao podem ser declarados da seguinte forma: 1-) F1 AND F2 NOT(NOT F1 OR NOT F2). 2-) ( t) r (F1(t)) NOT ( t) r (NOT F1(t)). 3-) F1 F2 NOT F1 OR F2. 4-) ( x) (F(x)) NOT ( x) (NOT (F(x)) 5-) ( x) (F(x)) NOT ( x) (NOT (F(x)) 6-) ( x) (F(x) AND P(x)) NOT ( x) (NOT (F(x)) OR NOT (P(x))) 7-) ( x) (F(x) OR P(x)) NOT ( x) (NOT (F(x)) AND NOT (P(x))) 8-) ( x) (F(x) OR P(x)) NOT ( x) (NOT (F(x)) AND NOT (P(x))) 9-) ( x) (F(x) AND P(x)) NOT ( x) (NOT (F(x)) OR NOT (P(x))) Abaixo seguem exemplos de consultas em CRT. 1-) Encontre todos os empregados cujos salrios estejam acima de R$3.500,00. {t | EMPREGADO(t) AND t.SALARIO > 3500} 2-) D apenas os nomes e sobrenomes dos empregados cujos salrios estejam acima de R$3.500,00. {t.NOME, t.SOBRENOME | EMPREGADO(t) AND t.SALARIO > 3500} 3-) Selecione o nome e o endereo dos empregados que trabalham para o departamento de Informtica. {t.NOME, t.SOBRENOME, t.ENDERECO | EMPREGADO(t) AND ( d) (DEPARTAMENTO (d) AND d.NOMED = Informtica AND d.NUMERODEP = t.NUD)} e
As nicas variveis de tupla livres em uma expresso de clculo relacional devem ser aquelas esquerda da barra ( | ). 5 t uma varivel de tupla.
65
4-) Para cada projeto localizado em So Paulo, liste o nmero do mesmo, o nome do departamento proponente, bem como sobrenome, data de nascimento e endereo do gerente responsvel. {p.NUMEROP, p.NUMD, m.SOBRENOME, m.DATANASCIMENTO, m.ENDERECO | PROJETO(p) AND EMPREGADO(m) AND p.LOCALIZACAO = So Paulo AND (( d) (DEPARTAMENTO(d) AND d.NUMD = d.NUMERODEP AND d.NSSGER = m.NSS) )}
5-) Encontre os nomes dos empregados que trabalham em todos os projetos controlados pelo departamento de nmero 5. {e.SOBRENOME, e.NOME | EMPREGADO(e) AND (( x) (NOT(PROJETO(x)) OR NOT(x.NUMD = 5) OR (( w) (TRABALHA_EM(w) AND w.NSSE = e.NUMEROP AND x.NUMEROP = w.NUMP))))}
Expresses Seguras
Uma expresso em CRT pode gerar uma infinidade de relaes. Para a expresso {t | NOT (R(t))} pode existir uma infinidade de tuplas que no esto em R, de forma que esta nosegura. A maioria dessas tuplas contm valores que no esto no banco de dados, logo, no so desejveis como resultados. Uma expresso segura no CR uma expresso que garante a produo de um nmero finito de tuplas como resultado. Para melhor definir expresso segura, o conceito de domnio pode ser utilizado. O domnio de uma expresso P o conjunto de todos os valores referenciados por P. Isso inclui os valores mencionados em P propriamente dito, assim como os valores que aparecem na tupla de uma relao referenciada por P. Assim, o domnio de P um conjunto de valores que aparecem explicitamente em P ou que aparecem em uma ou mais relaes cujos nomes aparecem em P.
A diferena bsica entre CRT e CRD que neste ltimo as variveis estendem-se sobre valores nicos de domnios de atributos. Para formar uma relao de grau n para um resultado de consulta, faz-se necessrio criar n variveis de domnio, uma para cada atributo. Uma expresso genrica do clculo relacional de tuplas tem a forma {x1, x2,..., xn | predicado(x1, x2,..., xn, xn+1, xn+2, ...,xn+m)} onde x1, x2,..., xn, xn+1, xn+2, ...,xn+m so variveis de domnio aplicadas sobre o domnio dos atributos requeridos na consulta e predicado uma frmula atmica do CRD, que pode ser especificada em uma das formas que segue: 1-) Uma frmula atmica R(x1, x2,..., xn), onde R o nome de uma relao de grau j e cada xi, 1 i j, uma varivel de domnio. Isto implica que uma lista de valores de <x1, x2,..., xj> deve ser uma tupla na relao R, onde xi o valor do i-simo valor de atributo da tupla. 2-) Uma frmula atmica xi op xj, onde op um operador de comparao {=, <, >, ...} e xi e xj so variveis de domnio.
66
3-) Uma frmula atmica xi op c ou c xj, onde op um operador de comparao {=, <, >, ...} e xi e xj so variveis de domnio e c um valor constante qualquer. Como em CRT, as frmulas so avaliadas em valores verdade para um conjunto especfico de valores. Para a frmula do tipo 1, o valor verdade ser TRUE apenas se houver valores de domnio correspondentes a uma tupla de R atribudos s variveis de domnio que representam. Para os casos 2 e 3, o valor verdade ser TRUE caso as variveis de domnio possuam valores que satisfaam o predicado.
Expresses Seguras
Uma expresso em CRD dita segura se: 1-) Todos os valores que aparecem nas tuplas da expresso so valores dentro do domnio da mesma. 2-) Para todas as sub-frmulas ( x) (P(x)), a sub-frmula verdadeira se, e somente se, existir um valor x no domnio de P tal que P(x) seja verdadeiro. 3-) Para toda sub-frmula ( x) (P(x)), a sub-frmula verdadeira se, e somente se, P(x) for verdadeiro para todos os valores de x dentro do domnio de P. As proposies acima garantem que possamos testar todas as sub-frmulas existe um e para todo sem a necessidade de testar todas as suas infinitas possibilidades de ocorrncia. Abaixo, para fins de comparao, seguem em CRD os mesmos exemplos de consultas j escritos em CRT. 1-) Encontre todos os empregados cujos salrios estejam acima de R$3.500,00. {qrstuvwxyz | ( x) EMPREGADO(qrstuvwxyz) AND x > 3500} 2-) D apenas os nomes e sobrenomes dos empregados cujos salrios estejam acima de R$3.500,00. {qs | ( x) EMPREGADO(qrstuvwxyz) AND x > 3500} 3-) Selecione o nome e o endereo dos empregados que trabalham para o departamento de Informtica. {qsv | ( z) ( l) ( m) (EMPREGADO(qrstuvwxyz) AND DEPARTAMENTO(lmno) AND l = Informtica AND m = z)} 4-) Para cada projeto localizado em So Paulo, liste o nmero do mesmo, o nome do departamento proponente, bem como sobrenome, data de nascimento e endereo do gerente responsvel. {iksuv | ( j) ( m) ( n) ( t) (PROJETO(hijk) AND EMPREGADO(qrstuvwxyz) AND DEPARTAMENTO(lmno) AND k = m AND n = t AND j = So Paulo)} 5-) Encontre os nomes dos empregados que trabalham em todos os projetos controlados pelo departamento de nmero 5. {qs | ( a) ( t) ( b) ( z) EMPREGADO(qrstuvwxyz) AND (( i) (NOT(PROJETO(hijk)) OR NOT(k = 5) OR (TRABALHA_EM(abc) AND a = t AND i = b))))}
67
8 A Linguagem SQL
A linguagem SQL um padro de linguagem de consulta comercial que usa uma combinao de construtores em lgebra e Clculo Relacional e possui as seguintes partes: Linguagem de definio de dados (DDL) Linguagem interativa de manipulao de dados (DML) Incorporao DML (Embedded SQL) Definio de Vises Autorizao Integridade Controle de Transaes O SQL permite que uma tabela (relao) tenha duas ou mais tuplas idnticas em todos os seus valores de atributos. Assim, em geral, uma relao SQL no um conjunto de tuplas porque um conjunto no permite elementos idnticos. Ao invs disso, SQL um multi-conjunto (algumas vezes chamado de bag) de tuplas.
8.1
Estrutura Bsica
Uma expresso bsica em SQL consiste em trs clusulas: select, from e where. A clusula SELECT corresponde operao de projeo da lgebra relacional. usada para relacionar os atributos desejados no resultado de uma consulta. O resultado de uma consulta SQL , obviamente, uma relao. SQL permite duplicidades nas tuplas de resposta.Quando desejamos forar a eliminao de duplicidade, podemos inserir a palavra chave DISTINCT depois de SELECT. Para especificar explicitamente que as duplicidades no sero eliminadas a SQL nos permite usar a palavra-chave all depois de select. Uma vez que a manuteno de duplicidade padro, o uso de all facultativo. O asterisco * pode ser usado para denotar todos os atributos. A clusula FROM corresponde operao de produto cartesiano da lgebra relacional. Ela associa as relaes que sero pesquisadas durante a avaliao de uma expresso. A clusula WHERE corresponde seleo do predicado da lgebra relacional. Consiste em um predicado envolvendo atributos da relao que aparece na clusula FROM. A clusula where pode conter expresses aritmticas envolvendo os operadores de comparao <, <=, >, >=, = e <>, e operandos constantes ou atributos das tuplas. Em SQL, nessa clusula pode-se usar os conectores lgicos AND, OR e NOT; SQL possui o operador de comparao BETWEEN AND para simplificar a clusula where que especifica que um valor pode ser menor ou igual a algum valor e maior ou igual a algum outro valor.
Uma consulta tpica em SQL tem a forma: select A1, A2, ..., An from r1, r2, ..., rn where P
68
Cada Ai representa um atributo e cada ri, uma relao. P um predicado a ser satisfeito. Esta consulta equivale seguinte expresso em AR: A1, A2, ..., An ( p (r1 x r2 x ... rm)) A SQL forma um produto cartesiano das relaes indicadas na clusula FROM, executa uma seleo em AR usando o predicado da clusula WHERE e, ento, projeta o resultado nos atributos da clusula SELECT. Na prtica, ela pode converter em outra expresso equivalente que seja mais eficiente no processamento.
69
Contudo, existem vrias restries para o uso destes operadores e certos produtos no oferecem suporte para estas operaes.
70
Permite usar comparaes do tipo > some (maior que ao menos uma), <= some, = some, etc... ou > all (maior que todas), >= all, etc. select A1, A2, ..., An from r1, r2, ..., rn where P > all (select A1, A2, ..., An from r1, r2, ..., rn where P); Verificao de relaes vazias Pode-se testar se o resultado de uma subconsulta vazio. O construtor exists retorna o valor true se o argumento da subconsulta no-vazio.
select A1, A2, ..., An from r1, r2, ..., rn where P exists (select A1, A2, ..., An from r1, r2, ..., rn where P);
8.1.7 Vises
Uma viso qualquer relao que no faz parte do modelo lgico do banco de dados, mas que visvel ao usurio, como uma relao virtual. O conjunto de tuplas de uma relao viso resultado de uma expresso de consulta que foi definido no momento de sua execuo. Logo, se uma relao viso computada e armazenada, esta pode tornar-se desatualizada se as relaes usadas em sua gerao sofrerem modificaes. Quando uma viso definida, o sistema de banco de dados armazena sua definio ao invs do resultado da expresso SQL que a definiu. Sempre que a relao viso usada, ela sobreposta pela expresso da consulta armazenada, de maneira que, sempre que a consulta for solicitada, a relao viso ser recomputada. Alguns sistemas de banco de dados permitem que as relaes de vises sejam materializadas, garantindo que se ocorrerem modificaes nas relaes reais usadas na definio da viso, tambm a viso ser modificada. Contudo, esta abordagem pode incorrer em custos de armazenamento e atualizaes de sistema. As vises em SQL so geradas a partir do comando create view. A clusula padro : CREATE VIEW <nome da viso> AS <expresso de consulta>; Caso no necessitemos mais de uma dada viso, podemos elimin-la por meio do comando: DROP VIEW <nome da viso>;
8.1.8 Insero
O comando INSERT utilizado para adicionar uma nica tupla a uma relao. Para inserirmos dados em uma relao devemos especificar a relao e uma lista de valores para a tupla a ser inserida. Obs.: Os valores devem ser inseridos na mesma ordem na qual os atributos correspondentes foram especificados na criao da tabela de dados.
71
A clusula padro : INSERT INTO <relao> VALUES <lista com valores dos atributos>
8.1.9 Atualizao
O comando UPDATE utilizado para modificar valores de atributos de uma ou mais tuplas selecionadas. As atualizaes servem para modificar valores de tuplas que esto inseridas em um certo critrio. Para tal usa-se o comando update. A clusula padro : UPDATE <relao> SET <lista dos atributos a serem alterados e seus respectivos valores> WHERE <condio>
8.1.10 Remoo
O comando DELETE remove tuplas de uma relao. A remoo de valores num banco de dados consiste na excluso de tuplas que satisfaam certa condio especificada na clusula WHERE. As tuplas so explicitamente excludas de uma tabela a cada vez. A expresso padro : DELETE FROM r WHERE P
Exemplos de Consultas SQL Bsicas: A forma bsica do comando SELECT, algumas vezes chamada de mapping ou bloco SELECT FROM WHERE, formada por trs clusulas - SELECT, FROM e WHERE:
Consulta 0: Recuperar a data de nascimento e o endereo do empregado cujo nome 'John B. Smith'. Q0: SELECT DATANASC, ENDEREO FROM EMPREGADO WHERE PNOME = 'John' AND MNOME = 'B' AND SNOME = 'Smith' Esta consulta envolve apenas a relao EMPREGADO declarada na clusula FROM. A consulta seleciona as tuplas de EMPREGADO que satisfazem a condio da clusula WHERE, e ento projeta o resultado sobre os atributos listados na clusula SELECT. Q0 similar expresso da lgebra relacional:
72
DATANASC, ENDEREO ( PNOME = 'John' AND MNOME = 'B' AND SNOME='Smith' (EMPREGADO)) Assim, uma simples consulta SQL com uma nica relao similar ao par SELECT-PROJECT. A nica diferena da consulta SQL que, na relao resultante, as tuplas podem estar duplicadas, exceto se tiver o operador DISTINCT. Consulta 1: Encontrar o nome e o endereo de todos os empregados que trabalham para o departamento 'Pesquisa'. Q1: SELECT PNOME, SNOME, ENDEREO FROM EMPREGADO, DEPARTAMENTO WHERE DNOME = 'Pesquisa' AND DNUMERO = NDEP Esta consulta similar seqncia SELECT-PROJECT-JOIN da lgebra relacional. Na clusula WHERE a condio DNOME='Pesquisa' uma condio de seleo e corresponde operao SELECT lgebra relacional. A condio DNUMERO = NDEP uma condio join, que corresponde condio da operao JOIN. Consulta 2: Para todo projeto localizado em 'Stafford', listar o nmero do projeto, o nmero do departamento responsvel, e o sobrenome, endereo e data de nascimento do gerente responsvel pelo departamento. Q2: SELECT PNUMERO, DNUM, SNOME, ENDEREO, DATANASC FROM PROJETO, DEPARTAMENTO, EMPREGADO WHERE DNUM = DNUMERO AND SSNGER = NSS AND PLOCALIZAO = 'Stafford'
Consulta 3: Encontrar os nomes de empregados que trabalham em todos os projetos controlados pelo departamento 5. Q3: SELECT PNOME, SNOME FROM EMPREGADO WHERE ((SELECT PNRO FROM TRABALHA_EM WHERE NSS = NSSEMP) CONTAINS (SELECT PNUMERO FROM PROJETO WHERE DNUM = 5))
O operador CONTAINS compara dois conjuntos de valores e retorna TRUE se um conjunto contm todos os valores do outro. A segunda consulta dentro dos parnteses recupera todos os nmeros de projetos controlados pelo departamento 5. Para cada tupla de EMPREGADO, a primeira consulta dentro dos parnteses recupera os nmeros de projetos sobre os quais os empregados trabalham. Se o resultado desta consulta contiver todos os projetos controlados pelo departamento 5, a tupla de EMPREGADO selecionada e o nome deste empregado recuperado. Note que a operao de comparao CONTAINS similar em sua funo operao DIVISION da lgebra relacional. Consulta 4: Fazer uma lista de nmeros de projetos no qual um empregado, cujo sobrenome 'Smith' , trabalha no projeto ou gerente do departamento que controla o projeto. Q4: (SELECT PNUMERO FROM PROJETO, DEPARTAMENTO, EMPREGADO WHERE DNUM=DNUMERO AND NSSGER=NSS AND SNOME='Smith') UNION (SELECT PNUMERO
73
FROM PROJETO, TRABALHA_EM, EMPREGADO WHERE PNUMERO=PNRO AND NSSEMP=NSS AND SNOME='Smith') Consulta 5: Listar os nomes de todos os empregados com dois ou mais dependentes. Q5: SELECT SNOME, PNOME FROM EMPREGADO WHERE ( SELECT COUNT (*) FROM DEPENDENTE WHERE NSS=NSSEMP) >= 2 onde (*) indica o nmero de tuplas.
74
Consulta 6: Listar os nomes dos empregados que no possuem dependentes. Q6: SELECT PNOME, SNOME FROM EMPREGADO WHERE NOT EXISTS ( SELECT * FROM DEPENDENTE WHERE NSS=NSSEMP) onde * indica todos os valores de atributos das tuplas selecionadas.
Consulta 7: Listar os nomes dos gerentes que tm ao menos um dependente. Q7: SELECT PNOME, SNOME FROM EMPREGADO WHERE EXISTS ( SELECT * FROM DEPENDENTE WHERE NSS=NSSEMP) AND EXISTS ( SELECT * FROM DEPARTAMENTO WHERE NSS=NSSGER)
75
Nessa seo sero discutidas mtricas de qualidade informal para projeto de esquemas de relaes, quais sejam: Semntica de atributos. Reduo de valores redundantes em tuplas. Reduo de valores nulos em tuplas. No permisso de tuplas esprias. Essas mtricas no so sempre independentes uma das outras, como ser visto.
76
(a)
ENOME
DATANASC
ENDEREO
DNUMERO
DNOME
NSSGER
(b)
NSS
HORAS
ENOME
PNOME
PLOCALIZAO
DNUMERO 5 4 1
TRABALHA_EM NSSEMP PNRO 123456789 1 123456789 2 666884444 3 453453453 1 453453453 2 333445555 2 333445555 3 333445555 10 333445555 20 999887777 30 999887777 10 987987987 10 987987987 30 987654321 30 987654321 20 888775555 20
HORAS 32.5 7.5 40.0 20.0 20.0 10.0 10.0 10.0 10.0 30.0 10.0 35.0 5.0 20.0 15.0 null
PNUMERO 1 2 3 10 20 30
DNUM 5 5 5 4 1 4
Figura 9.2
EMP_DEPT ENOME John Smith Franklin Wong Alcia Zelaya Jennifer Wallace Ramesh Narayan Joyce English Ahmad Jabbar James Borg NSS 123456789 333445555 999887777 987654321 666884444 453453453 987987987 888665555 DATANASC 09-JAN-55 08-DEZ-45 19-JUL-58 20-JUN-31 15-SET-52 31-JUL-62 29-MAR-59 10-NOV-27 ENDEREO R. A, 1 R. B, 2 Av. C, 3 Trav. D, 4 R. E, 5 R. F, 6 Av G, 7 Av H, 8 DNUMERO 5 5 4 4 5 5 4 1 DNOME Pesquisa Pesquisa Administrativo Administrativo Pesquisa Pesquisa Administrativo Gerencial NSSGER 333445555 333445555 987654321 987654321 333445555 333445555 987654321 888665555
EMP_PROJ NSS PNUMERO 123456789 1 123456789 2 666884444 3 453453453 1 453453453 2 333445555 2 333445555 3 333445555 10 333445555 20 999887777 30
HORAS 32.5 7.5 40.0 20.0 20.0 10.0 10.0 10.0 10.0 30.0
ENOME John Smith John Smith Ramesh Narayan Joyce English Joyce English Franklin Wong Franklin Wong Franklin Wong Franklin Wong Alcia Zelaya
PNOME ProdutoX ProdutoY ProdutoZ ProdutoX ProdutoY ProdutoY ProdutoZ Automao Reorganizao Beneficiamento
PLOCALIZAO Bellaire Sugarland Houston Bellaire Sugarland Sugarland Houston Stafford Houston Stafford
77
Figura 9.3
Em EMP_DEPT, os valores de atributos pertencentes a um particular departamento (DNUMERO, DNOME, NSSGER) esto repetidos para todos os empregados que trabalham para um departamento. Em contraste, as informaes de departamento aparecem apenas uma vez para cada departamento na relao DEPARTAMENTO da Figura 9.2, e apenas o nmero do departamento (DNUMERO) repetido na relao EMPREGADO para cada empregado que trabalha no departamento. Similarmente, o mesmo comentrio se aplica para a relao EMP_PROJ. Um outro problema srio identificado, quando se utilizam relaes similares s encontradas na Figura 9.3 como relaes base, o problema da anomalia de alteraes. Podem ser classificadas em anomalias de insero, remoo e modificaes.
9.2
Anomalia de insero
Pode-se diferenciar dois tipos de anomalias de insero. Para inserir uma nova tupla empregado em EMP_DEPT, deve-se incluir valores de atributos do departamento em que o empregado trabalha, ou null se o empregado ainda no pertencer a um departamento. Por exemplo, para inserir uma nova tupla para o empregado que trabalha no departamento 5, deve-se tomar cuidado em assegurar que os valores de atributos sejam inseridos corretamente, tal que fiquem consistentes com os valores do departamento 5 em outras tuplas de EMP_DEPT. No projeto ilustrado na Figura 9.2 esse cuidado no precisa ser tomado, uma vez que apenas o nmero do departamento necessrio em cada tupla de empregado; os outros valores de atributos do departamento 5 so registrados apenas uma vez na base de dados, como uma simples tupla na relao DEPARTAMENTO. difcil inserir um novo departamento que ainda no tenha empregados na relao EMP_DEPT. A nica maneira de fazer isso colocar valores null em atributos de empregados. Isso provoca um problema pois NSS a chave primria de EMP_DEPT, e supe-se que cada tupla representa uma entidade empregado no uma entidade departamento. Mais do que isso, quando o primeiro empregado for associado a esse departamento, no ser mais necessrio a tupla com valores null. Este problema no ocorre no projeto da Figura 9.2, porque um departamento inserido na relao DEPARTAMENTO sem que nenhum empregado trabalhe nele, e quando um empregado for associado ao departamento, uma tupla correspondente inserida em EMPREGADO.
78
De acordo com as anomalias acima, pode-se estabelecer a seguinte diretriz: Diretriz 2: Projetar esquemas de relaes de maneira que nenhuma anomalia de alterao ocorra em relaes. Se existir alguma anomalia, isso dever ser considerado para que as modificaes pelos programas ocorram corretamente. A segunda diretriz consistente e refora a primeira diretriz. Verifica-se, porm, que existe a necessidade de uma abordagem mais formal para auxiliar na avaliao de que projetos obedecem estas diretrizes. Nas sees seguintes isso ser fornecido. importante notar que estas diretrizes podem, algumas vezes, ter que ser violadas a fim de aumentar o desempenho de certas consultas. Por exemplo, se for importante recuperar, rapidamente, informaes pertinentes ao departamento, atravs de atributos de um empregado que trabalhe no departamento, o esquema EMP_DEPT pode ser usado como uma relao base. No entanto, deve-se assegurar que as anomalias sejam bem conhecidas para que as modificaes nesta relao base no a tornem inconsistente. Em geral aconselhvel utilizar relaes base livre de anomalias e especificar vises utilizando JOINs para unir atributos freqentemente referenciados em consultas importantes. Isso reduz o nmero de JOINs especificados em consultas, simplifica as consultas, e em alguns casos, eleva o desempenho.
NSS
HORAS
PNOME
PLOCALIZAO
(b) EMP_LOCS ENAME PLOCALIZAO John Smith Bellaire John Smith Sugarland
79
EMP_PROJ1 PNUMERO NSS 123456789 1 123456789 2 666884444 3 453453453 1 453453453 2 333445555 2 333445555 3 333445555 10 333445555 20 999887777 30 999887777 10 987987987 10 987987987 30 987987987 30 987987987 20 888665555 20
HORAS 32.5 7.5 40.0 20.0 20.0 10.0 10.0 10.0 10.0 30.0 10.0 35.0 5.0 20.0 15.0 null
PNOME ProdutoX ProdutoY ProdutoZ ProdutoX ProdutoY ProdutoY ProdutoZ Automao Reorganizao Beneficiamento Automao Automao Beneficiamento Beneficiamento Reorganizao Reorganizao
PLOCALIZAO Bellaire Sugarland Houston Bellaire Sugarland Sugarland Houston Stafford Houston Stafford Stafford Stafford Stafford Stafford Houston Houston
Figura 9.4
Uma tupla em EMP_LOCS significa que o empregado cujo nome ENOME trabalha em algum projeto cuja localizao PLOCALIZAO. Uma tupla em EMP_PROJ1 significa que o empregado cujo nmero do seguro social NSS trabalha HORAS por semana em um projeto cujo nome, nmero e localizao so PNOME, PNUMERO e PLOCALIZAO. A Figura 9.4b mostra a extenso de EMP_LOCS e EMP_PROJ1 correspondente relao extenso EMP_PROJ da Figura 9.3, aplicando-se operaes de projeo () adequadas. Suponha agora que EMP_PROJ1 e EMP_LOCS sejam utilizadas como relaes base ao invs de EMP_PROJ. Isto seria, particularmente, um projeto ruim, pois no se pode recuperar as informaes que existiam originalmente em EMP_PROJ a partir de EMP_PROJ1 e EMP_LOCS. Se uma operao JOIN-NATURAL for aplicada em EMP_PROJ1 e EMP_LOCS, surgiro mais tuplas que existiam em EMP_PROJ. A Figura 9.5 ilustra o resultado obtido aplicando-se o join, considerando apenas as tuplas existentes acima da linha pontilhada, para reduzir o tamanho da relao resultante. As tuplas adicionais so chamadas tuplas esprias porque elas representam informaes esprias ou erradas, e por isso elas no vlidas. As tuplas esprias esto marcadas por asteriscos (*) na Figura 9.5. A decomposio de EMP_PROJ em EMP_PROJ1 e EMP_LOCS ruim porque quando aplicada a operao JOIN-NATURAL, no so obtidas as informaes originais corretas. Isto porque foi escolhido PLOCALIZAO como o atributo que relaciona EMP_LOCS e EMP_PROJ1, e PLOCALIZAO no nem uma chave-primria e nem uma chaveestrangeira. Pode-se agora estabelecer uma outra diretriz para projeto: Diretriz 4: Projetar esquemas de relaes tal que, quando aplicadas operaes JOINNATURAIS, os atributos nas condies-joins envolvam atributos que sejam ou chavesprimrias ou chaves-estrangeiras de maneira a garantir que nenhuma tupla espria seja gerada.
* * * * *
PNUMERO 1 1 2 2 2 3 3 1
ENAME John Smith Joyce English John Smith Joyce English Franklin Wong Ramesh Narayan Franklin Wong John Smith
80
* * * * *
Figura 9.5
Obviamente, estas diretrizes informais necessitam ser estabelecidas de maneira mais formal.
9.3
Dependncias Funcionais
Um conceito simples, porm, muito importante em projetos de esquemas relacionais o de dependncia funcional. Nesta seo ser definido formalmente este conceito, e na seo 9.2.2 ser verificado como trabalhar com esquemas de relaes em formas normais.
81
esquema em R que satisfaam o conjunto F de dependncias funcionais, diz-se que F realiza-se em R. 2. Usando-as para verificaes de relaes, de modo a saber se as ltimas so vlidas sob um conjunto de dependncias funcionais. Se uma relao r legal sobre um conjunto F de dependncias funcionais, diz-se que r satisfaz F. Considera-se a relao r mostrada abaixo para verificar quais dependncias funcionais so satisfeitas. Observa-se que A C satisfeita. Duas tuplas tm valor a1 em A. Essas tuplas tm o mesmo valor de C denominado c1. De modo similar, duas tuplas com valor a2 em A tm o mesmo valor c2 em C. No existe outro par de tuplas distintas que tenha, em A, os mesmos valores. A dependncia funcional C A, entretanto no satisfeita. Para confirmar esta afirmao, considere as tuplas t1 = (a2, b2, c2, d3) e t2 = (a3, b3, c2, d4). Essas tuplas tm os mesmos valores c2 em C, mas elas possuem valores diferentes em A, a2 e a3, respectivamente. Assim, encontra-se um par de tuplas t1 e t2 tal que t1 [C] = t2 [C], mas t1 [A] t2 [A]. A a1 a1 a2 a2 a3 B b1 b2 b2 b3 b3 C c1 c1 c2 c2 c2 D d1 d2 d2 d3 d4
82
Isto significa que uma dependncia funcional uma propriedade do esquema da relao (inteno) R e no de uma instncia particular legal r (extenso) de R. Assim, uma DF no pode ser automaticamente inferida a partir de uma extenso de relao r, mas deve ser definida por algum que conhea a semntica dos atributos de R. Por exemplo, na Figura 9.7, uma instncia particular de um esquema de relao ENSINO mostrada. Embora num primeiro momento possa parecer que TEXTO CURSO, no se pode afirmar isso a menos que se conhea que isso seja verdade para todas as instncias da relao ENSINO.
PROFESSOR Smith Smith Hall Brown CURSO Estrutura de Dados Gerenciamento de dados Compiladores Estrutura de Dados TEXTO Bartram Al-Nour Hoffman Augenthaler
Figura 9.7
DATANASC
ENDEREO
DNUMERO
DNOME
NSSGER
(b)
NSS df1
EMP_PROJ PNUMERO
HORAS
ENOME
PNOME
PLOCALIZAO
df2
df3
Figura 9.8
83
Se uma relao no est na 2FN, ela pode ser normalizada em um nmero de relaes na 2FN. As dependncias funcionais df1, df2 e df3 indicadas na Figura 9.9 podem ser consideradas para decompor a relao EMP_PROJ em 3 esquemas de relaes EP1, EP2 e EP3, como mostra a Figura 9.9a. Cada um desses esquemas de relao satisfaz a 2FN. Verifica-se que as relaes EP1, EP2 e EP3 evitam as anomalias que estava sujeita a relao EMP_PROJ.
(a)
NSS df1 EMP_PROJ PNUMERO
HORAS
ENOME
PNOME
PLOCALIZAO
df2
df3 EP1 NSS EP2 PNUMERO HORAS NSS ENOME PNUMERO EP3 PNOME
PLOCALIZAO
df1
df2
df3
(b)
ENOME df1
EMP_DEPT NSS
DATANASC
ENDEREO
DNUMERO
DNOME
NSSGER
ED1 ENOME
NSS
DATANASC
ENDEREO
DNUMERO
ED2 DNUMERO
DNOME
NSSGER
Figura 9.9
84
9.4
Em geral desejamos projetar nossos esquemas de relaes de modo que eles no tenham dependncias parciais nem transitivas. Esses tipos de dependncias causam as anomalias de atualizao discutidas nas sees anteriores. Os passos para normalizao para as relaes na 3FN que discutimos at aqui probem dependncias parciais e transitivas na chave primria. Essas definies, entretanto, no levam em conta outras chaves candidatas de uma relao, se que existem!! Entretanto nesta seo, trataremos de definies mais gerais de 2FN e 3FN para introduzirmos a Forma Normal de Boyce-Codd. Essas definies mais gerais no afetam a definio de 1FN. Utilizaremos aqui a definio de atributo primo (principal), ou seja, um atributo integrante (parte) de qualquer chave candidata. Assim as dependncias parcial e plenamente funcionais e dependncias transitivas sero agora com relao a todas as chaves candidatas de uma relao.
Traduzindo o significado das dependncias funcionais temos que a DF3 diz que o imposto fixo para um dado municpio (no varia lote por lote dentro do mesmo municpio). Enquanto DF4 diz que o preo de um lote determinado por sua rea, independentemente do municpio em que esteja localizado. O esquema da relao LOTES desrespeita a definio geral da 2FN porque IMPOSTO parcialmente dependente da chave candidata (Nome_Municipio, #Lote), devido a DF3. Para normalizar LOTES para 2FN, decompomos o mesmo em duas relaes LOTES1 e LOTES2, mostradas na figura 9.10b. Construmos LOTES1 removendo o atributo IMPOSTO que desrespeita a 2FN de LOTES e colocando-o com Nome_Municipio em uma outra relao LOTES2. Tanto LOTES1 como LOTES2 esto na 2FN. Note que DF4 no desrespeita a 2FN e transportada para LOTES1. (a) esquema relao lotes 1FN. LOTES
#ID_Propriedade Nome_Municipio #Lote rea Preo Imposto
85
df3
86
A definio formal da FNBC difere ligeiramente da definio da 3FN. Um esquema da relao R est na FNBC se, sempre uma dependncia funcional no-trivial X A se mantiver em R, X for uma superchave de R. A condio b da 3FN est ausente. Preferencialmente o projeto de um banco de dados relacional deve empenhar-se em alcanar a FNBC ou a 3FN para todo esquema da relao. Alcanar o status de normalizao somente na 1FN ou na 2FN no considerado adequado, uma vez que essas formas foram desenvolvidas como caminho para 3FN e FNBC. Para exemplificar a FNBC foi includa uma DF5, em LOTES1A como ilustra a figura 9.11a. Junto com tal dependncia funcional adicionada, assumimos que existam milhares de lotes, mas apenas dois municpios X e Y. Supomos tambm que as reas dos lotes do municpio X so 0,5; 06; ...; 1.0 alqueires e os lotes de Y so 1,1; 1,2; .....; 2,0 alqueires. Nesse caso teramos DF5: AREA Nome_Municipio. A rea de um lote que determina o municpio, conforme especificado por DF5, pode ser representada atravs de 16 tuplas numa relao em separado R(AREA, NOME_Municipio), uma vez que existam somente 16 possveis valores de AREA. Essa representao reduziria redundncia de se repetir a mesma informao em milhares de tuplas de LOTES1A. A FNBC uma forma normal mais restrita que no admitiria LOTES1A e sugeriria a decomposio da mesma, conforme ilustra a figura 9.11a. (a) Normalizao para FNBC com perda da df2 nas relaes decompostas. LOTES 1A
#ID_Propriedade Nome_Municipio #Lote rea
LOTES1AY
rea Nome_Municipio
Figura 9.11(a, b) Forma normal de Boyce-Codd. Considere agora as seguintes dependncias funcionais da relao leciona da figura 12: DF1: (aluno, disciplina) instrutor DF2: instrutor disciplina Note que (aluno, disciplina) uma chave candidata para essa relao e que as dependncias mostradas seguem o padro da figura 9.11b. Portanto essa relao est na 3FN, mas no est na FNBC. A decomposio desse esquema em dois esquemas no simples porque pode ser decomposto em um de trs pares possveis:
87
Instrutor
Mark Navathe Ammar Schulman Ahamad Mark Omiecinski Navathe
Figura 9.12 relao leciona est na 3FN, mas no na FNBC. Todas as trs decomposies perdem a dependncia DF1. A mais desejvel dessas trs decomposies a terceira, porque no ir gerar tuplas invlidas aps uma juno. Em geral uma relao que no esteja na FNBC, deve ser decomposta de modo a satisfazer essa propriedade (de ser sem perda de juno), mesmo que isso signifique abster-se da preservao de todas as dependncias funcionais. Esse tpico ser tratado na seo 9.5.
Exerccios 1- Considere uma relao universal R = {A, B, C, D, E, F, G, H, I, J} e o conjunto de dependncias funcionais F = {{A, B} {C}, {A} {D, E}, {B} {F}, {F} {G, H}, {D} {I, J}}. Qual a chave para R? Decomponha R em relaes na 2FN e em seguida na 3FN. 2- Repita o exerccio anterior com o seguinte conjunto de dependncias funcionais G = {{A, B} {C}, {B, D} {E, F}, {A, D} {G, H}, {A} {I}, {H} {J}}. 3- Prove que qualquer esquema de uma relao com dois atributos est na FNBC. 4- Considere a seguinte relao: A 10 10 11 12 13 14 B b1 b2 b4 b3 b1 b3 C c1 c2 c1 c4 c1 c4 TUPLA# #1 #2 #3 #4 #5 #6
a) Dada extenso da relao apresentada, qual(is) dependncia(s) abaixo descritas podem ser mantida (s)? Se a dependncia no pode se manter, explique o porqu, especificando as tuplas que causam violao. A B B C C B B A C A b) A relao mostrada anteriormente tem uma chave candidata? Justifique sua reposta.
5) Considere a relao R(A, B, C, D, E) com as seguintes dependncias: AB C, CD E, DE B Existem chaves candidatas para essa relao? Justifique sua resposta.
88
LIVRO (ttulo_do_livro, nome_do_autor, tipo_do_livro, preo_de_tabela, afiliao_do_autor, editora) Suponha as que existam as seguintes dependncias: ttulo_do_livro editora, tipo_do_livro tipo_do_livro preo_de_tabela nome_do_autor afiliao_do_autor a ) Em que forma normal est a relao? Justifique sua resposta. b) Aplique a normalizao at que no possa mais decompor as relaes. Justifique as razes de cada decomposio.
89
90
negcio, como quais foram os produtos mais vendidos durante o ms passado? ou quais produtos esto perdendo market share? ou ainda quais so nossos clientes mais fiis?. O data warehouse construdo para responder questes que no esto limitadas s transaes individuais, porm, tratam do processo como um todo. Para isso, o desenho do data warehouse deve refletir a forma com que os especialistas enxergam o negcio e este o ponto chave que distingue um data warehouse de um sistema OLTP. A tcnica utilizada para se obter um modelo para o data warehouse que identifique e represente a informao importante para o modelo de negcios a modelagem dimensional. Quando bem definido, o modelo dimensional pode ser uma ajuda de valor incalculvel para as reas de negcio, apoiando e otimizando todo o processo de tomada de decises. Um data warehouse corporativo pode ser definido em termos de seis caractersticas bsicas que o diferenciam dos outros sistemas na empresa. Os dados em um data warehouse so: 1. 2. 3. 4. 5. 6. Separados dos sistemas transacionais da empresa e populados a partir destes; Disponveis, na sua totalidade, para a atividade de serem interrogados pelos usurios de negcios; Integrados para ser uma base nica e padro para o modelo da empresa; Associados informao temporal e a perodos de tempo definidos, como fechamentos mensais ou baseados no ano fiscal; Orientados por assunto, ou seja, organizado para descrever o desempenho do negcio; Acessvel aos usurios que tenham um conhecimento limitado de sistemas computacionais ou estruturas de dados.
Alm destas caractersticas, podemos citar sua no-volatilidade, ou seja, uma vez que o dado foi carregado no data warehouse, no deve mais sofrer alteraes.
91
de fcil percepo que estes quadros facilmente se transformaro em tabelas, que podem ser utilizadas para armazenar toda a informao. Um modelo como este no muda muito ao ser implementado em um banco de dados relacional. Cada quadro com os atributos de uma dimenso se torna uma tabela, chamada de tabela dimenso, na base de dados e o quadro central se torna uma grande tabela, chamada tabela fato, que contm, por vezes, milhes ou bilhes de linhas. Contudo, os modelos dimensionais nem sempre so implementados em bases de dados relacionais. Existem no mercado os bancos de dados multidimensionais, ou MDDBs, que armazenam as informaes em um formato diferente, freqentemente chamados de cubos. Os cubos so construdos de tal forma que, cada combinao de atributos das dimenses com uma mtrica ou pr-calculado ou calculado muito rapidamente. Entretanto, a natureza de uma base de dados multidimensional tambm significa que no possvel manipular volumes de dados extremamente grandes j que, uma transao de anlise dos dados, com uma ferramenta OLAP, que envolva um grande volume de dados vai consumir grande quantidade de memria ou simplesmente no se efetua. Alm disso, o nmero de atributos dimensionais armazenados em um cubo pode impactar o tamanho e o desempenho do cubo. Uma das alternativas para solucionar estes problemas pode ser a implementao do modelo dimensional em um banco de dados relacional e, aps isto, utiliz-lo como fonte para os cubos. Esta abordagem muito utilizada em empresas que querem executar anlises em pequenos subconjuntos de um grande conjunto de dados armazenados em um data warehouse. Quando esta abordagem implementada, o data warehouse como um todo fica armazenado no banco de dados relacional, enquanto que os cubos, contm partes ou segmentos do data warehouse que so chamados de data marts. Uma outra alternativa utilizar uma ferramenta de consulta acessando o data warehouse no banco relacional transformando o resultado da consulta em um cubo que permita a anlise rpida dos dados. Estes cubos podem ser gerados no computador do usurio ou em um servidor de aplicaes. Esta abordagem interessante para os usurios, j que no requer a administrao centralizada destes cubos. importante notar, porm, que o usurio fica sujeito aos limites de capacidade de processamento de seu PC ou do servidor de aplicaes.
92
Uma arquitetura para o Data Warehouse apresentada na Figura 2. Nesta arquitetura, os dados so provenientes dos sistemas operacionais. Estas fontes so conectadas a wrappers ou monitores que efetuam o processo de seleo, transformao e limpeza dos dados. Alm disso, monitoram as alteraes nas fontes de dados propagando-as a um componente integrador, que combina os dados selecionados a partir das diferentes fontes operacionais. Estes dados, j consistentes, so propagados para o warehouse. O metadados contm informaes relevantes sobre a criao, gerenciamento e uso do data warehouse e funciona como uma ponte entre os usurios do data warehouse e os dados nele contidos. O warehouse pode ser acessado atravs de um servidor OLAP, que tem como objetivo, apresentar as informaes multidimensionais para as ferramentas de acesso, anlise, geradores de relatrios, planilhas e ferramentas de minerao de dados (Data Mining tools). Basicamente, o servidor OLAP interpreta as consultas dos usurios convertendo-as em instrues adequadas, muitas vezes complexas, para o acesso ao data warehouse. Atualmente existem dois tipos de soluo para implementao para acesso ao repositrio de data warehouse. Uma a utilizao de modelos relacionais associados a tecnologias de buscas multidimensionais em cubos pr-construdos (MOLAP). Outra, a utilizao de gerenciadores relacionais incrementados com tecnologias de ndices bitmap e recuperao de dados com listas invertidas (ROLAP). Na Figura 2 possvel tambm identificar as vrias camadas que compem tal arquitetura: 1. Ferramentas de acesso para os usurios; 2. Servidor OLAP (MOLAP-ROLAP) 3. Sistema de gerenciamento do data warehouse e ferramentas para selecionar, transformar, limpar, integrar e copiar os dados; 4. Dados dos sistemas operacionais.
93
Cada Di uma tabela dimenso, isto , uma relao caracterizada por um identificador que identifica unicamente cada tupla (di a chave primria de Di). F uma tabela fato, isto , uma relao que conecta todas as tabelas D1,..., Dn; o identificador de F composto pelas chaves estrangeiras di,..., dn de todas as tabelas dimenso conectadas. O esquema de F contm um conjunto de atributos
94
adicionais V (que representam os valores sobre os quais sero aplicadas as funes de agregao). As tabelas dimenso podem conter hierarquias.
Definio 2.3.2 Seja D uma tabela dimenso com o identificador d. Uma hierarquia de atributos em D um conjunto de dependncias funcionais FDD = {fd0, fd1 ,..., fdn}, onde cada fdi caracterizado por dois conjuntos de atributos Ali Attr(D) e Ari Attr(D) (chamados respectivamente de lado esquerdo e lado direito da dependncia); a dependncia representada por fdi : Ali Ari . Cada dependncia funcional fdi uma restrio ao contedo da tabela dimenso D, sendo que: para cada par de tuplas t1 e t2 D, t1 [Ali] = t2 [Ali] t1 [Ali] = t2 [Ari] . Uma dependncia fd0 com Al0 = {d} e Ar0 = {Attr(D) - d} estar sempre presente em FDD. As dependncias funcionais devem ser acclicas, isto , o grafo obtido pelo desenho de um arco partindo de ax e chegando em ay, deve ser acclico, se fdi FDD | ax Ali ay Ari . Exemplo: Vamos considerar um exemplo prtico, a base de dados multidimensional para uma grande cadeia de lojas de varejo. Com um grande nmero de lojas, cada uma delas sendo um supermercado que vende uma ampla variedade de diferentes produtos. A base de dados multidimensional armazena informao sobre cada venda, por loja, por dia e considera tambm as promoes em cada produto vendido. Podemos identificar as seguintes dimenses: Product7, que caracteriza cada produto vendido, Store, que caracteriza cada ponto de venda, Time e Promotion, que descreve as caractersticas das promoes dos produtos. A tabela fato fornece as informaes sobre as vendas, sobre as quais sero realizadas as anlises financeiras. Inclui identificadores para todas as dimenses e vrios atributos descrevendo as vendas (como valor da venda, quantidade vendida, etc.) Se considerarmos a dimenso Store, do exemplo acima, com chave s e restrita a um conjunto de atributos {z, c, st, n}, que representam respectivamente zip code, county, state e number of sale clerks. A dimenso tem a seguinte hierarquia de atributos: {fd0 : s {z, c, st, n}, fd1 : z c, fd2 : c st} Definio 2.3.3 Uma hierarquia de atributos da base de dados multidimensional FDDB a unio das hierarquias de atributos DFDj de todas as dimenses Dj existentes na base de dados multidimensional.
7
Por razes didticas, os nomes de tabelas e atributos sero mantidos no idioma original, ingls.
95
96
Uma consulta executada neste modelo dimensional, geralmente se inicia por uma pesquisa nas tabelas dimenso, aplicando-se os filtros de valores e obtendo-se como resultado um conjunto de chaves. Aps isso, o acesso feito tabela fato, garantindo assim a preciso no acesso aos dados atravs de uma estrutura completa de chaves, eliminando-se um table scan e, com isso, obtendo-se o melhor desempenho possvel de uma tecnologia relacional. O conceito de armazenamento das dimenses separadamente garante que a base de dados trate os vetores esparsos de maneira eficaz, isto , sem armazenar vazios, assegurando o acesso mais eficiente possvel. O modelo dimensional pode ser implementado utilizando vrios tipos de esquemas diferentes. Provavelmente, o star schema, apresentado por R. Kimball, seja o primeiro esquema utilizado para representar o data warehouse implementado em um banco de dados relacional.
Figura 4 - Esquema para um processo de pedidos Apesar de ser o mais conhecido, o star schema no o nico. De fato, existe uma srie de variaes que sero analisadas a posteriori. Porm, antes de iniciar a modelagem em um esquema particular, temos que definir o processo de negcio a ser modelado. A Figura 4 mostra um exemplo de esquema para um processo de pedidos. A tabela central a tabela fato e as tabelas ao redor desta so as dimenses. Neste exemplo esto representadas as dimenses Produto, Tempo (data), Cliente e Vendedor (incluindo informaes de ordem geogrfica). Os fatos representados so: valor do pedido, margem, custo, quantidade pedida e nmero do pedido. Depois de definido o escopo do data warehouse, os prximos passos so: definir a granularidade das informaes representadas na tabela fato, identificar as dimenses e enumerar as mtricas ou fatos. A seguir daremos uma descrio sucinta sobre cada uma destas etapas e, na seqncia, mostraremos os tipos de esquemas bsicos e suas variaes.
10.3.2.1
Como j dito, uma das primeiras decises feita para modelar o data warehouse est relacionada com o nvel de detalhe das mtricas a serem armazenadas. Este nvel de detalhamento conhecido como granularidade da tabela fato. muito importante que todas as
97
linhas na tabela fato sejam armazenadas com informaes exatamente no mesmo nvel de detalhes. Como exemplo, um processo de pedidos teria sua granularidade definida no nvel de detalhe da linha individual do pedido. Se forem armazenados diferentes nveis de detalhamento na tabela fato, a utilizao da base de informaes ficaria bastante prejudicada. Suponha que a maioria das informaes no nvel da linha de detalhe do pedido esteja armazenada, sendo que algumas informaes foram armazenadas no nvel do cabealho do pedido. No nvel de detalhe da linha do pedido existe um relacionamento com cliente, produto, representante comercial e tempo. Porm, no nvel do cabealho do pedido, o relacionamento com os produtos especficos por pedido desaparece. As informaes relevantes que estejam em diferentes nveis de granularidade deveriam ser armazenadas em tabelas fato diferentes. Em geral, podemos dizer que, a aderncia de uma tabela fato a uma certa granularidade requer que as chaves que relacionam as linhas da tabela fato s linhas das dimenses nunca sejam nulas. Um relacionamento opcional a uma dimenso geralmente indica um problema de granularidade.
10.3.2.2
As dimenses
Uma vez que o nvel de granularidade esteja definido, a escolha das dimenses a serem utilizadas deve ser o prximo passo. O ideal seria definir uma dimenso com um grande nmero de atributos, representando um rico conjunto de detalhes sobres o processo de negcio ( comum que as dimenses apresentem 100 ou at mesmo 200 atributos em uma nica tabela dimenso). As tabelas dimenso contm informaes sobre as dimenses dos dados, ou seja, tempo, produto, mercado, contas e assim por diante e devem ser desenhadas a partir da perspectiva do usurio. Por esta razo, os atributos e suas descries devem ser definidos de forma significativa para o usurio e adequados para a posterior exibio em relatrios. As principais funes da tabela dimenso so reunir os atributos que sero utilizados para qualificar as consultas e cujos valores sero utilizados para agrupar e sumariar as mtricas. Cada tabela dimenso deve ter mltiplos atributos que contenham valores ou textos que possam ajudar a descrever a chave. Estas colunas de atributos so utilizadas para filtrar o contedo da dimenso. Alm disso, a utilizao de atributos do tipo inteiro, quando apropriados, favorecem as operaes de filtragem como maior que, menor que e entre. Os atributos de uma dimenso podem compor uma hierarquia ou ser apenas descritivos. Por exemplo, em uma dimenso produto, a hierarquia pode ser composta pelos atributos item, marca, tipo e diviso. A hierarquia definida na dimenso requisito bsico para as funes de agregao das mtricas contidas na tabela fato. Atravs dos agrupamentos dos elementos na hierarquia, os usurios podem analisar os fatos em um nvel maior ou menor de detalhes, conforme sua necessidade especfica. Este conceito de hierarquia, que permite a implementao de agregaes das mtricas, muito importante tambm para a dimenso Tempo e, vale ressaltar que muito raro um modelo dimensional que no inclua a dimenso Tempo como uma dimenso fundamental. Deve-se resistir ao impulso de aplicar as regras de normalizao nas tabelas dimenso. O processo de normalizao, separando os atributos em vrias tabelas diferentes faz com que as consultas fiquem bem mais complexas, o banco de dados gaste mais tempo para recuperar os dados e, por conseqncia, os usurios esperem mais por suas respostas. Este custo muito alto como resultado da economia de apenas uns poucos bytes em uma tabela dimenso que, em comparao com uma tabela fato, minscula. Manter as tabelas dimenso desnormalizadas faz com que as hierarquias naturais contidas nos dados fiquem bem definidas. No exemplo anterior, de pedidos, nota-se que alguns exemplos como a dimenso Tempo (Data) inclui os atributos Ano, Trimestre, Ms e Data (que inclui o dia), juntamente com outros atributos relacionados a uma data especfica. Estes componentes no foram colocados em uma srie de tabelas progressivamente mais detalhadas. Em vez disso, esto em uma nica tabela que deixa clara a hierarquia. Por exemplo, enquanto que a ocorrncia do ano de 2004 possa aparecer na tabela 365 vezes, isto ficar invisvel ao usurio. Quando as mtricas forem sumariadas por ano, apenas uma ocorrncia de 2004 aparecer no relatrio. Um atributo muito importante da tabela dimenso sua chave. A chave primria de uma tabela dimenso dever ser sempre um atributo nico e definido pelo sistema com um valor genrico. Por questes de desempenho, no se utilizam chaves compostas por vrias partes nem
98
tampouco chaves concatenadas. Tambm no so utilizados as chaves ou os identificadores provenientes de outros sistemas como, por exemplo, cdigo do cliente ou cdigo do produto. Existem vrias razes para se utilizar chaves genricas em vez de chaves com valores significativos. Em caso de alteraes de atributos de um cliente, por exemplo, seu endereo, um tratamento especial seria necessrio e a insero deste mesmo cliente, com seu novo endereo, com outra chave. Se o cdigo do cliente for utilizado como chave primria isto no ser possvel. Os tratamentos de alteraes sero analisados neste trabalho, em sees posteriores.
10.3.2.3
Os fatos
Aps identificao da granularidade e das dimenses, o momento de focalizar a tabela fato. Para isso, comea-se definindo quais mtricas ou fatos deseja-se avaliar no data warehouse. Estes fatos so os nmeros que sero analisados atravs das diferentes dimenses. A seleo dos fatos para compor o modelo do data warehouse relativamente simples: uma vez que a rea de negcios esteja definida, a lista de fatos a serem utilizados responde a questo: O que estamos avaliando?. O exemplo, representado pelas Figuras 1 e 4, ilustra em suas respectivas tabelas centrais, quais so os valores relevantes para a anlise do processo de pedidos. Existem trs tipos de mtricas ou fatos, discutidos na prxima seo.
99
Esse tipo de atributo no aditivo ou semi-aditivo pode ser agregado ou sumariado utilizando-se outros operadores como mdia, mximo ou mnimo. o caso da mtrica temperatura, que considerada no aditiva, j que adicionar temperaturas dificilmente faz sentido.
Ocasionalmente, no necessrio armazenar nenhuma mtrica em uma tabela fato. Por vezes, o simples armazenamento de um relacionamento entre as dimenses em um certo ponto do tempo tudo que uma rea de negcios necessita como mtrica. Este tipo de tabela fato a tabela sem fato (do original factless fact table). O exemplo mais tpico deste tipo de tabela fato o controle de freqncia de alunos em determinadas disciplinas. No existe uma mtrica associada. Apenas a existncia do relacionamento entre as dimenses j um indicativo suficiente para o processo de anlise. Este tipo de tabela encontra-se ilustrado na Figura 6. Pode ocorrer que a mesma tabela fato tenha mltiplas chaves estrangeiras, como parte de sua chave primria, que se relacionam com a mesma dimenso. Por exemplo, o mesmo fato ter mltiplas datas associadas a ele, como no caso da tabela fato de remessa de produtos, onde
duas chaves estrangeiras, data da remessa e data do pedido, esto associadas a uma mesma tabela dimenso tempo. A Figura 7 ilustra esta situao. Neste caso, no necessria a criao de duas tabelas dimenso data. Em vez disso, vises ou sinnimos podem ser utilizadas para referenciar duas cpias virtuais da mesma tabela dimenso em uma nica instruo SQL, no momento da consulta.
Um indicador nvel, para estabelecer o nvel da hierarquia a que se refere a linha da tabela; Valores nulos ocasionais, dependendo do nvel hierrquico da linha. O objetivo de se armazenar toda a hierarquia possibilitar, durante as consultas, a utilizao de filtros que permitam a agregao ou sumrio dos fatos nos vrios nveis hierrquicos.
Figura 8 (genrica).
(a.) Tabela dimenso em detalhes com apenas uma descrio (b.) Tabela dimenso com uma descrio para cada nvel da hierarquia Star expandido.
A Figura 8 (itens a e b) mostram os detalhes de uma tabela dimenso, denominada Geografia, que descreve e define uma hierarquia entre a loja, a cidade, o estado (UF) e a regio onde esta se localiza. Na Figura 8a encontrada uma das possibilidades, com apenas uma descrio genrica para toda a dimenso; j na Figura 8b colunas de descrio especficas para cada elemento da hierarquia so definidas. importante notar que no existe uma preocupao com a normalizao das tabelas no data warehouse, conforme j exposto no item 3.2.2 acima. Este um dos aspectos que diferenciam bastante a modelagem do data warehouse da modelagem convencional. Outro aspecto a destacar que o indicador nvel no precisa ser numrico e pode conter o nome do nvel da hierarquia, como por exemplo: cidade, loja, ms etc. A dimenso Tempo uma dimenso especial, sendo diferente de todas as outras dimenses. Esta dimenso requer alguns atributos comuns a todas as dimenses e trs atributos especiais que sero de extrema importncia no momento das consultas. As colunas que devem compor a dimenso Tempo so:
Chave nica genrica, gerada pelo sistema, preferencialmente numrica e inteira, para ligao lgica com a tabela fato; Descrio do tempo contido naquela linha. Conforme os exemplos citados na Figura 8, esta descrio pode ser nica para a tabela ou especfica para cada nvel da hierarquia; Atributos da hierarquia, como nas outras dimenses; Nvel ou Resoluo, que indica o nvel da hierarquia representado naquela linha, que pode ser numrico ou um pequeno texto; Seqncia na resoluo, que indica a seqncia de um perodo de tempo dentro do nvel ou resoluo ao qual ele pertence. Este valor um nmero inteiro
consecutivo que designa a ordem cronolgica para todas os dias, meses, semestres, anos etc, ou seja, para todos os perodos de tempo existentes na tabela dimenso. A seqncia definida dentro de cada nvel ou perodo de resoluo, sem repeties e, h recomendaes de que sejam utilizados intervalos de valores para estabelecer a seqncia. Por exemplo, para a seqncia de anos a numerao seria de 1 a 10, para semestres, entre 100 e 200, todos os meses estariam entre 500 e 999 e todos os dias teriam seqncias numeradas a partir de 1.000. Na Figura 9 vemos que a seqncia na resoluo para Janeiro de 1999 500, para Fevereiro de 1999 501, Maro de 1999 tem seqncia 502 e assim por diante. importante ressaltar novamente que o valor para esta coluna deve ser nico dentro de um perodo de resoluo;
Indicador Corrente, se utilizado em conjunto com a coluna de seqncia na resoluo, descrita no item anterior, indica qual o perodo de tempo dentro da resoluo especificada, que deveria ser definido como corrente. Com isto, possvel definir qual ser o tempo corrente para as consultas: a informao carregada mais recentemente, a data de hoje ou algum perodo de tempo futuro. A utilizao desta coluna permite que determinadas condies de negcio estabeleam o momento em que os dados estaro disponveis para os usurios finais. Esta coluna , normalmente, definida como um caractere e preenchida com S ou N, onde S indica que o dado j foi carregado no data warehouse. O perodo de tempo corrente, dentro da resoluo (pode ser o dia corrente, o ms corrente etc.), ser aquele que contiver na coluna Indicador Corrente o valor de S e o maior valor na coluna Seqncia na Resoluo, descrita no item anterior.
Figura 9 Tabela representando a dimenso Tempo, com as colunas especficas para este tipo de dimenso. Nem sempre possvel capturar todas as mtricas e dimenses importantes para um modelo de negcios, em um nico esquema Star. Ao contrrio, a existncia de mltiplas tabelas fato a norma, definindo um modelo de mltiplas estrelas. Cada estrela composta por uma tabela fato e suas dimenses associadas.
O principal fator que pode levar separao das mtricas em diferentes tabelas fato o modelo de negcios analisado. Um processo de negcios pode envolver diferentes conjuntos de dimenses e as mtricas relacionadas a cada processo podem estar sendo coletadas em diferentes intervalos de tempo. O esquema Star desenhado para simplicidade e velocidade nas consultas. Podemos citar como vantagens, na sua utilizao, os seguintes aspectos:
Facilidade de entendimento do modelo, principalmente por parte do usurio final; Excelente desempenho, devido ao uso de chaves genricas, geralmente numricas e inteiras; Facilidade na definio das hierarquias; Nmero de operaes de join reduzidas, j que o modelo implementa todos os nveis da hierarquia das dimenses em apenas uma tabela por dimenso alm de estar bastante desnormalizado; O metadados simples.
Na Figura 10 est representado um esquema Star clssico, composto por uma tabela fato e suas dimenses Geografia, Produto e Tempo associadas.
Apesar de amplamente utilizado, o esquema Star apresenta alguns problemas. O primeiro deles est relacionado ao indicador nvel, presente em todas as tabelas dimenso. Este indicador deve ser utilizado em todas as consultas, j que a mesma tabela dimenso armazena informaes sobre todos os nveis da hierarquia. Durante a construo da consulta, o usurio deve conhecer a estrutura da base de dados, para poder especificar o nvel da informao a ser pesquisada. Este indicador pode ser causa potencial para erros j que, se for esquecido ou mal utilizado, pode levar a resultados incorretos e baixa flexibilidade. Alm disso, se a estrutura da dimenso for alterada, incluindo ou eliminando algum nvel da hierarquia, o data warehouse necessitar de alteraes fsicas, elevando os custos de manuteno.
O segundo problema que, por manter todos os nveis hierrquicos da dimenso fisicamente em uma nica tabela, esta se torna muito grande, em vrios casos. Outro fator que contribui para o aumento do tamanho da tabela a desnormalizao, que gera uma grande quantidade de valores de atributos repetidos. A desnormalizao fica bastante clara, ao analisar, por exemplo, a dimenso Geografia, que aparece na Figura 8b. No diagrama, representado na Figura 11, podemos ver as dependncias funcionais que ocorrem em uma tabela deste tipo.
O esquema Star clssico pode apresentar algumas variaes, dependendo do problema de negcio apresentado. Nas sees seguintes seguem as variantes do Star.
10.4.1.1
A primeira variao a ser discutida o esquema Partial Star. Nesta variao existem mltiplas tabelas para cada dimenso e para a tabela fato. Estas mltiplas tabelas esto lgica e fisicamente separadas em funo dos seus nveis de agregao. Este modelo cria mltiplas estrelas, cada uma representando uma combinao de nveis de agregao em cada dimenso. No existem ligaes lgicas entre as vrias tabelas fato ou dimenso, apenas entre a tabela dimenso e a tabela fato de cada grupo. Cada dimenso representada por mltiplas tabelas que so fisicamente separadas pelo nvel de agregao, sendo que as tabelas possuem como chave primria, uma chave genrica gerada pelo sistema, da mesma forma que o esquema Star clssico. Pode acontecer que uma mtrica ocorra apenas para um determinado nvel de uma dimenso. Por exemplo, a mtrica Preo existe unicamente no nvel Item da dimenso Produto. A Figura 12 retrata esta variao do Star, representando apenas a dimenso Geografia, separada nos nveis de Regio e de Cidade, e as tabelas fatos associadas a estes nveis.
Figura 12 Esquema Partial Star mostrando apenas a dimenso Geografia e as tabelas fato associadas.
Esta partio das informaes, pelos nveis hierrquicos de agregao, leva criao de duas estrelas: a primeira representando o nvel de Regio e a segunda representando o nvel de Cidade. Se forem adicionadas a este esquema as dimenses Tempo e Produto agregadas nos nveis de Fabricante e Marca, conforme o modelo representado na Figura 10 (Star Clssico), ocorrer uma expanso para Regio/Fabricante/Ano, Regio/Marca/Ano, Cidade/Fabricante/Ano e Cidade/Marca/Ano, sendo que cada combinao ser representada por uma estrela parcial separada:
Figura 13 Esquema Partial Star mostrando as dimenses Geografia e Produto separadas em diferentes nveis de agregao e as tabelas fato associadas.
So vrias as vantagens encontradas no esquema Partial Star, apesar de sua visvel complexidade. Uma delas a possibilidade de maior controle do tempo de carga, backup e manuteno das tabelas, pois seu tamanho fica reduzido em funo da partio. Estas parties possibilitam tambm a existncia de fatos em certos nveis especficos e possvel eliminar as colunas que no tenham significado em determinados nveis, reduzindo assim a esparsidade. Como j dito, a complexidade do modelo aumenta em relao ao Star clssico e cada estrela requer uma definio especfica nos metadados, dificultando o processo de manuteno. Com relao s consultas, sero necessrios mltiplos comandos SQL para analisar dados em mais de um nvel de agregao em um mesmo relatrio, o que pode degradar o desempenho da consulta. Alm disso, a estrutura fsica de cada tabela ou grupo de tabelas requer alteraes sempre que novos nveis de agregao ou novas combinaes forem adicionados ou removidos.
Para simplificar um pouco o esquema Partial Star, utiliza-se uma combinao de seus princpios com o Star clssico. Pode-se particionar apenas a tabela fato e manter cada dimenso como uma nica tabela ou o inverso, ou seja, manter a tabela fato nica e particionar as dimenses. O particionamento feito sempre baseado na agregao de determinados nveis da hierarquia. Estas variaes so chamadas de Fact Partitioning e Dimension Partition, respectivamente. A variao Fact Partitioning, tambm chamada Fact Constellation o esquema que particiona apenas a tabela fato. Este esquema utiliza uma nica tabela para cada dimenso que fica ligada s mltiplas tabelas fato, particionadas pelos diferentes nveis de agregao. Este esquema possibilita a existncia de fatos em certos nveis, j que as tabelas so particionadas, assim como o Partial Star. Ao particionar a informao em nveis de agregao desde o mais detalhado, para o caso de consultas executadas nos nveis de detalhe mais altos, o desempenho ser melhor. Deve-se levar em conta que, na implementao deste esquema, se a hierarquia extensa, numerosas tabelas fato sero criadas, aumentando a complexidade do desenho. Alm disso, consultas que requeiram a anlise das informaes em mais de um nvel de agregao emitiro mltiplos comandos SQL, o que pode acarretar em um desempenho inferior. A Figura 14, abaixo, representa um exemplo desta variao, onde a tabela fato est particionada em funo dos nveis hierrquicos Regio e Cidade, da dimenso Geografia (as demais dimenses no esto representadas):
Figura 14 Exemplo do esquema Fact Partitioning ou Fact Constellation para a dimenso Geografia e as tabelas fato correspondentes s parties por Regio e Cidade.
A variao Dimension Partitioning mantm uma nica tabela fato, que contm as mtricas dos vrios nveis de agregao, incluindo o nvel mais detalhado. Esta tabela fato est logicamente ligada s mltiplas tabelas de dimenso, particionadas por diferentes nveis de agregao. A Figura 15 representa um esquema deste tipo, onde a dimenso Geografia encontra-se particionada por Regio e por Cidade (as outras dimenses no esto representadas). As vantagens da Dimension Partitioning incluem a possibilidade de assinalar atributos que so especficos cada nvel de agregao e um bom desempenho, j que apenas um comando SQL emitido para a tabela fato, sem a necessidade de efetuar joins. Ao mesmo tempo, a vantagem de manter todos os fatos, detalhados e sumariados na mesma tabela, dificulta a recuperao das informaes dos nveis mais altos. A escolha do esquema a ser implementado, deve levar em conta vrios fatores do negcio, bem como os tipos de consultas e o tamanho de cada uma das tabelas definidas no data warehouse. Seja qual for a variao escolhida, o Star se carateriza pela simplicidade, rapidez no acesso e desnormalizao. O esquema Star pode ser refinado e transformado em um esquema chamado Snowflake que, para implementar as hierarquias dos atributos, se utiliza de
tabelas de subdimenses. Estas subdimenses facilitam a normalizao do modelo. Manter as tabelas desnormalizadas, implementando-se um esquema Star um aspecto bastante discutvel, pois a diviso das tabelas, como em um esquema Snowflake, em nome da normalizao, pode levar as consultas a um desempenho mais baixo.
Figura 15 Implementao do esquema Dimension Partitioning, representando o particionamento da tabela dimenso Geografia.
10.4.1.2
O esquema Snowflake
O esquema Snowflake pode ser considerado um Star normalizado, pois emprega uma combinao de normalizao da base de dados, para manter a integridade e reduzir os dados armazenados de forma redundante, com uma desnormalizao para obter melhor desempenho. Neste esquema as dimenses so normalizadas em subdimenses, sendo que cada nvel da hierarquia fica em uma subdimenso. Por esta razo, no h necessidade de utilizar o indicador de nvel que existe nos esquemas do tipo Star. A tabela principal da dimenso tem uma chave para cada nvel hierrquico representado na subdimenso e no mais uma nica chave, como no Star. O Snowflake apresenta duas variaes bsicas que diferem na disposio das tabelas que representam as subdimenses, os Snowflake Lookup e o Snowflake Chain, que sero descritos na prxima seo. Sua representao grfica fica similar a um floco de neve, devido ao particionamento das tabelas dimenso.
10.4.1.3
O esquema Snowflake Lookup emprega tabelas adicionais para nomes e descries dos atributos, todas ligadas a uma tabela principal da dimenso. Desta forma possvel reduzir o tamanho da tabela dimenso, eliminando a redundncia do armazenamento das mesmas descries em vrias linhas diferentes, sendo que as tabelas adicionais atuam como tabelas de lookup para a chave ou valores codificados da tabela principal da dimenso que, por sua vez, est logicamente ligada a uma nica tabela de fatos. A Figura 16 mostra o mesmo exemplo citado na Figura 10, porm, modelado em Snowflake Lookup, sendo representada apenas a dimenso Geografia e suas subdimenses Regio, Estado, Cidade e Loja.
Na Figura 16, pode-se notar que a ligao entre a tabela fato e a tabela da dimenso principal feita da mesma forma que no esquema Star, por meio de uma chave genrica gerada. A tabela principal da dimenso se conecta logicamente s subdimenses, que so as tabelas de lookup, atravs de suas chaves primrias.
Figura 16 Desenho lgico da dimenso Geografia em um data warehouse implementando o esquema Snowflake Lookup
As descries no precisam ser repetidas como no esquema Star, simplificando o armazenamento, reduzindo o tamanho relativo das tabelas dimenso e melhorando o controle de integridade dos dados. O uso das chaves geradas genricas, geralmente nmeros inteiros, levam a um melhor desempenho, menor manuteno do metadados e mais flexibilidade ao data warehouse. Vale ressaltar que o desempenho pode ficar afetado se mltiplas consultas ou mltiplos joins tm que ser emitidos para decodificar as chaves, ao buscar as descries nas tabelas adicionais. Alm disso, a manuteno da base de dados requer manuteno adicional dado o maior nmero de tabelas fsicas distintas. O esquema Snowflake apresenta um nvel muito maior de normalizao, se comparado aos esquemas do tipo Star. A Figura 17 mostra os diagramas que representam as dependncias funcionais do esquema que aparece na figura 16 em Snowflake Lookup.
Figura 17 Diagramas representando as dependncias funcionais em: a. Tabela principal da dimenso Geografia; b. Tabelas de Lookup (subdimenses) e c. Tabela Fato Vendas
A segunda variao do esquema Snowflake, conhecida por Snowflake Chain, utiliza tambm subdimenses, particionadas pelos nveis hierrquicos da dimenso, sendo que a tabela principal da dimenso representa o nvel mais baixo (mais detalhado) da hierarquia. As subdimenses esto encadeadas, partindo-se da tabela fato que est logicamente conectada tabela da subdimenso principal ou raiz. Na Figura 18 encontra-se um exemplo desta implementao, representando a dimenso Geografia com suas subdimenses e a tabela fato de vendas.
Figura 18 Exemplo de implementao do esquema Snowflake Chain, representando a ligao da tabela Fato com a dimenso Geografia (dividida em subdimenses encadeadas).
Cada tabela da subdimenso contm sua chave primria e suas descries associadas. Alm disso, contm tambm a chave para o prximo nvel da hierarquia da dimenso e assim por diante, at chegar ltima subdimenso, que contm o nvel mais alto (menos detalhado) da hierarquia. tipicamente utilizada quando os fatos contm informaes apenas sobre o nvel de detalhe mais baixo da hierarquia. Como verificado pela Figura 18, a tabela fato j no utiliza uma chave para a dimenso Geografia como um todo, a chave utilizada diretamente para a subdimenso principal. Fica claro que esta implementao no recomendada quando os relatrios necessitam freqentemente vrios nveis de agregao da informao, j que so necessrios vrios passos na cadeia para se chegar ao resultado. Este esquema oferece um alto grau de integridade de dados, pois os nomes e as descries so mantidos em um nico local, reduzindo o tamanho das tabelas de dimenso.
Figura 19 Exemplo de Snowflake Chain com chaves adicionais para melhorar o desempenho das consultas.
A maior desvantagem do Snowflake Chain est no baixo desempenho, uma vez que todos os nveis da cadeia devem ser acessados, mesmo quando se requer apenas os nveis mais altos de agregao. Em situaes prticas, existe uma alternativa para minimizar este efeito, adicionando-se, a cada subdimenso, chaves para todos os nveis superiores da hierarquia. Com isso, pode-se saltar determinados nveis, utilizando-se a chave que leva diretamente para o nvel requerido. A Figura 19 apresenta esta alternativa, que visa basicamente um melhor desempenho do Snowflake Chain.
Figura 20 Exemplo do esquema Snowflake Attribute agrupando os atributos Cor, Formato, Tamanho e Perfume, caractersticas dos produtos vendidos.
Podem ocorrer, em determinados modelos, vrios atributos diferentes que no esto associados a nenhuma dimenso especfica. Em vez de criar vrias dimenses com apenas um atributo, possvel agrup-los em apenas uma dimenso. Este esquema chamado de Snowflake Attribute, sendo que a dimenso artificial pode tambm implementar a combinao de dimenses pouco utilizadas com o objetivo de reduzir o nmero de dimenses do data warehouse, simplificar o modelo e melhorar o desempenho. A tabela principal desta dimenso artificial contm as chaves estrangeiras dos diferentes atributos ou das tabelas dimenso a serem agrupadas. A chave primria da dimenso artificial uma chave genrica gerada pelo sistema e uma nica linha adicionada para cada combinao vlida de todos os atributos ou dimenses envolvidas. Cada chave estrangeira da tabela principal leva a uma chave primria na tabela de descrio daquele atributo ou dimenso. A Figura 20 traz um exemplo, onde Tamanho, Cor, Formato e Perfume so atributos no dimensionais dos produtos vendidos, que no podem ser associados a nenhuma das dimenses existentes no modelo. Utilizando-se este tipo de esquema, os atributos podem ser agrupados em uma nica dimenso artificial que contm todas as combinaes vlidas destes atributos, sendo que a tabela fato contm uma chave para conectar-se logicamente a esta dimenso, da mesma forma que se conecta s outras dimenses do modelo.
As vantagens encontradas neste tipo de implementao so vrias: reduo do nmero de dimenses, que leva reduo do tamanho global dos ndices e da complexidade do SQL gerado, maior integridade dos dados e os vrios atributos juntos ou dimenses pouco usadas compartilham de um nico ponto de entrada na tabela de fatos. Sem este tipo de esquema, cada um destes atributos ou dimenses seria mantido como uma chave estrangeira na tabela fato, resultando em um ponto de entrada que no faria parte da chave primria e, provavelmente, sem ndice fsico para facilitar o acesso. Esta situao, retratada na Figura 21, deve ser evitada.
anlise das consultas que sero executadas pelos usurios, identificando os agrupamentos mais freqentes, alm de constante acompanhamento aps a implantao. Uma forma de descrever as agregaes a serem aplicadas na base como um agregado ndirecional, onde n indica o nmero de dimenses sumariadas como resultado da agregao. Um exemplo de um agregado uni-direcional seria sumariar uma dimenso (em algum nvel da hierarquia) enquanto que as outras dimenses ficam em seu nvel atmico, mais detalhado. Um agregado bi-direcional sumaria um nvel da hierarquia para duas dimenses deixando as demais em seu nvel atmico. Utilizando o exemplo expresso na Figura 10, que representa um esquema Star clssico com trs dimenses Geografia, Produto e Tempo e, quiser implementar no data warehouse exemplo, informaes sumariadas para totais de Categoria na dimenso Produto, totais de Estado na dimenso Geografia e totais mensais na dimenso Tempo, ter-se- sete tipos de agregados diferentes: 1. Agregado unidirecional: totais de categoria por loja por dia; 2. 3. 4. 5. 6. 7. Agregado unidirecional: totais de cidade por item de produto por dia; Agregado unidirecional: totais mensais por item de produto por loja; Agregado bidirecional: totais de categoria por totais de cidade por dia; Agregado bidirecional: totais de categoria por totais mensais por loja; Agregado bidirecional: totais de cidades por totais mensais por item de produto; Agregado tridirecional: totais de categoria por totais de cidade por totais mensais.
O exemplo evidencia a no representao de todos os possveis agregados para as dimenses do modelo, o que seria impraticvel, dada a grande quantidade de dados a ser administrada. Ainda assim, para os agregados escolhidos necessria uma avaliao do tamanho do resultado a ser gerado, levando-se em conta a exploso do nmero de linhas e a disperso das informaes armazenadas no data warehouse. Uma tabela de fatos de nvel bsico, para o exemplo em tela, normalmente bastante dispersa no preenchimento das chaves. Para entender este aspecto, lembre-se que apenas uma parte dos produtos vendida por dia em cada uma das lojas. Porm, ao calcular o tamanho do conjunto de agregados, deve-se considerar que sua criao aumenta drasticamente a taxa de ocupao, aumentando substancialmente o tamanho do data warehouse. Para comprovar este fato, observe um exemplo prtico em um data warehouse fictcio. Suponha que no modelo exemplo em anlise existem 10.000 itens produtos diferentes, 1.000 lojas e o perodo de tempo armazenado de 2 anos, equivalente a 730 dias. Alm disso, neste data warehouse exemplo, apenas aproximadamente 10 porcento dos produtos so vendidos em uma determinada loja em um determinado dia. Isto significa que a tabela de fatos ocupa apenas 10 porcento do que ocuparia caso todos os produtos fossem vendidos em todas as lojas, todos os dias. Entretanto, com a criao dos agregados esta taxa aumenta consideravelmente. Suponha ainda que, no caso de produtos, 10.000 itens levam a 2.000 categorias de produto e que as 1.000 lojas esto agrupadas em 100 cidades e o perodo de tempo total ser sumariado em 24 perodos mensais. Alm disso, vamos considerar a disperso e o nmero de linhas a tabela de fatos, de acordo com a tabela apresentada a seguir:
Tabela Base: item de produto por loja por dia Unidir.: categoria por loja por dia Unidir.: item por cidade por dia Unidir.: item por loja por ms Bidir.: categoria por cidade por dia Bidir.: categoria por loja por ms Bidir.: item por cidade por ms Tridir.: categoria por cidade por ms Produto Geografia Tempo Disperso 10.000 1.000 730 10% 2.000 1.000 730 50% 10.000 100 730 50% 10.000 1.000 24 50% 2.000 100 730 80% 2.000 1.000 24 80% 10.000 100 24 80% 2.000 100 24 100% Total aproximado: # Linhas 730 milhes 730 milhes 365 milhes 120 milhes 116 milhes 38 milhes 19 milhes 4,8 milhes 2.122 milhes
Se considerarmos o tamanho inicial da tabela de fatos base, que de aproximadamente 730 milhes de linhas, e o nmero de linhas aps a criao destes sete nveis de agregados,
verificamos que o aumento foi de 200%. O fator de disperso pode ser difcil de prever e a escolha dos agregados deve ser feita com bastante cuidado. Ainda assim, a forma mais eficiente para controlar a exploso de agregados, mas ainda assim beneficiar-se de seu valor, garantir que, em mdia, cada agregado resuma no mnimo 20 e, de preferncia, 20 ou mais itens de nvel bsico. importante lembrar que um determinado agregado pode servir para acelerar uma consulta que requeira um agregado de nvel superior, ou seja, se existe um agregado de nvel intermedirio na hierarquia, este pode ser utilizado, no sendo necessrio executar a consulta agregando o nvel mais detalhado.
Figura 22 Representao de uma nica tabela fato contendo informaes de nvel detalhado e de agregados associados dimenso Geografia. Como podemos verificar, na Figura 22, a tabela fato continua sendo nica, contendo as linhas de fatos para os nveis detalhados e agregados da dimenso. No exemplo, foram representados parcialmente dois agregados unidirecionais, sendo: Agregado: Item de produto por dia por Estado e
Portanto, na tabela fato acima, as linhas (1), (2), (3) e (4) representam valores associados aos nveis detalhados Item de produto, Dia e Loja, enquanto que as linhas (5), (6), (7), (8) e (9) representam os agregados. A grande desvantagem desta implementao a utilizao do campo Nvel que, como citado anteriormente, pode acarretar contagem dupla, se no for utilizado corretamente. Uma alternativa seria manter os fatos agregados em tabelas distintas, ou seja, uma tabela de fatos para cada agregado. Como vantagens desta alternativa de implementao pode-se citar: No ocorrer contagem dupla em qualquer aplicao que utilize as tabelas;
Os vrios tipos de agregados podem ser criados, eliminados, carregados e indexados separadamente quando esto em tabelas diferentes. Como eles provavelmente sero introduzidos no banco de dados em momentos diferentes, o uso de tabelas separadas permite um gerenciamento incremental.
Em um esquema do tipo Snowflake, a implementao mais adequada , obviamente, a utilizao de tabelas fato separadas por agregado, j que as dimenses so tambm separadas. No h motivos para implementar o atributo Nvel em um esquema do tipo Snowflake unicamente para manter os agregados em apenas uma tabela fato.
pode-se citar os problemas relativos s alteraes necessrias no programas de carga devido a novas verses dos gerenciadores de bancos de dados que podem levar a modificaes na estrutura dos logs.
Comparao das informaes: apesar de conceitualmente simples, uma opo bastante trabalhosa para executar. Consiste em desenvolver um programa que leia os dados nas bases fonte e no data warehouse, identificando as alteraes ocorridas desde a ltima execuo da carga. Este mtodo caro, no que se refere aos recursos de mquina necessrios para comparao dos dados e pode ser muito demorado, dependendo do tamanho das bases pesquisadas e dos recursos disponveis para o processamento. Reengenharia dos sistemas aplicativos transacionais: esta opo no se mostra muito atrativa, j que requer que as aplicaes em produo sejam alteradas com o objetivo de armazenar, em arquivos destinados para este fim, as modificaes ocorridas nos dados fonte. Ocorre, porm, que a maioria das aplicaes no pode sofrer facilmente um processo de reengenharia, sendo que esta opo, em muitas situaes, s poderia ser empregada nas novas aplicaes a serem desenvolvidas. Neste caso, as necessidades do data warehouse passariam a fazer parte da especificao da aplicao.
Aps sua captura, os dados devem passar por uma etapa de transformao, j que, simplesmente obt-los do ambiente fonte e pass-los para o data warehouse no suficiente. necessrio, com o objetivo de otimizar o potencial do data warehouse, transformar as entidades obtidas em novas composies de entidades requeridas para processo de gerao de informao relevante para o usurio. Alm da transformao, os dados passam por um processo de enriquecimento, que , normalmente, um produto da integrao de dados e ocorre quando um atributo adicional acrescentado a uma entidade. Se um dado externo est sendo acrescentado ao data warehouse, uma entidade Cliente, por exemplo, pode ser enriquecida com este novo atributo que foi selecionado de fontes econmicas, demogrficas, financeiras, etc. Estas fontes podem ser valiosas para o enriquecimento das informaes, porm mais valiosas ainda, podem ser as prprias aplicaes do data warehouse cujos atributos podem ser derivados dos padres de comportamento analisados. Uma outra etapa necessria migrao dos dados envolve um mecanismo de transporte partindo do ambiente operacional para o data warehouse. Estes dois ambientes podem estar localizados em distintas plataformas, alm da possibilidade de estarem fisicamente remotas levando a uma maior dificuldade na transferncia dos dados. Por ser inconcebvel um meio de transporte de dados que no seja eletrnico, a implementao do mecanismo de transporte pode envolver uma avaliao de todas as opes disponveis, j que diferentes fabricantes podem oferecer diferentes opes proprietrias com custos, capacidades e limitaes bastante distintas. Ao considerar a velocidade da transferncia, deve-se levar em conta cada aspecto envolvido no processo, seja na plataforma de origem ou na plataforma destino. Esta anlise particularmente importante para determinar, no contexto considerado, o tempo disponvel para a execuo desta etapa nas plataformas envolvidas. Na seqncia do processo de carga um fator muito importante est relacionado a garantir a integridade dos dados que esto sendo adicionados ao data warehouse. Este controle de integridade deve ser implementado de forma a garantir dois aspectos. O primeiro deles a garantia de que os dados extrados dos sistemas de origem so exatamente os mesmos que esto sendo carregados no data warehouse. O segundo aspecto deve garantir que os dados que esto sendo carregados esto consistentes com os dados que foram pedidos para as bases de origem em um determinado instante no tempo. A reformatao dos dados pode tambm ser uma etapa necessria neste processo, uma vez que os ambientes de origem e o data warehouse podem estar em ambientes computacionais heterogneos, que muitas vezes causa problemas relacionados ao formato dos dados. O problema mais comumente encontrado refere-se s diferenas entre os formatos de arquivos em EBCDIC, encontrados nos ambientes IBM e os formatos ASCII utilizados pela maioria das outras plataformas. Como ltimo passo do processo, encontramos a etapa de carga dos dados que depende, obviamente, do volume de dados envolvido no processo. Pode ser que o tempo necessrio para a carga dos dados adicionado ao tempo requerido para transferi-los, provoque um impacto negativo na disponibilidade do data warehouse para os usurios. Portanto, devem ser
considerados todos os aspectos que possam dificultar este processo. Um destes aspectos a quantidade de ndices criados nas tabelas do data warehouse. Uma grande quantidade de ndices adequados agiliza a execuo das consultas, objetivo primrio de um data warehouse, no entanto, este alto nvel de indexao pode diminuir sensivelmente a velocidade do processo de carga. fcil perceber, aps uma anlise das etapas necessrias ao processo de carga, a alta complexidade desta tarefa que, se no for definida com bastante cuidado, pode levar introduo de erros, comprometendo todo o processo de tomada de deciso executado pelos usurios. Alm disso, qualquer alterao na arquitetura dos sistemas transacionais e nas bases de origem deve ser detalhadamente verificada, j que pode causar alteraes em vrias etapas do processo de carga.
APNDICE A
Em construo.
APNDICE B
Exerccios Processamento de transaes e controle de concorrncia 1) Defina o conceito de atomicidade de transaes e suas propriedades. 2) Considere o grafo de precedncia da figura abaixo. possvel encontrar um escalonamento serivel e seus escalonamentos seriais equivalentes? Justifique sua resposta.
T0 T1
T3
T2
T4
3) Quais dos seguintes escalonamentos so seriveis? Para cada escalonamento serivel determine os escalonamentos seriais equivalentes. a. r1(X); r3(X); w1(X); r2(X); w3(X); b. r1(X); r3(X); w3(X); w1(X); r2(X); c. r3(X); r2(X); w3(X); r1(X); w1(X); d. r3(X); r2(X); r1(X); w3(X); w1(X); 4) Considere as trs transaes T1, T2 e T3 e os escalonamentos S1 e S2 descritos abaixo. Esboce os grafos de seriao (precedncia) para S1 e S2. Verifique se so seriveis e se for o caso determine os respectivos escalonamentos seriais. T1: r1(X); r1(Z); w1(X); T2: r2(Z); r2(Y); w2(Z); w2(Y); T3: r3(X); r3(Y); w3(Y); S1: r1(X); r2(Z); r1(Z); r3(X); r3(Y); w1(X); w3(Y); r2(Y); w2(Z); w2(Y); S2: r1(X); r2(Z); r3(X); r1(Z); r2(Y); r3(Y); w1(X); w2(Z); w3(Y); w2(Y);
5) Considere as duas transaes abaixo com valores iniciais de X=Y=0. possvel encontrar um escalonamento serivel equivalente ao escalonamento serial T0, T1 ? T0: read(X); read(Y); if X = 0 then (Y = Y+1, write(Y)); T1: read(Y); read(X); if Y = 0 then (X = X+1; write(X)); 6) Mostre que o protocolo de bloqueio em duas fases garante a seriao de conflitos de escalonamentos. Tambm mostre que tal protocolo tambm garante escalonamentos estritos (escalonamentos nos quais as transaes no podem ler nem gravar um item X at que a ltima transao que gravou X tenha sido confirmada ou abortada).
Referncias Bibliogrficas
[1] E. F. Codd. A Relational Model of Data for Large Shared Data Banks. Revista CACM volume = 6,1970. C. J. Date. Introduo a Sistema de Banco de Dados. Editora Campus, 2000 S. Sudarshan and A. Silberschatz and F. Henry Korth. Sistemas de Banco de Dados. 3. Edio. Editora Makron Books, 1999 E. R. Elmasri and S. Navathe and. Fundamentals of Database Systems. Editora Addison Wesley Pub, 2001. Jennifer Widow and Jeffrey Ullman .A First Course in Database Systems. Editora Prentice Hall, 1997. M Jackson .Thirty years (and more) of databases .Revista Information and Software Technology, volume = "41", pginas =969-978, 1999. R. Ramakrishnan and J. Gehrke. Database Management Systems. 2a. Edio. McGraw-Hill, 2000. C. Adamson, M. Venerable. Data Warehouse Design Solutions, John Wiley & Sons, 1998. E. Baralis, S. Paraboschi, E. Teniente. Materialized view selection in a Multidimensional Database. Proceedings of the 23rd VLDB Conference, Atenas, Grcia, 1997. A. Gupta e I. S. Mumick. What is the data warehousing problem? (Are materialized views the answer?). Proceedings of the 22nd VLDB Conference, Mumbai (Bombay), ndia, 1996. M. Golfarelli, D. Maio, S. Rizzi. Conceptual Design of Data Warehouses from E/R Schemes, Proceedings of the Hawaii International Conference on System Sciences, Kona, Hawaii, USA, 1998. Information Advantage, Decision PathTMImplementation Methodology. MyEureka!TM data warehouse requirements guide, 1999. W. H. Inmon, R. D. Hackathorn. Como usar o Data Warehouse. Infobook, Rio de Janeiro, 1997. S. Kelly. Data Warehousing The Route to Mass Customization, John Wiley & Sons, 1994. R. Kimball. The data warehouse toolkit. John Wiley & Sons, 1996. N. Raden. Technology Tutorial: Modeling a Data Warehouse, disponvel em: http://techweb.cmp.com/iw/564/64oldat.htm, 1996. S. Samtani, M. Mohania, V. Kumar, Y. Kambayashi. ER Workshops, 1998, pg. 81-92. R. Tanler. The Intranet Data Warehouse, John Wiley & Sons, 1997. Y. Zhuge, H. Garcia-Molina, J. Hammer e J. Widom. View maintenance in a warehousing environment. Technical report, Stanford University. Disponvel: ftp://db.stanford.edu como pub/zhuge/1994/anomaly-full.ps. Outubro de 1994. [2] [3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15] [16]