Carlos Pampulim Caldeira A arte das Carlos Pampulim Caldeira é Professor Auxiliar no Departamento de Informática da Universidade de Évora (www.di.uevora.pt/~ccaldeira), tem um Doutoramento em Sistemas de Informação pela Universidade Técnica de Lisboa, é membro da Association for Computing Machinery, da European Association of Software Science and Tecnology e do Independent Oracle Users Group. É pioneiro na utilização de sistemas de bases de dados em Portugal, desenvolveu e coordena diversas disciplinas nas áreas das bases de dados, data warehousing e business intelligence. Desenvolve desde 2000 investigação na área da Ecologia da Informação. Coordenou o desenvolvimento de vários projectos de bases de dados na Administração Pública e em empresas privadas. O planeamento é a mãe de todo o sucesso. Uma ideia tão simples que se expressa numa única linha, mas que no entanto não é habitualmente levada a sério. BASES DE DADOS Ao longo de cerca de um quarto de século dedicado ao ensino e investigação de matérias associadas com o mundo das bases de dados relacionais, tenho-me deparado com inúmeras situações em que a pressa e o desleixo na conceptualização destes sistemas têm conduzido a produtos imaturos, pouco rigorosos, e imediatamente desactualizados desde o seu primeiro dia de funcionamento. Os resultados provocados nas organizações por esses maus produtos variam entre dois extremos: o completo desinteresse pelo conceito de «base de dados» até ao colapso organizativo e económico da entidade que encomendou uma base de dados e recebeu uma tulha de dados. O «fazer» uma base de dados é mais do que construir meia dúzia de tabelas num modo ad hoc com a esperança de que a velocidade de desenvolvimento daí resultante consiga impressionar o utilizador final; a construção de uma base de dados é um processo sujeito a normas analíticas e técnicas precisas e bem conhecidas que devem ser seguidas em determinada ordem, desde a etapa de conceptualização até à fase de construção física da base de dados. Assim como um cirurgião ortopedista segue um determinado procedimento para reparar uma fractura num osso, também o especialista em base de dados tem que obedecer a uma conduta tecnológica de modo a obter um produto final válido tecnicamente, e que devolva à organização um valor acrescentado. O segredo no sucesso no desenvolvimento de Sistemas de Informação em geral e, em particular em Base de Dados Relacionais, é assim a organização. O conteúdo deste livro destina-se a «meros mortais» como sejam, por exemplo, gestores ou investigadores e estudantes nas mais variadas áreas da ciência e tecnologia. Os temas são apresentados de uma forma simples, sem a complexidade desnecessária habitual em certos livros de informática, nem a superficialidade existente noutros. de Dados 9 789726 186274 Bases Bases de Dados Com exemplos de aplicação para Oracle e SQL Server 398 ISBN 978-972-618-627-4 A arte das A arte das E D I ÇÕ E S S Í L A B O A Arte das Bases de Dados Com exemplos de aplicação para Oracle e SQL Server O Fundamental sobre Bases de Dados Desenho do Modelo de Dados Desenvolvimento da Aplicação Exploração da Informação A Ecologia da Informação Administração CARLOS PAMPULIM CALDEIRA EDIÇÕES SÍLABO É expressamente proibido reproduzir, no todo ou em parte, sob qualquer forma ou meio, NOMEADAMENTE FOTOCÓPIA, esta obra. As transgressões serão passíveis das penalizações previstas na legislação em vigor. Visite a Sílabo na rede www.silabo.pt Editor: Manuel Robalo FICHA TÉCNICA: Título: A Arte das Bases de Dados Autor: Carlos Pampulim Caldeira © Edições Sílabo, Lda. Capa: Pedro Mota 1ª Edição, 1ª Impressão – Lisboa, Julho de 2011. 1ª Edição, 2ª Impressão – Lisboa, Janeiro de 2015. Impressão e acabamentos: Europress, Lda. Depósito Legal: 329842/11 ISBN: 978-972-618-627-4 EDIÇÕES SÍLABO, LDA. R. Cidade de Manchester, 2 1170-100 Lisboa Tel.: 218130345 Fax: 218166719 e-mail: [email protected] www.silabo.pt Índice ÍNDICE DE FIGURAS E QUADROS 11 CONVENÇÕES USADAS NESTE MANUAL 15 PREFÁCIO 17 Parte 1 Introdução às bases de dados 1. Introdução 21 1.1. Os sistemas de bases de dados 1.1.1. Breve historial 1.1.2. O que é uma base de dados relacional? 1.1.3. Vantagens (e desvantagens) dos sistemas de base de dados 2. Descrição dos elementos de uma base de dados 23 23 25 26 29 2.1. A tabela 29 2.2. A chave primária 31 2.3. A integridade da informação 34 2.4. Regras de integridade da informação 2.4.1. 2.4.2. 2.4.3. 2.4.4. 2.4.5. 2.4.6. 2.4.7. 2.4.8. 2.4.9. A regra do NOT NULL Integridade da tabela Regra da unicidade A integridade referencial A restrição CHECK A restrição ASSERTION A definição de domínios Alteração de restrições Triggers 35 36 37 40 42 53 61 63 64 66 Parte 2 Os sistemas de bases de dados 3. Arquitectura de um sistema de base de dados 3.1. Constituição da base de dados 3.2. Estruturas lógicas de armazenamento 3.2.1. Base de dados e instância 3.2.2. Oracle: estruturas lógicas de armazenamento 3.2.3. SQL Server: estruturas lógicas de armazenamento z 3.3. Estruturas e desenho físico da base de dados 75 75 75 76 78 81 84 3.3.1. Tabelas 3.3.2. Tabelas temporárias 84 85 3.4. Desenho físico da base de dados 86 3.4.1. Objectivos e limitações 3.4.2. Estruturas de arquivos 3.5. Caminho de acesso aos dados 3.5.1. Joins 3.5.2. Join: mecanismo de acesso aos dados 86 88 93 93 103 3.6. Varrimento das tabelas 103 3.7. Acesso pelos índices 104 3.7.1. Acesso por índice clustered 3.8. Os índices e a ordenação dos dados 3.8.1. Order By 3.8.2. Distinct 3.8.3. Group By 3.9. A não utilização de índices 3.10. Reescrita de queries 3.10.1. Optimização com base no custo de acesso 109 110 111 111 112 113 113 117 3.11. Algumas regras para a optimização de scripts de SQL 118 3.11.1. Exemplo de aplicação de tabelas temporárias 120 4. SQL 123 4.1. Manipulação de dados 4.2. Definição da estrutura 4.2.1. 4.2.2. 4.2.3. 4.2.4. Criação de tabelas Restrições intra-relacionais Restrições inter-relacionais Alteração de objectos da base de dados 123 124 124 125 125 126 4.3. Queries – Teoria geral 126 4.4. A pesquisa de dados 128 4.4.1. Elementos básicos da cláusula SELECT 4.4.2. Pesquisa de dados sujeita a condições 4.4.3. Outros comandos de SQL 128 129 133 4.5. Introdução de dados 134 4.6. Remoção de dados 134 4.7. Alteração de dados 134 4.8. A utilização especializada de funções de agregação 135 5. O desenho da base de dados 137 5.1. Os sistemas simples 138 5.2. Os sistemas complexos 140 5.2.1. A semântica 141 5.3. Desenho do modelo de dados 5.3.1. Conceptualização de modelos de dados 142 145 5.4. Recolhas dos conceitos e especificações 147 5.5. O modelo de dados relacional 148 5.6. Domínios 150 5.7. Relações 5.7.1. Atributos 5.8. Construção da base de dados 5.8.1. Ligações entre as tabelas 154 156 157 159 Parte 3 Modelação de dados e ecologia da informação 6. Normalização do modelo de dados 163 6.1. Noções básicas 163 6.2. Dependências funcionais 165 6.3. Descrição do processo de normalização 6.3.1. 6.3.2. 6.3.3. 6.3.4. Etapas da normalização Primeira forma normal Segunda forma normal Terceira forma normal 167 167 168 169 172 7. A ecologia da informação 177 7.1. Qual a razão da mensagem limitada dos modelos clássicos? 179 7.2. Descrição do método 180 7.2.1. O que é um conceito? 7.3. A ecologia da informação 7.4. O carácter único da informação 7.4.1. A mutação genética da informação 7.5. A construção do nicho da informação 7.5.1. A quantificação da informação 7.5.2. Qual é a forma correcta de calcular o conteúdo informativo de um conceito? 181 181 183 184 184 185 187 Parte 4 Administração de base de dados 8. Pontos fundamentais em administração de bases de dados 8.1. A criação e manutenção de views 8.1.1. Views 191 193 193 8.2. Armazenamento de dados em views 195 8.3. Views e dependências entre objectos 195 8.4. Para que são utilizadas as views 195 8.4.1. Alteração de dados através de views 8.4.2. Regras para views com suporte em joins 8.5. Vistas em linha (Inline views) 8.6. Vistas materializadas 8.6.1. A actualização de vistas materializadas 196 198 198 199 200 8.7. Criação de vistas materializadas 200 8.8. A gestão de utilizadores em bases de dados 201 8.9. A linguagem DCL 203 8.10. Tipos de privilégios 204 8.10.1. Privilégios de sistema 8.10.2. Privilégios sobre objectos 204 205 8.11. A autenticação de utilizadores 206 8.12. Tipo de autorizações 207 8.12.1. Os privilégios em tabelas e views 207 8.13. Os níveis de acesso aos dados 207 8.14. Planeamento da gestão de utilizadores 208 8.14.1. Matriz de autoridade de nível 1 8.14.2. Matriz de autoridade de nível 2 208 209 8.15. Gestão dos níveis de acesso 8.15.1. Consola da linha de comandos 8.15.2. Aplicações gráficas 8.15.3. Disponibilização das autorizações 8.16. Gestão de alterações na base de dados 210 211 213 213 214 Parte 5 Glossário de funções de SQL 219 ÍNDICE REMISSIVO 251 Índice de figuras e quadros ■ FIGURAS Figura 1-1. A evolução no processamento de dados 23 Figura 2-1. Algumas linhas da tabela Aluno 29 Figura 2-2. Interface gráfica para criar uma tabela em SQL Server 30 Figura 2-3. Tabela com chave primária baseada em ID’s 32 Figura 2-4. A chave primária da tabela Funcionário 33 Figura 2-5. O mesmo funcionário com duas chaves primárias distintas 33 Figura 2-6. Opção de not null em SQL Server 36 Figura 2-7. Como criar uma chave primária numa interface gráfica 38 Figura 2-8. Identificação de um campo chave primária 38 Figura 2-9. Valor repetido na coluna que é chave primária 39 Figura 2-10. Valor repetido na coluna Denominação na presença de um índice único 41 Figura 2-11. Gestão de índices em SQL Server 42 Figura 2-12. Ver chave primária e índices únicos em Oracle 42 Figura 2-13. Ver as chaves estrangeiras na tabela Disciplina no Curso em Oracle 45 Figura 2-14. Ver as chaves estrangeiras na tabela Disciplina no Curso em SQL Server 45 Figura 2-15. Diagrama representando três tabelas associadas por duas regras de integridade referencial (em SQL Server) 46 Figura 2-16. Primeiro passo no processo de criação gráfica da integridade referencial (SQL Server) 47 Figura 2-17. Segundo passo no processo de criação gráfica da integridade referencial (SQL Server) 47 Figura 2-18. Tabelas curso e disciplina com linhas de dados 48 Figura 2-19. Erro em chave estrangeira (SQL Server) 49 Figura 2-20. Opções da chave estrangeira em Oracle 52 Figura 2-21. Opções da chave estrangeira em SQL Server 52 Figura 2-22. Ver restrição check sobre a coluna sexo em SQL Server 56 Figura 2-23. Ver restrição check sobre a coluna sexo em Oracle 56 Figura 2-24. Erro na entrada de dados no campo Número devido a um check ao nível dessa coluna 58 Figura 2-25. Check sobre datas na tabela «disciplina no curso» 61 Figura 2-26. Tabelas para a asserção de controlo de regências em disciplinas. 62 Figura 2-27. Os triggers e a sua relação com os comandos DML 67 Figura 3-1. Exemplo de uma tabela de uma base de dados 76 Figura 3-2. Estruturas lógicas de armazenamento 79 Figura 3-3. Diferenças entre as lógicas de armazenamento de dados do Oracle e SQL Server 82 Figura 3-4: Estrutura de uma b-tree com três níveis 89 Figura 3-5. Estrutura B-tree típica 89 Figura 3-6. Exemplo de funcionamento de um join 93 Figura 3-7. As tabelas curso e disciplina no curso no processo de join 94 Figura 3-8. Tabelas utilizadas para a análise de joins 94 Figura 3-9. Resultado de inner join 95 Figura 3-10. Denominação absoluta de uma coluna 96 Figura 3-11. Denominação ambígua de uma coluna num join 97 Figura 3-12. A utilização de aliases num join 97 Figura 3-13. A utilização de aliases em colunas 98 Figura 3-14. Diagrama de Venn com disciplinas atribuídas a cursos 98 Figura 3-15. Conjunto resultante de outer join 99 Figura 3-16. Diagrama de Venn para left outer join 100 Figura 3-17. Output produzido por um right outer join 101 Figura 3-18. Diagrama de Venn para full outer join 102 Figura 3-19. Resultado de full outer join 102 Figura 3-20. Análise exacta das folhas de um índice 106 Figura 3-21. Elemento de primeira ordem num índice 106 Figura 3-22. Análise sequencial das folhas de um índice 107 Figura 3-23. Criação de índices independentes 108 Figura 3-24. Descrição da tabela Funcionário 111 Figura 3-25. Distinct aplicado às colunas Cidade e Categoria 112 Figura 3-26 – Resultado de Group By 112 Figura 5-1. Praxis clássica para a construção de uma base de dados 143 Figura 5-2. Exemplo de uma generalização no modelo E-R. 144 Figura 5-3. Processo de desenho duma base de dados 147 Figura 5-4. Posição do modelo de dados no trabalho de construção de uma base de dados 149 Figura 5-5. Esquema da relação «Aluno» 155 Figura 5-6. Diagrama do modelo de dados sobre alunos e disciplinas 156 Figura 5-7. Esquema de uma base de dados 157 Figura 5-8. Criação da tabela inscrição na disciplina 158 Figura 6-1. O papel da normalização no suporte ao desenho de bases de dados 163 Figura 6-2. As dependências funcionais na relação «ESPÉCIE» 166 Figura 6-3. Relação entre as diferentes formas normais 167 Figura 8-1. Matriz de responsabilidades num sistema de base de dados 191 Figura 8-2. Exemplo de matriz de autoridade de nível 1 para uma base de dados de pequena dimensão 209 Figura 8-3. Matriz de autoridade de nível 2 209 Figura 8-4. Separador de folha de cálculo como elemento organizativo das autorizações numa base de dados 210 Figura 8-5. Associação entre um papel da base de dados e os utilizadores reais em SQL Server 214 Figura 8-6. Método na gestão de alterações 215 Figura 8-7. Hierarquia de objectos numa base de dados 216 ■ QUADROS Quadro 2-1. Tipos de dados genéricos em sistemas de base de dados 31 Quadro 3-1. Coluna com valores de A a E e respectivos valores de mapa de bits 91 Quadro 3-2. Tabela Funcionário da Universidade com 6 linhas 92 Quadro 3-3. Índice bitmap para a coluna Categoria 92 Quadro 5-1. Índice de preços no consumidor em Janeiro de 2008 150 Quadro 5-2. Quadro com a operação binária equivalência material 154 Quadro 6-1. Dependências funcionais entre dois atributos 166 Quadro 6-2. Tabela com dados sobre veículos 168 Quadro 6-3. Relação «Veículo» na primeira forma normal 169 Quadro 6-4. Relação «Concessionário» 170 Quadro 6-5. Relação «Veículo» na segunda forma normal 171 Quadro 6-6. Relação «Abastecimento» 172 Quadro 6-7: Relação «Combustível» 173 Quadro 6-8. Relação «Custo de Combustível» 173 Quadro 8-1. Lista de privilégios para tabelas 207 Quadro 8-2. Planeamento de autorizações a nível das tabelas 208 Convenções usadas neste manual Comandos em SQL SELECT Letra maiúscula Nome dos objectos da base de dados aluno Letra minúscula Aspas «Nome do Aluno» Denominação completa dos objectos da base de dados Parêntesis recto [NOT NULL] Cláusula opcional Chavetas {ON | OFF} Deve introduzir-se obrigatoriamente uma das condições separadas pelo «|». As chavetas e o «|» não são para incluir no comando Itálico n Parâmetro que se destina a ser substituído por um valor Prefácio O planeamento é a mãe de todo o sucesso. Uma ideia tão simples que se expressa numa única linha, mas que no entanto não é habitualmente levada a sério. Ao longo de cerca de um quarto de século dedicado ao ensino e investigação de matérias associadas com o mundo das bases de dados relacionais, tenho-me deparado com inúmeras situações em que a pressa e o desleixo na conceptualização destes sistemas têm conduzido a produtos imaturos e com pouco rigor técnico. Os resultados provocados nas organizações por esses maus produtos variam entre dois extremos: o completo desinteresse pelo conceito de «base de dados» até ao colapso organizativo e económico da entidade que encomendou uma base de dados e recebeu uma tulha1 de dados. O «fazer» uma base de dados é mais do que construir meia dúzia de tabelas num modo ad hoc com a esperança de que a velocidade de desenvolvimento daí resultante consiga impressionar o utilizador final; a construção de uma base de dados é um processo sujeito a normas analíticas e técnicas precisas e bem conhecidas que devem ser seguidas em determinada ordem, desde a etapa de conceptualização até à fase de construção física da base de dados. Assim como um cirurgião ortopedista segue um determinado procedimento para reparar uma fractura num osso, também o especialista em base de dados tem que obedecer a uma conduta tecnológica de modo a obter um produto final válido tecnicamente, e que devolva à organização um valor acrescentado. O segredo no sucesso no desenvolvimento de Sistemas de Informação em geral e, em particular em Base de Dados Relacionais, é assim a organização. O conteúdo deste livro destina-se a «meros mortais» como sejam, por exemplo, gestores ou investigadores e estudantes nas mais variadas áreas da ciência e tecnologia. Os temas são apresentados de uma forma simples, sem a complexidade (1) Casa ou compartimento onde se depositam ou guardam cereais em grão. Dicionário Priberam da Língua Portuguesa. desnecessária habitual em certos livros de informática, nem o desleixo contextual existente noutros. Aliás, a grande questão que se coloca é mesmo essa: É possível falar de bases de dados de uma forma simples mas ao mesmo tempo eficaz? Eu penso que sim e desafio quem tiver interessado a ler este livro para poder tirar as suas próprias conclusões. Apesar de os exemplos de aplicação deste livro focarem essencialmente os dois softwares de gestão de bases de dados mais utilizados actualmente, o Oracle e o SQL Server, as soluções aqui apresentadas são tecnicamente sólidas e prontas a aplicar a diferentes casos da vida real, e são adaptáveis a todos os sistemas de gestão de bases de dados, comerciais ou open source. Finalmente, uma breve explicação sobre o título do livro, A Arte das Bases de Dados, tal como, por exemplo, na área da engenharia civil se desenham e constroem estruturas que se denominam obras de arte, então similarmente também no campo dos sistemas de informação pode considerar-se a análise, desenho e construção de bases de dados como obras de arte de tipo especial. Especiais porque, ao contrário de um aqueduto, não se vêm e têm um determinado grau de virtualidade pois «residem» num computador. Parte 1 Introdução às bases de dados 1. Introdução As bases de dados estão omnipresentes na nossa vida quotidiana. Interagimos com elas quando vamos ao Multibanco, escolhemos produtos num supermercado ou marcamos uma consulta no médico. São igualmente frequentes as notícias sobre elas nos meios de comunicação social, embora nem sempre pelas melhores razões; são frequentes as queixas das organizações e dos utilizadores sobre sistemas desajustados da realidade ou com baixos níveis de usabilidade. Em diversas organizações chave da nossa sociedade as bases de dados são, assim, mais conhecidas pelas suas deficiências, do que pelos benefícios que podem trazer ao funcionamento dessas mesmas organizações. O principal motivo pelo qual muitas bases de dados não se ajustam ao sistema que pretendem representar é, sem sombra de dúvida, a falta de uma interacção a priori com os utilizadores finais (gestores, dirigentes e outros utilizadores) que conduz a arquitecturas de bases de dados deficientes e, consequentemente, com pouca utilidade organizacional. Do mesmo modo que um arquitecto ou engenheiro civil projecta com todo o cuidado e detalhe uma obra, apresentando esquiços, desenhos finais, planos de pormenor e cadernos de encargos, também o arquitecto de base de dados tem que seguir um procedimento normalizado que assegure a qualidade do produto final. Se no planeamento e construção de um edifício se omitir, ou desleixar, alguma etapa obrigatória corre-se o risco de a construção ruir; em bases de dados é a mesma coisa: uma aplicação sem modelo de dados bem definido, ou sem entrevistas aos utilizadores ou sem planos de pormenor é uma aplicação sujeita ao fracasso técnico e, bastante mais grave, podendo provocar graves prejuízos económicos e financeiros na organização. Uma base de dados relacional é, deste modo, um tipo especial de sistema de informação que além de exigir um grande planeamento no seu desenho e posterior transformação num conjunto de tabelas, obriga ainda a grandes conhecimentos para sua gestão diária. Uma base de dados relacional é uma grande colecção de dados integrados num sistema de informação altamente estruturado. As bases de dados são construídas de acordo com o modelo de dados relacional. Os sistemas de gestão de bases de dados relacionais (SGBDR) são as aplicações comerciais ou open source sobre as quais podem ser desenvolvidas bases de dados na forma como os utilizadores normais as entendem. Os SGBDR incluem, por exemplo, além das estruturas de dados, os procedimentos de acesso aos dados e a meta informação sobre esses mesmos dados. Uma base de dados é um ser vivo que faz parte de um ecossistema em que o produto final é a transformação de dados em informação. Como todos os seres 22 A ARTE DAS BASES DE DADOS vivos, uma base de dados é uma entidade complexa pois além da sua própria fisiologia e morfologia tem ainda muitas trocas de informação e de metadados com os outros componentes do ecossistema de que faz parte. O desenho de bases de dados é uma tarefa potencialmente acessível a qualquer interessado em bases de dados, não é preciso ser um iluminado para poder desenhar uma base de dados. Este manual está dividido em quatro grandes partes: 1. Na primeira parte apresentam-se tópicos introdutórios à ciência das bases de dados: definições básicas, descrição dos seus elementos primários (as tabelas), e explicação das regras de integridade da informação (chave primária, integridade referencial, restrições check, asserções e triggers; 2. Na segunda secção analisam-se as arquitecturas lógica e física das bases de dados, a forma do desenho físico da base de dados e os caminhos de acesso aos dados. Esta parte inclui ainda um pequeno guia sobre a linguagem de interrogação de dados SQL; 3. Na terceira parte observam-se as regras fundamentais para a normalização da informação e, ainda, um capítulo especial que apresenta os fundamentos de uma nova ciência denominada de Ecologia da Informação; 4. Na última parte apresentam-se diversos temas relacionados com a administração de bases de dados: funções do administrador de bases de dados (DBA), criação de views e gestão de utilizadores. Um sistema de bases de dados é um conjunto de aplicações e mecanismos que asseguram o bom funcionamento das bases de dados. As etapas clássicas na construção de um sistema informático deste tipo podem resumir-se de acordo com os seguintes pontos: • Planeamento da base de dados; • Recolha de requerimentos e desenho conceptual da base de dados; • Desenho lógico da base de dados; • Desenvolvimento e construção física da base de dados; • Manutenção e gestão do sistema de bases de dados, incluindo a instalação, conversão e migração; • Formação e treino dos utilizadores finais da base de dados. Este manual debruça-se sobre os quatro primeiros pontos, fornecendo os elementos fundamentais que permitem o acesso às principais funções de planeamento, desenho e desenvolvimento de bases de dados relacionais. 23 INTRODUÇÃO ÀS BASES DE DADOS Também demonstrarei que o planeamento e desenvolvimento de uma base de dados pode ser realizada por pessoas normais desde que sigam um conjunto de normas apropriadas. Se partirmos do princípio de que a Arquitectura é uma arte associada a princípios científicos e técnicos, então por analogia podemos considerar que a construção de bases de dados é também um fenómeno artístico na medida em que sem a imaginação necessária o produto final é um mamarracho1 sem utilidade. Este livro tem como destinatários todos aqueles que querem compreender melhor o funcionamento interno de uma base dados; os que querem conhecer aquilo que está por detrás dos dados que se alinham em linhas e colunas nas tão bem conhecidas tabelas. Hoje em dia a utilização das bases de dados relacionais é um fenómeno transversal nos sistemas informáticos pelo que todos os seus utilizadores, sejam eles profissionais de informática, gestores, professores, investigadores ou estudantes, ganharão muito com a leitura deste manual. 1.1. Os sistemas de bases de dados 1.1.1. Breve historial A evolução do processamento de dados pode ser vista da seguinte forma (Figura 1-1): Figura 1-1. A evolução no processamento de dados Processamento básico de dados Gestão de ficheiros Base de dados Funções clássicas isoladas Processamento sobre ficheiros Tempo (1) Sinónimos: monte de lixo; má arquitectura. Independência entre dados e programas 24 A ARTE DAS BASES DE DADOS O processamento básico (ficheiros elementares, anos 1950/60) caracterizou-se por trabalhos isolados de programação; cada programa tinha os seus ficheiros. A manipulação dos dados estava reduzida às funções mais simples: ordenação, classificação, e realização de somatórios. O software pouco mais fazia do que o input/output sobre o mecanismo de armazenamento, normalmente numa banda magnética. Qualquer alteração à forma como os dados deveriam estar armazenados, implicava modificações nos programas, a sua recompilação e teste. A alteração num dado (como por exemplo um novo produto de limpeza) conduzia à criação dum novo ficheiro. O antigo continuava a existir e assim sucessivamente. A grande maioria dos ficheiros era utilizada numa só aplicação. Havia, portanto, um alto nível de redundância, com os mesmos dados multiplicados por um número indeterminado de ficheiros. No período áureo da utilização de aplicações de gestão de ficheiros (anos 1960/70), os procedimentos isolados de programação foram integrados em funções. Começaram a aparecer os primeiros casos de partilha de ficheiros entre programas diferentes. Ainda não era possível o acesso aos campos, só aos registos no seu todo. Por esta altura deram-se os primeiros passos, no sentido de isolar as aplicações dos efeitos perversos das alterações de hardware. Tal como no caso anterior também aqui os ficheiros eram, de uma forma geral, desenvolvidos com um único propósito. Desenvolvia-se, por exemplo, um conjunto de {ficheiros + programas} para o processamento de salários, e outro conjunto com as características dos funcionários. Muita da informação estava repetida e era incoerente entre os ficheiros, tendo que haver vários programas com finalidades praticamente idênticas. No início da década de 1980 surgiram os sistemas de gestão de base de dados que tinham a originalidade de gerirem os dados independentemente dos programas. As tabelas das bases de dados podem ser alteradas sem que isso obrigue à recompilação de todos os programas. A noção de modelo de dados tornou-se essencial para o desenvolvimento de bases de dados. Aos dados passaram a ser aplicados dois níveis de independência, a lógica e a física. A independência lógica significa que a estrutura lógica dos dados pode ser alterada sem consequências a nível de todos os programas. Por exemplo: adicionar novos campos a uma tabela, ou criar uma nova tabela. A independência física verifica-se quando a organização física dos dados pode ser alterada sem que isso acarrete uma modificação global na estrutura lógica dos dados e nos programas. Por exemplo: adicionar uma nova chave a uma tabela, ou distribuir a base de dados por dois ou mais computadores. A independência lógica é a mais difícil de atingir dado que os programas são altamente dependentes da estrutura lógica. INTRODUÇÃO ÀS BASES DE DADOS 25 1.1.2. O que é uma base de dados relacional? A expressão base de dados está intimamente associada à noção de «uma colecção de informação». De um ponto de vista mais teórico pode-se afirmar que uma base de dados é um conjunto estruturado de informação. Uma base de dados é uma colecção de dados formalmente definida, informatizada, partilhável e sujeita a um controlo central. Uma base de dados é uma colecção de dados interrelacionados com múltiplas utilizações. Uma base de dados relacional (daqui para diante a expressão base de dados é usada como sinónimo de base de dados relacional) é um sistema de gestão de informação relativamente complexo. Dado que a base de dados é a componente central do sistema, uma boa técnica de desenho é crucial para a eficácia do sistema. Se a função duma base de dados fosse simplesmente a de armazenar dados, a sua organização seria relativamente simples. A complexidade estrutural das bases de dados resulta do facto de que ela deve também mostrar as relações que existem entre os dados e as regras de funcionamento do sistema. Uma base de dados é composta por um conjunto de tabelas e associações entre as tabelas. A associação entre os dados é o ponto forte dos sistemas relacionais. As tabelas são formadas por linhas e colunas onde figuram os dados. Numa base de dados relacional os dados estão todos representados como valores nas colunas das tabelas. Neste tipo de aplicação os dados e os programas estão completamente separados. Já o mesmo não se passa, por exemplo, nas folhas de cálculo em que os dados e procedimentos estão frequentemente misturados. Os sistemas de gestão de bases de dados relacionais (SGBDR) são aplicações informáticas complexas, mas essenciais em muitas áreas científicas, nomeadamente na área das ciências Socio-Económicas, onde grandes quantidades de informação necessitam de ser combinadas, ou exploradas, de diversas formas nem todas fáceis de prever. Uma vantagem importante da tabela resulta do facto duma tabela poder ter mais do que uma finalidade e dos seus dados poderem ser vistos com diferentes formas e formatos, ao contrário de um ficheiro que tem um formato fixo. Um sistema de ficheiros clássicos tem os seguintes inconvenientes: • Redundância e inconsistência na informação. A mesma informação aparece por vezes duplicada devido à forma desorganizada de criar ficheiros e programas. Veja-se, por exemplo, o caso em que a composição de um medicamento 26 A ARTE DAS BASES DE DADOS pode estar registada simultaneamente nos ficheiros «Analgésicos» e «Analgésicos para o aparelho locomotor». Esta redundância é uma fonte potencial de inconsistência nos dados. A inconsistência pode verificar-se, por exemplo, quando a composição do analgésico A é modificada, e essa alteração só é feita no ficheiro «Analgésicos para o aparelho locomotor». Como os dados entre os dois ficheiros são agora incongruentes qualquer cruzamento de informação que se queira fazer é apenas uma mera conjectura: tanto pode dar um resultado válido como inválido. • Dificuldade em aceder à informação. Nos ficheiros não é fácil obter-se a informação que se quer, não só porque não se sabe onde está, bem como é preciso programar para colocar os dados à disposição dos utilizadores. É um processo fortemente dependente de pessoal especializado e no qual os utilizadores não se revêem, porque não têm qualquer tipo de autonomia no manuseio dos dados. • Dados isolados. Em consequência da distribuição dos dados em múltiplos ficheiros, a mesma informação pode estar com formatos diferentes em cada um deles. Isto torna particularmente difícil a programação de aplicações. • Integridade da informação. Os valores que os dados podem assumir estão normalmente sujeitos a certos tipos de restrições de integridade como por exemplo: uma unidade curricular não pode ter «-2» de duração semanal; ou não se deve atribuir mais de 10 ECTS a uma unidade curricular normal. Num ficheiro esta regra só pode ser assegurada através de linhas de código suplementares em cada um dos programas que aceda àqueles dados. Se em vez de uma, forem três ou quatro regras, então a dificuldade para conseguir manter a integridade dos dados aumenta exponencialmente. 1.1.3. Vantagens (e desvantagens) dos sistemas de base de dados As principais vantagens dum SGBDR, face a um vulgar sistema de ficheiros, são: • Resposta rápida aos pedidos de informação. Como os dados estão integrados numa única estrutura (a base de dados) a resposta a questões complexas processa-se mais velozmente. • Acesso múltiplo. O software de gestão de base de dados permite que os dados sejam acedidos de diversíssimas maneiras. Nomeadamente, os dados podem ser visualizados através de pesquisas sobre qualquer um dos campos da tabela. INTRODUÇÃO ÀS BASES DE DADOS 27 • Flexibilidade. Em consequência da independência entre dados e programas, qualquer alteração num desses elementos não implica modificações drásticas no outro. • Integridade da informação. Dada a absoluta exigência de não permitir a redundância, as modificações de dados são feitas num só sítio, evitando-se assim possíveis conflitos entre diferentes versões da mesma informação. • Melhor gestão da informação. Em consequência da localização central dos dados, sabe-se sempre como e onde está a informação. A principal, e mais significativa, desvantagem dos sistemas de gestão de base de dados é o seu custo, não tanto em termos de preço do software de base, mas fundamentalmente em despesas de desenvolvimento e de manutenção. É um tipo de software altamente sofisticado que requer, para o seu desenho, desenvolvimento e manutenção pessoal com formação adequada. Os custos resultantes duma má conceptualização são enormes. A construção duma base de dados deficiente tem consequências nefastas numa organização. Tanto em custos directos, como em termos psicológicos, ficando na memória da organização uma animosidade contra as «geniais» inovações tecnológicas. Carlos Pampulim Caldeira A arte das Carlos Pampulim Caldeira é Professor Auxiliar no Departamento de Informática da Universidade de Évora (www.di.uevora.pt/~ccaldeira), tem um Doutoramento em Sistemas de Informação pela Universidade Técnica de Lisboa, é membro da Association for Computing Machinery, da European Association of Software Science and Tecnology e do Independent Oracle Users Group. É pioneiro na utilização de sistemas de bases de dados em Portugal, desenvolveu e coordena diversas disciplinas nas áreas das bases de dados, data warehousing e business intelligence. Desenvolve desde 2000 investigação na área da Ecologia da Informação. Coordenou o desenvolvimento de vários projectos de bases de dados na Administração Pública e em empresas privadas. O planeamento é a mãe de todo o sucesso. Uma ideia tão simples que se expressa numa única linha, mas que no entanto não é habitualmente levada a sério. BASES DE DADOS Ao longo de cerca de um quarto de século dedicado ao ensino e investigação de matérias associadas com o mundo das bases de dados relacionais, tenho-me deparado com inúmeras situações em que a pressa e o desleixo na conceptualização destes sistemas têm conduzido a produtos imaturos, pouco rigorosos, e imediatamente desactualizados desde o seu primeiro dia de funcionamento. Os resultados provocados nas organizações por esses maus produtos variam entre dois extremos: o completo desinteresse pelo conceito de «base de dados» até ao colapso organizativo e económico da entidade que encomendou uma base de dados e recebeu uma tulha de dados. O «fazer» uma base de dados é mais do que construir meia dúzia de tabelas num modo ad hoc com a esperança de que a velocidade de desenvolvimento daí resultante consiga impressionar o utilizador final; a construção de uma base de dados é um processo sujeito a normas analíticas e técnicas precisas e bem conhecidas que devem ser seguidas em determinada ordem, desde a etapa de conceptualização até à fase de construção física da base de dados. Assim como um cirurgião ortopedista segue um determinado procedimento para reparar uma fractura num osso, também o especialista em base de dados tem que obedecer a uma conduta tecnológica de modo a obter um produto final válido tecnicamente, e que devolva à organização um valor acrescentado. O segredo no sucesso no desenvolvimento de Sistemas de Informação em geral e, em particular em Base de Dados Relacionais, é assim a organização. O conteúdo deste livro destina-se a «meros mortais» como sejam, por exemplo, gestores ou investigadores e estudantes nas mais variadas áreas da ciência e tecnologia. Os temas são apresentados de uma forma simples, sem a complexidade desnecessária habitual em certos livros de informática, nem a superficialidade existente noutros. de Dados 9 789726 186274 Bases Bases de Dados Com exemplos de aplicação para Oracle e SQL Server 398 ISBN 978-972-618-627-4 A arte das A arte das E D I ÇÕ E S S Í L A B O