A Arte das Bases de Dados

Propaganda
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
Download