Fundamentos de Bases de Dados

Page 1

9cm x 24cm

???mm

16,7cm x 24cm

16,7cm x 24cm

9cm x 24cm

Feliz Gouveia de Bases de Dados FELIZ GOUVEIA Este livro tem por objetivo, com base em princípios fundamentais da Engenharia de Software, apresentar regras e boas práticas na análise, conceção e desenvolvimento (projeto) de aplicações orientadas pelos objetos em geral, neste caso usando as construções da linguagem Java. O livro centra-se à volta da noção de projeto de software, sendo apresentados projetos sobre todos os assuntos essenciais à Programação Orientada pelos Objetos (POO), designadamente (além dos básicos):

Dirigido aos estudantes de programação; aprofunda o estudo dos vários tipos de algoritmos expondo a análise experimental e formal da sua complexidade. Pseudocódigo compatível com C e Java.

.. .. .

Classes e Instâncias; Encapsulamento, Modularidade e Reutilização; Todas as Coleções de Java (JCF); Hierarquia de Classes, Classes Abstratas, Herança, Interfaces e Polimorfismo; Streams de I/O.

Em cada capítulo apresenta-se uma síntese teórica dos assuntos abordados, as construções de Java necessárias ao projeto exemplo e, em seguida, vários exercícios que são analisados e completamente implementados em Java. Este livro tem como principais destinatários estudantes de nível secundário e universitário e profissionais de informática em geral.

Principais temas abordados no livro:

. . . . . . .

Tipos Primitivos e Estruturas de Controlo; Arrays; Classes; Coleções de Java: ArrayList<E>, HashSet<E> e TreeSet<E>; Hierarquia de Classes, Herança, Classes Abstratas e Polimorfismo; Coleções de Java: HashMap<K,V> e TreeMap<K,V>; Streams de I/O.

Bases de Dados Bases de Dados

Este livro, com múltiplos exemplos práticos, apresenta as bases e os conceitos que permitem compreender e aplicar as várias fases do desenvolvimento iterativo de uma boa interface utilizador.

Pela sua estrutura, pode ser usado quer como livro de base para as aulas práticas de laboratório, quer como livro de texto no caso de disciplinas com uma abordagem de ensino essencialmente prática.

Este livro disponibiliza ainda a correspondência dos principais termos técnicos para o português do Brasil.

Código fonte de todos os exercícios e projetos do livro disponível em www.fca.pt, até este se esgotar ou ser publicada nova edição atualizada ou com alterações.

ISBN 978‐972‐722‐799‐0

9 789727 227990

Feliz Gouveia

Livro indispensável na criação e desenvolvimento de jogos digitais: programação de jogos para web, dispositivos móveis e Windows 8. Com Python, Pygame, HTML5 e outros. Para estudantes e profissionais.

Professor Associado do Departamento de Informática da Universidade do Minho. É responsável por disciplinas de licenciatura e de mestrado nas áreas de Paradigmas e Metodologias da Programação, Metodologias e Tecnologias de Objetos e Arquiteturas de Software. Os Modelos de Componentes e as Arquiteturas de Software Multicamada e Multifuncionais são as suas atuais áreas de interesse. Autor dos livros JAVA6 e Programação Orientada pelos Objectos, JAVA5 e Programação por Objectos e Programação Orientada aos Objectos em JAVA2, também publicados pela FCA.



Índice Geral

1 Introdução

1

1.1 As Bases de Dados

1

1.2 Cenários de utilização

2

1.3 Os SGBD

2

1.4 Transações

3

1.5 Arquitetura de um SGBD

6

1.6 O Modelo Relacional

9

1.7 Níveis ANSI/SPARC

10

1.8 Projeto de Bases de Dados

11

1.9 Vantagens de um SGBD

13

1.10 Breve histórico

14

1.11 Aplicações

16

1.12 Organização do livro

17

EXERCÍCIOS

21

2 O Modelo Relacional

23

2.1 Introdução

23

2.2 O Modelo Relacional de Dados

24

2.3 Restrições de integridade

27

2.3.1 Noção de chave

27

2.3.2 Outras restrições

29

2.4 Vistas

30

2.5 A Álgebra Relacional

31

2.5.1 Operadores

31

2.5.1.1 Operadores sobre conjuntos

32

2.5.1.2 Seleção

33

2.5.1.3 Projeção

34

2.5.1.4 Produto

34

2.5.2 Extensões aos operadores

35

2.5.2.1 Renomear

35

2.5.2.2 Junção

36

2.5.2.3 Eliminar duplicados

37 © FCA – Editora de Informática

V


FUNDAMENTOS DE BASES DE DADOS

2.5.2.4 Ordenar

38

2.5.2.5 Agrupar e agregar

38

2.5.2.6 Junções externas

39

2.5.2.7 Semi-junção

40

2.5.2.8 Anti-junção

41

2.5.2.9 Auto-junção

41

2.5.3 Leis algébricas

43

2.5.4 Tratamento de valores nulos

44

2.5.5 Consultas

46

2.5.6 Consultas monotónicas e não-monotónicas

47

2.6 Cálculo Relacional

48

2.6.1

Fórmulas, quantificadores e variáveis

49

2.6.2 Tradução dos operadores da Álgebra

49

2.6.3 Consultas

50

2.7 Requisitos de um sistema relacional

51

EXERCÍCIOS

55

57

3 Projeto de Bases de Dados

3.1 Introdução

57

3.2 Modelos concetuais

58

3.3 O Modelo Entidade-Relacionamento

58

3.3.1 Diagrama E-R

60

3.3.2 Multiplicidade de relacionamentos

60

3.3.3 Entidades fracas

61

3.3.4 Entidades associativas

62

3.3.5 Generalização e especialização

63

3.3.6 Relacionamentos n-ários

64

3.3.6.1 Análise de relacionamentos de grau 3

65

3.3.6.2 Decomposição em relacionamentos binários

66

3.3.7 Mapeamento E-R em Relacional

66

3.4 Escolha das Relações

67

3.4.1 Dependências Funcionais

68

VI

© FCA – Editora de Informática


Índice Geral

3.4.1.1 Determinação de dependências

70

3.4.1.2 Cálculo do fecho de F

3.4.1.3 Cálculo do fecho de um atributo

72

3.4.1.4 Equivalência de conjuntos de DF

73

3.4.1.5 Cobertura de F

73

71

3.4.2 Dependências de inclusão

74

3.4.3 Chaves e Superchaves

75

3.4.4 Definição do esquema

76

3.5 Normalização

77

3.5.1 Decomposição sem perdas

78

3.5.2 Preservação de dependências

79

3.6 Formas normais

80

3.6.1

Primeira Forma Normal

81

3.6.2 Segunda Forma Normal

82

3.6.3 Terceira Forma Normal

83

3.6.4 Forma Normal de Boyce-Codd

85

3.6.5 Dependência funcional multivalor

88

3.6.6 Quarta Forma Normal

90

3.6.7 Dependências de junção

92

3.6.8 Algoritmos de perseguição

92

3.6.9 Quinta Forma Normal

94

3.6.10 Sexta forma normal

96

3.6.11 Resumo das formas normais

96

EXERCÍCIOS

100

103

4 SQL

4.1 Introdução

103

4.2 Linguagem de definição de dados

104

4.2.1 Esquemas

104

4.2.2 Criação de tabelas

105

4.2.2.1 Tipos de dados

105

4.2.2.2 Restrições de integridade

106 © FCA – Editora de Informática

VII


FUNDAMENTOS DE BASES DE DADOS

4.2.3 Restrições

107

4.2.4 Criação de domínios

108

4.2.5 Criação de Tipos de Dados

108

4.2.6 Remoção e Alteração de tabelas

109

4.2.7 Vistas

110

4.2.8 Índices

110

4.2.9 Triggers

111

4.2.10 Asserções

112

4.3 Linguagem de manipulação de dados

112

4.3.1 Seleções e projeções

113

4.3.1.1 Valores nulos

114

4.3.2 Ordenação

114

4.3.3 Agrupamentos

114

4.3.4 Agregações

115

4.3.5 Junções

116

4.3.5.1 Junções internas

116

4.3.5.2 Junções externas

117

4.3.6 Consultas imbricadas

117

4.3.6.1 Consultas não-correlacionadas

118

4.3.6.2 Consultas correlacionadas

118

4.3.6.3 Semi-junções

119

4.3.6.4 Anti-junções

119

4.3.7 Operadores existenciais e Universais

120

4.3.8 Divisão

120

4.3.8.1 Tradução da consulta algébrica

121

4.3.8.2 Com quantificação

121

4.3.8.3 Com comparação de cardinalidades

121

4.3.8.4 Com inclusão de conjuntos

122

4.3.9 Operadores sobre conjuntos

122

4.3.10 Inserção

122

4.3.11 Atualização

123

VIII

© FCA – Editora de Informática


Índice Geral 4.3.12 Remoção

123

4.4 Linguagem de Controlo de Dados

124

EXERCÍCIOS

126

129

5 Armazenamento e Indexação

5.1 Introdução

129

5.2 Gestor de Armazenamento

130

5.3 Registos

130

5.3.1 Registos de comprimento fixo

130

5.3.2 Registos de comprimento variável

131

5.4 Organização de ficheiros

132

5.4.1

132

Ficheiros Heap

5.4.2 Ficheiros sequenciais

133

5.4.3 Ficheiros Hashing

134

5.4.4 Ficheiros cluster

134

5.5 Armazenamento

135

5.5.1 Discos

135

5.5.2 Modelo N-ário

137

5.5.3 DSM

138

5.5.4 PAX

139

5.5.5 Clotho

141

5.5.6 Outros modelos

142

5.6 Índices

142

5.7 Índices arborescentes

144

5.7.1

Índices agrupados

145

5.7.2

Índices não-agrupados

146

5.7.3

Índices densos

147

5.7.4

Índices esparsos

147

5.7.5

Índices compostos

148

5.7.5.1 Combinação de índices

148

5.7.6

Índices com funções

149

5.7.7

Índices parciais

149 © FCA – Editora de Informática

IX


FUNDAMENTOS DE BASES DE DADOS

5.7.8

Índices multinível

150

5.7.9

B-Trees

150

5.7.9.1 Inserção e remoção

152

5.7.10 B+-Trees

153

5.7.11

157

Variantes da B+-Tree

5.7.12 Consultas com ordenação

158

5.8 Hashing

159

5.8.1 Hashing extensível

160

5.8.2 Hashing linear

162

5.9 Índices Bitmap

163

5.10 GiST

164

5.11 Índices multidimensionais

165

5.11.1 Consultas multidimensionais

166

5.11.2

166

Índices multidimensionais arborescentes

5.11.3 Índices multidimensionais de Grelha

168

5.12 Índices e desempenho

169

5.13 Criação de índices em SQL

170

EXERCÍCIOS

173

175

6 Consultas

6.1 Introdução

175

6.2 Catálogo da base de dados

177

6.3 Processamento de consultas

178

6.3.1

178

Fases do processamento

6.3.2 Análise Sintática

179

6.3.2.1 Forma canónica SPJ

180

6.3.3 Plano Lógico

180

6.3.3.1 Fusão de vistas

181

6.3.3.2 Transformação de subconsultas

182

6.3.3.3 Forma Normal Conjuntiva

183

6.3.3.4 Transformações de planos

184

6.3.3.5 Regras de equivalência

186

X

© FCA – Editora de Informática


Índice Geral 6.3.4 Plano Físico

188

6.4 Operadores físicos

189

6.4.1 Noção de custo

189

6.4.2 Seleção

192

6.4.2.1 Varrimento sequencial

192

6.4.2.2 Seleção com índices

193

6.4.2.3 Seleção com comparações

195

6.4.2.4 Seleção complexa

195

6.4.2.5 Seleção com variáveis

196

6.4.3 Projeção

196

6.4.3.1 Projeção com ordenação

197

6.4.3.2 Projeção com hashing

198

6.4.3.3 Projeção com índices

199

6.4.4 Junção

199

6.4.4.1 Junção em ciclo

200

6.4.4.2 Junção de Blocos em ciclo

200

6.4.4.3 Junção com ordenação por fusão

204

6.4.4.4 Junção com Hashing

206

6.4.4.5 O algoritmo GRACE

208

6.4.4.6 Junção com Hashing Híbrido

209

6.4.4.7 Comportamento dos algoritmos

210

6.4.4.8 Outros algoritmos de junção

212

6.4.5 Junções externas

214

6.4.6 Semi e anti-junções

214

6.4.7 Eliminar duplicados

215

6.4.8 Operações sobre conjuntos

215

6.4.9 Agregações e agrupamentos

215

6.5 Fase de execução

216

6.5.1 Execução sequenciada

217

6.6 Transformações adicionais

218

6.6.1 Transformação de subconsultas

218 © FCA – Editora de Informática

XI


FUNDAMENTOS DE BASES DE DADOS

6.6.1.1 Subconsultas tipo N

219

6.6.1.2 Subconsultas tipo A

221

6.6.1.3 Subconsultas tipo J

221

6.6.1.4 Subconsultas tipo JA

222

6.6.2 Redução com semi-junções

223

6.6.3 Transformações com conjuntos mágicos

224

EXERCÍCIOS

229

7 Otimização de Consultas

7.1 Introdução

231 231

7.2 Tipos de otimização

233

7.2.1 Otimização heurística

233

7.2.2 Otimização baseada em custos

235

7.2.3 Otimização no tempo

236

7.3 Otimização baseada em custos

237

7.3.1 Otimização por blocos

237

7.3.2 Otimização paramétrica

237

7.3.3 Otimização com N relações

238

7.3.4 Enumeração de planos

239

7.3.4.1 Programação dinâmica

239

7.3.5 Estatísticas utilizadas

241

7.3.5.1 Estimativa de seleção simples

242

7.3.5.2 Estimativa de seleção conjuntiva

243

7.3.5.3 Estimativa de seleção com negação

244

7.3.5.4 Estimativa de seleção disjuntiva

244

7.3.5.5 Estimativa de junções

244

7.3.5.6 Estimativa de projeções

245

7.3.5.7 Estimativa de agregações

245

7.3.5.8 Estimativas de operações sobre conjuntos

245

7.3.5.9 Estimativas de valores únicos

245

7.4 Técnicas para estimação

246

7.5 Histogramas

247

XII

© FCA – Editora de Informática


Índice Geral 7.5.1 Tipos de histogramas mais comuns

248

7.5.1.1 Histograma equi-largo

248

7.5.1.2 Histograma equi-profundo

249

7.5.2 Taxonomia de histogramas

250

7.5.3 Histogramas multi-dimensionais

252

7.5.4 Histogramas baseados em Wavelets

252

7.5.5 Histogramas na prática

252

7.6 Otimização na prática

253

7.7 Ferramentas da otimização

256

7.7.1 Análise de planos

256

7.7.2 Sintonização de consultas

258

7.7.3 Utilização de índices

258

7.7.4

259

Parâmetros físicos

7.7.5 Sugestões de otimização

259

EXERCÍCIOS

264

265

8 Gestão de Transações

8.1 Introdução 8.1.1 Escalonamentos

265 267

8.2 Transações

268

8.2.1 Execução de uma transação

268

8.2.2 Definição formal

269

8.2.3 Acesso aos elementos

270

8.2.4 Pontos de restauro

271

8.2.5 Conflitos

272

8.2.6 Problemas de concorrência

273

8.3 Serialização

275

8.3.1 Serialização de conflitos

276

8.3.2 Serialização de vistas

280

8.4 Algoritmos de controlo de concorrência

281

8.5 Recuperação de dados

283

8.6 Granularidade dos dados

286 © FCA – Editora de Informática

XIII


FUNDAMENTOS DE BASES DE DADOS

8.7 Transações imbricadas

287

8.8 Transações encadeadas

288

EXERCÍCIOS

290

293

9 Controlo de concorrência

9.1 Introdução

293

9.2 Algoritmos de fecho

294

9.2.1 Deteção de esperas circulares

298

9.2.2 Interrupção de transações

300

9.2.3 Promoção de fechos

301

9.2.4 Variantes de 2PL

302

9.2.5 Recuperação e 2PL

303

9.2.6 Fechos de granularidade múltipla

305

9.2.6.1 Escalada de fechos

307

9.2.7

Fechos de Predicados

308

9.2.8 Fechos Next-key

309

9.2.9 Concorrência em índices

310

9.3 Algoritmos de ordenação temporal

310

9.4 Validação na confirmação

314

9.4.1

315

Fases do controlo otimista

9.4.2 Formas de validação

317

9.4.3 Variantes do algoritmo

318

9.

Outros algoritmos

320

9.5.1 Ordered Sharing

321

9.5.2 Altruistic locking

321

9.5.3 Algoritmo Five-color

322

324

9.5.4 Serialization Graph Testing

9.6 Controlo de Concorrência Multiversão

324

9.6.1 Serialização multiversão

326

9.6.2 Ordenação Temporal Multiversão

327

9.6.3 2PL Multiversão

329

9.6.4 Leitura Consistente Multiversão

330

XIV

© FCA – Editora de Informática


Índice Geral 9.6.5 Snapshot Isolation

331

9.6.5.1 Anomalias de Snaphost Isolation

332

9.6.5.2 Serializable Snapshot Isolation

334

9.6.6 Implementação de MVCC

335

EXERCÍCIOS

342

10 Níveis de isolamento

345

10.1 Introdução

345

10.2 Níveis de isolamento

346

10.3 Níveis SQL

348

10.3.1 Anomalias de concorrência

349

10.3.2 Interpretação dos níveis

351

10.3.3 Outros níveis de isolamento

353

10.3.4 Escolher um nível

355

10.4 Escolhas dos SGBD

357

10.4.1 Oracle

357

10.4.2 MS SQL Server

358

10.4.3 DB2

359

10.4.4 PostgreSQL

359

10.4.5 MySQL

360

10.5 Transações e SQL

361

10.5.1 START TRANSACTION

361

10.5.2 START TRANSACTION ISOLATION LEVEL nível

361

10.5.3 SET TRANSACTION ISOLATION LEVEL nível

362

10.5.4 LOCK TABLE tabela IN MODE modo

362

10.5.5 UNLOCK TABLE tabela

362

10.5.6 SAVEPOINT nome

362

10.5.7 RELEASE SAVEPOINT nome

362

10.5.8 COMMIT

363

10.5.9 ROLLBACK [nome]

363

EXERCÍCIOS

364 © FCA – Editora de Informática

XV


FUNDAMENTOS DE BASES DE DADOS

11 Recuperação

365

11.1 Introdução

365

11.2 Tipos de armazenamento

367

11.3 Tipos de falhas

369

11.4 Organização da memória

370

11.4.1 O Gestor de Memória

371

11.4.2 Trincos

373

11.4.3 Estratégias de Paginação

374

11.4.3.1 O algoritmo CLOCK

375

11.4.3.2 O algoritmo LRU-K

376

11.4.3.3 O algoritmo 2Q

377

11.4.3.4 O algoritmo ARC

378

11.4.3.5 O algoritmo LIRS

379

11.4.4 Paginação no Sistema Operativo

380

11.5 Gestão da memória

381

11.5.1

382

Propagação

11.5.2 Políticas de substituição de páginas

383

11.5.3 Processamento da operação de confirmação

383

11.5.4 Escolha das políticas

385

11.6 Técnicas de recuperação

385

11.6.1 Logging

386

11.6.1.1 Estratégias de Logging

387

11.6.2

Write-Ahead Logging

388

11.6.3 Páginas sombra

389

11.7 O protocolo ARIES

391

11.7.1

392

Princípio geral

11.7.2 O algoritmo

393

11.7.3 As estruturas de dados

394

11.7.4

Pontos de Controlo

396

11.7.5

Funcionamento normal

397

11.7.5.1 Interrupção de transações

397

XVI

© FCA – Editora de Informática


Índice Geral 11.7.6

Fases do protocolo

398

11.7.7

Fase de Análise

399

11.7.8

Fase de “REDO”

400

11.7.9

Fase de “UNDO”

401

11.7.10 Exemplo de recuperação

402

11.7.11

405

EXERCÍCIOS

Variantes do protocolo

408

© FCA – Editora de Informática

XVII



1 Introdução “We find countless examples of programmers who have moved on, leaving programs that are undecipherable for maintenance or modification. Had they been written in COBOL, they would have had more than zero salvage value.” Bemmer, R.W., A view of the history of COBOL (1971)

Sumário Este capítulo apresenta o tema do livro e as definições iniciais necessárias ao desenvolvimento dos capítulos seguintes. É introduzido o conceito de bases de dados e apresentada a sua arquitetura, bem como as características essenciais da sua utilização, tal como o conceito de transação e de controlo de concorrência. O capítulo inclui ainda um breve histórico do aparecimento e da evolução da tecnologia dos sistemas de gestão de bases de dados. No final, descrevem-se os diferentes capítulos do livro, permitindo ao leitor definir o seu percurso de leitura.

1.1 Bases de Dados Em 2009, festejou-se o 40.º aniversário da definição do Modelo Relacional de Dados, considerado o marco do nascimento das bases de dados modernas (Codd, 1969). Na realidade, o Modelo Relacional é hoje utilizado praticamente em todos os sistemas de gestão de bases de dados existentes, os (SGBD), embora existam outros modelos de dados desenvolvidos para aplicações específicas, mas que não tiveram, até ao momento, o sucesso e a divulgação do Modelo Relacional. A indústria baseada no Modelo Relacional de Dados vale atualmente dezenas de milhares de milhões de euros, e a tendência é para continuar a crescer. Como veremos, as bases de dados relacionais não têm o exclusivo do armazenamento da enorme quantidade de dados gerada em todas as aplicações e sistemas, contudo, apresentam uma percentagem elevada de adoção, que é reveladora da adequação da sua arquitetura e funcionalidades às necessidades atuais. Praticamente todas as aplicações informáticas gerem os seus dados com um SGBD, independentemente da quantidade de dados ou do número de pessoas que utiliza a aplicação. Alguns SGBD gerem milhares de acessos simultâneos e enormes quantidades de informação, por exemplo: aplicações de reserva de bilhetes de avião, sistemas de informação empresariais, lojas em linha, etc. © FCA – Editora de Informática

1


FUNDAMENTOS DE BASES DE DADOS

1.2 Cenários de utilização Atualmente, as bases de dados estão omnipresentes na vida das pessoas e das organizações, constituindo o núcleo a partir do qual os sistemas de informação são construídos e operam. Dos telemóveis aos cartões bancários, passando por todo um conjunto de serviços que o cidadão tem à sua disposição na Web, encontram-se bases de dados de dimensão e complexidade variáveis. A sua utilização passou do ambiente puramente organizacional, onde se armazenavam dados de recursos humanos, produtos, vendas, clientes, para aspetos que têm um impacto direto e importante na vida das pessoas. As bases de dados com informação de saúde, genética e financeira são hoje comuns, aumentando a responsabilidade de todos os que direta ou indiretamente estão envolvidos, e aumentando consideravelmente o impacto da sua utilização incorreta. Com efeito, o aumento exponencial do número e diversidade de serviços disponíveis em linha só foi possível com a entrada em produção de bases de dados com uma capacidade cada vez maior de gerir volumes consideráveis de dados e de gerir corretamente centenas ou milhares de acessos simultâneos. Uma base de dados pode caracterizar-se pelo número de utilizadores simultâneos que podem ter acesso à mesma, bem como pela quantidade de dados que armazena. Quando instalada num dispositivo portátil, tem características de utilização muito diferentes das da base de dados de um banco, por exemplo. No entanto, em qualquer das situações, espera-se que os dados não desapareçam nem sejam modificados de forma não desejada, que possam resistir a incidentes, físicos e lógicos, que afetem a base de dados, e que não sejam necessários conhecimentos especializados de utilização. Mesmo um utilizador especializado, regra geral, não necessita de otimizar a sua interação com a base de dados, existindo componentes que se encarregam de encontrar a melhor forma de processar os comandos, escondendo assim do utilizador os detalhes técnicos da estruturação e armazenamento dos dados.

1.3 SGBD Existem várias definições de base de dados, mas nesta fase inicial podemos utilizar a seguinte: Uma

base de dados é uma coleção organizada de informação estruturada relacionada

entre si que persiste durante um determinado período de tempo.

Dados (SGBD), modifica e elimina informação. de

Gestão

de

Bases

de

É gerida por um Sistema

que condiciona a forma como se cria, acede,

Os aspetos principais desta definição incluem a noção de informação estruturada, de persistência e de 1 programa de gestão responsável por toda a interação dos utilizadores ou de programas com os dados guardados em memória permanente. O programa de gestão da base de dados, o SGBD, serve de interface com o utilizador e gere toda a interação deste com os dados. 2

© FCA – Editora de Informática


Introdução

1

Independentemente da base de dados utilizada e da estruturação dos seus dados, um SGBD deve possuir as seguintes características: ■■

Permitir a um utilizador autorizado definir a estrutura dos dados mais adaptada ao problema que tem em mãos. Um utilizador autorizado deve também poder definir permissões de acesso aos dados, o que inclui a sua criação, leitura, modificação e eliminação;

■■

Permitir a consulta eficiente dos dados, independentemente da forma como estes estiverem armazenados no suporte físico. Como consequência, compete ao SGBD escolher a forma mais eficiente de executar a consulta e de devolver o resultado ao utilizador. O SGBD deve dispor de uma linguagem de alto nível que permita ao utilizador especificar o que quer obter como resultado;

■■

Permitir que a base de dados possa ser recuperada, com o mínimo de perda de informação possível, quando ocorrem incidentes lógicos ou físicos. Neste caso, a recuperação significa poder reverter o estado da base de dados para um estado, anterior no tempo, que seja correto. Assim, a recuperação não implica que não se perca informação, mas antes que a base de dados não fique num estado incorreto;

■■

Permitir operações simultâneas sobre os dados por parte de vários utilizadores, isolando mutuamente os seus efeitos e garantindo que, em caso de erro, não se registem definitivamente os resultados de operações sem sucesso ou não terminadas.

Estas características de utilização do SGBD introduzem essencialmente três perfis de utilizador: ■■

O administrador da base de dados, que é responsável pela definição da estrutura dos dados (veremos mais adiante outras funções que o administrador deve desempenhar);

■■

O programador de aplicações, que utiliza as interfaces programáticas de linguagens disponíveis para consultar os dados;

■■

O utilizador final, que acede à base de dados da forma mais abstrata possível, sem conhecimento da sua estrutura ou tecnologia, e sem ter de se preocupar se as suas ações podem interferir com outros utilizadores.

Veremos mais à frente uma definição mais completa de SGBD. Por enquanto, estas características devem permitir-nos distinguir um SGBD de qualquer outro conjunto organizado de informação, como, por exemplo, uma folha de cálculo ou um conjunto de ficheiros com informação organizada.

1.4 Transações Uma outra definição é necessária antes de introduzirmos a arquitetura de um SGBD: a noção de transação (Eswaran, Gray et al., 1976). Uma transação é um conjunto atómico de comandos, na medida em que esta é indivisível e só termina com sucesso se todos os © FCA – Editora de Informática

3


FUNDAMENTOS DE BASES DE DADOS comandos que a constituem tiverem terminado igualmente com sucesso; caso contrário, a transação deve ser anulada e os seus efeitos até ao momento retirados da base de dados, devendo ser executada pelo SGBD exatamente uma vez. Uma transação pode corresponder a uma sequência de comandos que um utilizador autorizado a entrar num terminal executa, ou a um programa que executa um algoritmo com acesso à base de dados. Regra geral, uma transação é percebida pelo SGBD como uma sequência de leituras e de escritas. Por exemplo, uma transação que corresponda a um levantamento de dinheiro pode ter os seguintes comandos: a) iniciar transação; b) verificar o saldo; c) disponibilizar o montante se o saldo o permitir; d) registar movimento; e e) fechar a transação. Se qualquer uma das operações falhar por algum motivo, nenhuma das outras operações deve ter efeitos na base de dados e a transação deve ser terminada com uma mensagem de erro que informe o utilizador. Pelo contrário, se todas as operações forem bem sucedidas, o seu resultado deve ser registado de forma permanente na base de dados. Claro que se o dinheiro já tiver sido disponibilizado, não há forma (infelizmente para o banco) de desfazer essa operação, exceto com ações de compensação. Por outro lado, o banco estará igualmente interessado em não permitir que, se dois utilizadores efetuarem levantamentos ao mesmo tempo na mesma conta, existam interações indesejáveis entre os movimentos de ambos, como mostra a Figura 1.1. utilizador A utilizador B

Saldo = 100

escreve saldo

subtrai 20

lê saldo Saldo = 100

escreve saldo

soma 10

lê saldo

Saldo = 110

Saldo = 80

Saldo = 110

Saldo = 80

Figura 1.1 – Interação entre transações concorrentes

Assim podemos ver duas transações a decorrer em simultâneo, sendo que ambas leem o mesmo valor do mesmo elemento (neste caso um saldo) e utilizam-no para efetuar uma determinada operação. Quando terminam, escrevem o novo valor, mas como não consideraram o facto de estarem a operar sobre o mesmo valor, ou seja, poder existir interferência entre as operações de ambas, o resultado final não é o que resultaria se uma transação fosse efetuada após a outra, em série (execução essa que daria um saldo final de 90, independentemente da transação que fosse executada em primeiro lugar). Quando uma transação termina com sucesso, espera-se que os resultados na base de dados sejam corretos, isto é, os esperados; no entanto, e durante a sua execução, o estado da base de dados pode ficar temporariamente incorreto. Deste modo uma transação tem de possuir duas propriedades essenciais: ■■

4

Não pode ter qualquer interferência noutras transações que possam estar a decorrer concorrencialmente, garantindo que o utilizador está isolado das transações de outros utilizadores. Do ponto de vista do utilizador, a base de dados está disponível apenas para si; não é preciso incluir comandos que protejam especificamente os dados das ações de outros utilizadores; © FCA – Editora de Informática


Introdução ■■

1

Os seus efeitos são permanentes, ou seja, as consequências dos comandos que foram executados, nomeadamente a modificação, a inserção, a criação e a remoção de elementos da base de dados, ficam sempre registadas após a transação ser concluída com sucesso, mesmo se ocorrerem falhas depois desse ponto. Se o utilizador receber uma confirmação de que a transação teve sucesso, pode ter a certeza de que o seu trabalho não irá desaparecer.

É também possível que uma transação termine antes de ser concluída, devido a conflitos com outras transações ou a falhas lógicas ou físicas. Nesse caso, nenhum dos seus efeitos deverá ficar registado na base de dados e dizemos que a transação foi interrompida e que o SGBD deve iniciar um processo de recuperação do estado da base de dados para um estado consistente. Dada a importância deste tema, dedicámos o Capítulo 11 às diferentes técnicas de recuperação e aos problemas que lhes estão associados. A noção de transação é assim uma das noções fundamentais de um SGBD. Sem um mecanismo que garantisse o isolamento e a perenidade dos resultados dos comandos executados, não seria possível garantir um correto funcionamento de uma base de dados em ambiente multiutilizador. Uma transação deve ainda respeitar as seguintes características, conhecidas no seu conjunto por ACID (Härder e Reuter, 1983): ■■

Atomicidade: Uma transação pode ser composta por várias operações, mas o seu resultado deve ser tudo ou nada, ou seja, uma transação é atómica. Não é possível considerar apenas partes de uma transação como válidas e descartar outras. O utilizador que submeteu a transação deve ser sempre informado do resultado da sua execução, seja ele de sucesso ou insucesso;

■■

Consistência: Uma transação que termine de uma forma normal garante que a base de dados fica num estado consistente, ou seja, por definição, uma transação só confirma dados que respeitem a consistência da base de dados. Esta propriedade é necessária para garantir a quarta característica, durabilidade;

■■

Isolamento: Quaisquer operações dentro de uma transação não são afetadas por operações de outras transações a decorrer concorrencialmente. Do ponto de vista de cada transação, a base de dados está disponível apenas para si. Não respeitar esta característica leva ao problema mostrado anteriormente, na medida em que podem acontecer interferências indesejáveis entre operações de transações concorrentes diferentes;

■■

Durabilidade: Após uma transação terminar e confirmar os seus resultados na base de dados, o SGBD deve garantir que esses dados são persistentes. A durabilidade destes deve ser garantida mesmo na presença de falhas que ocorram após o fim da transação. Se o utilizador foi informado do sucesso da transação, esperará sempre que os dados tenham ficado registados de forma persistente na base de dados.

É possível ainda ter transações imbricadas, em que uma transação pode ter várias subtransações, sendo que estas, em caso de interrupção, podem ser desfeitas sem implicar que se deva terminar a transação principal. As transações imbricadas podem ser úteis em procedimentos longos ou nos quais existem naturalmente decomposições de tarefas em subtarefas, por exemplo: as reservas de um voo e de um hotel podem constituir subtran© FCA – Editora de Informática

5


FUNDAMENTOS DE BASES DE DADOS sações da transação de compra de uma viagem, e qualquer uma delas pode ser concluída independentemente da outra. Um dos primeiros SGBD relacionais, o protótipo System R, da IBM, introduziu transações imbricadas a dois níveis, através da utilização de pontos de restauro, como veremos mais à frente (Härder e Rothermel, 1993).

1.5 Arquitetura de um SGBD A Figura 1.2 mostra a arquitetura genérica de um SGBD, com os seus componentes principais representados por retângulos. As setas entre os componentes denotam ligações de dados e de controlo. Esta arquitetura é comum, nos seus aspetos essenciais, a todos os SGBD, e é apresentada e estudada em detalhe em todos os textos sobre o tema (por exemplo, Garcia-Molina, Ullman et al., 2000). É a arquitetura clássica introduzida pelos primeiros protótipos de SGBD relacionais e que se mantém, praticamente sem alterações, até hoje. utilizadores, programas

compilador de interrogações

gestor de transações

execução de interrogações

logs e recuperação

controlo de concorrência

gestor de índices

gestor de memória tampão

gestor de armazenamento

disco

Figura 1.2 – Arquitetura de um SGBD

6

© FCA – Editora de Informática


Introdução

1

De uma forma genérica, o SGBD tem uma interface para permitir a interação com utilizadores e com aplicações variadas. A interação com os utilizadores faz-se normalmente através da linha de comando ou de uma interface gráfica, enquanto as aplicações utilizam as interfaces de programação disponibilizadas pelo SGBD. Em qualquer dos casos, é utilizada uma linguagem de comandos que permite criar, consultar, modificar e apagar dados (ou a sua estrutura, no caso de um utilizador com permissões para o efeito) na base de dados. Num cenário de utilização normal, várias dezenas, centenas ou mesmo milhares de utilizadores e aplicações poderão estar a aceder simultaneamente à mesma base de dados. Os comandos resultantes dessa interação são verificados pelo primeiro componente, começando pela sintaxe, prosseguindo para a geração de um plano de execução e sua posterior otimização. Como referimos, uma das funções do SGBD consiste em fornecer uma interface que seja independente dos aspetos físicos de armazenamento dos dados, pelo que o próprio SGBD deve tratar dos aspetos de otimização de acesso aos mesmos. A otimização de consultas é um dos componentes que mais influencia o desempenho do SGBD, pois sem este a eficiência de uma consulta dependeria sempre da forma como esta foi especificada pelo utilizador, o que, na maioria dos casos, resultaria em maus desempenhos. Deste modo, é geralmente admitido que o desenvolvimento do componente de otimização de consultas levou os SGBD para fora dos laboratórios, para a utilização real, em organizações reais. Ao mesmo tempo, o gestor de transações assegura que vários utilizadores podem aceder aos mesmos dados sem interferências indesejáveis entre si. Este tem essencialmente dois componentes, que asseguram o controlo de concorrência e que mantêm registos das operações efetuadas, bem como outras informações necessárias em caso de recuperação dos dados após interrupção das transações ou acidente. As interrogações podem então ser executadas de forma concorrente, se existirem vários utilizadores, garantindo que não há efeitos indesejáveis (função assumida pelo componente de controlo de concorrência) e que será possível recuperar o estado da base de dados em caso de acidentes que impeçam a normal conclusão das interrogações (função assumida pelo componente de logs e recuperação). O componente de logs e recuperação regista listas de modificações feitas aos dados e sincroniza a sua atividade com outros componentes, como o gestor de memória tampão e o controlo de concorrência. A atividade de registo de logs e gestão de recuperação pode penalizar o desempenho dos SGBD, sendo essencial parametrizar corretamente o funcionamento deste componente. A execução de interrogações deve ser feita de forma eficaz e eficiente do ponto de vista de utilização de recursos e dados, o que é assegurado pelo componente de gestão de índices. Os índices permitem minimizar o número de acessos aos dados, fazendo acessos o mais localizados possível e evitando longas pesquisas em memória secundária. Embora o tamanho disponível da memória primária tenha vindo a aumentar todos os anos, na maioria dos casos, esta ainda é insuficiente para conter partes importantes da base de dados, pelo que o efeito da paginação no desempenho dos SGBD ainda é muito significativo. A pagi© FCA – Editora de Informática

7


FUNDAMENTOS DE BASES DE DADOS nação, que consiste em acessos aos discos para ler os dados necessários em memória, representa a maior percentagem de tempo de execução de uma interrogação. O gestor de memória tampão, à semelhança dos mecanismos de gestão de memória nos sistemas operativos, permite manter a localização de referência a um nível aceitável para o desempenho pretendido, aumentando a probabilidade de o gestor de índices encontrar em memória primária os dados de que necessita. Este componente trabalha assim em conjunto com o gestor de índices. Por último, o gestor de armazenamento é responsável pela representação física dos dados no suporte utilizado, bem como pela leitura e escrita dos mesmos. Dependendo do SGBD, são utilizadas várias formas de armazenamento dos dados, sendo que podem ser considerados vários tipos de dispositivos de armazenamento. Existem alguns SGBD, como o MySQL, que permitem trocar o gestor de armazenamento, existindo vários disponíveis com características de desempenho diferentes. Alguns componentes asseguram diretamente as características ACID. O componente de recuperação garante que as transações são atómicas (A) e duráveis (D). Se algo acontecer, o componente é responsável por colocar a base de dados num estado anterior em que estas duas características são respeitadas. O componente de controlo de concorrência fornece o isolamento (I) necessário entre transações, e a consistência (C) é assegurada pela correta definição dos elementos da base de dados, como veremos nos Capítulos 2 e 3. A arquitetura aqui apresentada pode considerar-se clássica e está relacionada com os primeiros SGBD, havendo, por isso, quem defenda que está ultrapassada para fazer face a novas formas de utilização da informação. Na realidade, arquiteturas de bases de dados especializadas têm surgido recentemente e têm sido utilizadas com sucesso em áreas com grande volume de transações e com características de dados e de interrogações diferentes das dos sistemas tradicionais. Por exemplo, muitas aplicações lidam com estruturas em forma de grafos, ou com estruturas com informação incompleta; nesses casos, o Modelo Relacional tem-se revelado uma aplicação complexa e outras arquiteturas foram sendo propostas. Noutras aplicações, pretende-se obter respostas aproximadas a consultas e não resultados exatos; noutros casos ainda, apenas 10% das respostas são relevantes, mas o SGBD calcula todas as respostas. Neste sentido vários autores têm discutido a adequação das arquiteturas de SGBD às necessidades que vão surgindo (Gray, 2004; Stonebraker e Cetintemel, 2005), nomeadamente as que estão ligadas à utilização em larga escala de redes sociais, à geração de dados científicos em grandes quantidades ou a motores de pesquisa. No entanto, o estudo e a compreensão da arquitetura atual dos SGBD e das funções de cada um dos seus componentes são essenciais não só porque estes ainda constituem a arquitetura dominante (uma situação que previsivelmente se manterá nos próximos anos), mas também porque nos permitem analisar as novas propostas com conhecimento do comportamento e das limitações destas arquiteturas. 8

© FCA – Editora de Informática


Introdução

1

1.6 Modelo Relacional Nesta secção, fazemos uma breve introdução ao Modelo Relacional de Dados, que iremos analisar em detalhe mais à frente. O Modelo Relacional, proposto pelo matemático Edgar Codd, da IBM, em 1969, num relatório da IBM de divulgação reduzida (Codd, 1969) e, no ano seguinte, numa revista científica (Codd, 1970), alterou a forma como se utilizavam as bases de dados, que consistia essencialmente na manipulação de estruturas físicas, muito próximas da representação informática em suporte físico. Ao permitir a utilização de uma linguagem de mais alto nível e abstração, independente da representação física dos dados, o Modelo Relacional contribuiu para a vulgarização desta tecnologia, melhorando a produtividade dos utilizadores das bases de dados. Assim, os utilizadores e os programadores já não tinham de se preocupar com estruturas de apontadores físicos, nem em modificar os seus programas sempre que a estrutura dos dados sofria uma alteração. O Modelo Relacional permite a utilização de uma única estrutura de dados, chamada tabela, que implementa o conceito de relação, sendo que uma base de dados é uma coleção de tabelas. Observe-se a representação da Tabela DISCIPLINA: Nome

Sigla

ECTS

Bases de Dados

BD

5

Programação

PG

4

As colunas identificam as características de uma disciplina, e cada coluna é encabeçada por um título. As linhas, ou tuplos, representam as diferentes disciplinas que existem na base de dados. Adicionalmente, cada coluna tem um determinado tipo de dados; por exemplo, a coluna ECTS é do tipo inteiro, a coluna NOME é do tipo texto. Uma tabela é definida pelas suas colunas, cujo conjunto representa o seu esquema. Esta representação visual de uma tabela é uma forma conveniente e simples de compreender a base de dados e esconde os aspetos técnicos da representação informática desta estrutura. Para um utilizador não técnico, assemelha-se a uma folha de cálculo; para um programador, assemelha-se a uma estrutura do tipo record (registo). Para manipular as tabelas, foi definida uma linguagem, a álgebra relacional que permite, com base num pequeno conjunto de operadores, construir consultas que podem ser executadas pelo SGBD. Na realidade, as tabelas são manipuladas com a linguagem Structured Query Language (SQL), que implementa muitos aspetos da álgebra relacional. Para permitir a utilização das tabelas da forma que fosse mais adequada a cada tipo de utilizador, foram definidos níveis de abstração, possibilitando assim uma perspetiva diferente consoante as necessidades dos tipos de utilizador, como veremos na secção seguinte.

© FCA – Editora de Informática

9


FUNDAMENTOS DE BASES DE DADOS

1.7 Níveis ANSI/SPARC O grupo de trabalho ANSI/SPARC1 definiu três níveis de abstração num SGBD, para manter a independência entre a utilização dos dados e a sua representação interna. Os níveis correspondem a diferentes perspetivas sobre os dados, e permitem agrupar as ferramentas que o SGBD disponibiliza segundo as necessidades dos diferentes tipos de utilizador. Os níveis definidos são os seguintes: ■■

Externo;

■■

Concetual;

■■

Físico.

O nível externo corresponde à forma como diferentes utilizadores, com diferentes requisitos de utilização, se apercebem dos dados. Cada utilizador poderá ter uma visão completamente distinta da de outros utilizadores, dependendo das suas necessidades ou permissões. Por vezes, a mesma informação é apresentada a diversos utilizadores, mas com formas distintas, incluindo, por exemplo, ordenações diferentes ou agregações de atributos diferentes. Deste modo, existem tantas visões do nível externo como as diferentes necessidades de diferentes utilizadores. Por exemplo, diferentes utilizadores podem ter acesso a apenas algumas colunas da tabela DISCIPLINA, anteriormente mostrada. Outros poderão ainda ter uma visão mais completa, com informação sobre os docentes que lecionam cada disciplina. Num SGBD relacional, o nível externo pode ser implementado através da definição de vistas que suportem as necessidades de informação dos utilizadores, sendo que este nível não está diretamente acessível ao utilizador final, alimentando as interfaces gráficas das aplicações que usam a base de dados. O nível concetual, também chamado nível lógico, corresponde à forma como um administrador de base de dados se apercebe dos mesmos, podendo manipular este nível para otimizar acessos, implementar políticas de segurança e, de forma geral, garantir um desempenho aceitável da base de dados. Neste nível, são definidas permissões por utilizador ou grupo de utilizadores para o conjunto de tabelas da base de dados. Só existe uma visão do nível concetual, igual para todos os administradores. Este nível é utilizado também por programadores que necessitam de uma interface de acesso aos dados em termos de estruturas informáticas comuns. Num SGBD relacional, o nível concetual é constituído por tabelas. O nível físico, ou interno, corresponde à forma como os dados são representados fisicamente, bem como às estruturas utilizadas para os representar e manipular. Define a forma de representação em disco, em termos de blocos, dependendo da forma como os dados são utilizados. Este nível está dependente do sistema operativo utilizado e não se destina a ser acedido diretamente. À semelhança do nível conceptual, existe apenas uma visão do nível físico. A Figura 1.3 seguinte mostra os níveis de abstração de dados num SGBD. 1

American National Standards Institute/Standard Planning and Requirements Committee.

10

© FCA – Editora de Informática


Introdução esquema externo

esquema externo

1

esquema externo

esquema concetual

esquema físico

disco

Figura 1.3 – Níveis de abstração de dados num SGBD

Os níveis de abstração de dados não têm qualquer tradução direta em componentes ou funções do SGBD e destinam-se apenas a permitir a definição de perspetivas da informação do ponto de vista dos diferentes utilizadores. O SGBD fornece uma linguagem (SQL) para trabalhar nos níveis externo e concetual. A maioria dos SGBD fornece algumas extensões à linguagem SQL para trabalhar no nível físico.

1.8 Projeto de Bases de Dados As bases de dados são utilizadas em muitos tipos de sistemas de informação, constituindo um dos seus componentes principais. Assim, a conceção de uma base de dados requer uma metodologia formal que preveja as etapas principais do projeto e que possa ser utilizada por diferentes tipos de intervenientes no projeto, satisfazendo os requisitos de facilidade de documentação, independência de ferramentas e técnicas específicas, eliminação de ambiguidades, e capacidade de inclusão e de representação dos requisitos iniciais. A Figura 1.4 seguinte apresenta as principais etapas de um projeto de base de dados completo, desde a fase inicial de levantamento de requisitos até à fase de projeto físico. O projeto concetual produz o esquema conceptual, expresso numa linguagem que é independente da base de dados que irá ser usada. Este esquema utiliza noções abstratas que permitem capturar os requisitos do problema, sem tomar decisões dependentes de quaisquer sistemas ou tecnologias. Nesta fase do projeto, utilizam-se modelos ditos semânticos, que tentam capturar o significado dos dados que serão necessários. Por ser um modelo semântico, é fácil envolver utilizadores com perfis de conhecimento diferentes, uma vez que só estamos preocupados com a forma como os utilizadores se apercebem dos dados e os querem utilizar. Um dos modelos mais utilizados nesta fase é o Modelo Entidade-Relacionamento (Modelo E-R), que veremos no Capítulo 2.

© FCA – Editora de Informática

11


FUNDAMENTOS DE BASES DE DADOS

requisitos, análise

requisitos da base de dados

projeto concetual

independente da base de dados

esquema concetual

projeto lógico específico de uma base de dados

esquema lógico

projeto físico

esquema interno

Figura 1.4 – Etapas do projeto de uma base de dados

O projeto lógico traduz o Modelo Concetual no Modelo Relacional de Dados. O resultado é o conjunto de tabelas ou esquema da base de dados. Dependendo do SGBD a utilizar, o Modelo Lógico pode ser ligeiramente diferente, porque pode haver, por exemplo, variações nos tipos de dados, restrições no uso de nomes, tipos de índices diferentes e funcionalidades diferentes para valores por defeito ou valores automáticos. O projeto lógico permite envolver utilizadores que não sejam técnicos e que possam desta forma contribuir com especificações relativas ao problema em si, sem a necessidade de compreenderem os aspetos técnicos das bases de dados. Este projeto pode sofrer alterações para ser transformado numa versão melhorada, através de um processo chamado normalização. O projeto físico envolve a parametrização do Modelo Relacional em função do que se espera ser a sua utilização. Desta forma, tenta-se otimizar e melhorar o desempenho da base de dados. Podem ser tomadas decisões em termos de estratégias de armazenamento, estruturas de acesso rápido aos dados, como os índices, ou mesmo de redesenho de tabelas, para tirar partido das características de utilização previstas. O projeto físico deve tirar partido das características do SGBD e, por isso, depende fortemente do produto utilizado. Como veremos no Capítulo 5, diferentes SGBD oferecem diferentes possibilidades de afinação, pelo que uma estratégia única para todos poderia não funcionar. Com efeito existem regras gerais sobre como desenvolver o projeto físico, e são essas que veremos. A previsão da carga de utilização da base de dados é essencial no projeto físico. É comum considerar que existem, de um modo geral, dois cenários: cargas transacionais, com muitos utilizadores a lerem e a escreverem em simultâneo a base de dados (cenário geralmente designado por Online Transaction Processing, OLTP), e cargas essencialmente de 12

© FCA – Editora de Informática


Introdução

1

leitura e de cruzamento de grandes quantidades de dados para análise (cenário geralmente designado por Online Analytical Processing, OLAP). Ambos os cenários têm hoje uma expressão significativa, embora, em termos históricos, a arquitetura clássica do SGBD tenha sido mais orientada para os cenários OLTP. Podemos considerar outras fases do projeto de uma base de dados, sobretudo a definição de aspetos de segurança dos dados e a otimização do Modelo Concetual. A segurança é geralmente abordada do ponto de vista da aplicação, exceto em aplicações especializadas que envolvam a confidencialidade dos dados armazenados. A otimização do Modelo Concetual permite detetar eventuais problemas na interpretação dos requisitos, evitando a posterior definição de esquemas errados e que não se comportem devidamente face à utilização real. Nesta situação, é pouco provável que otimizações ao nível físico possam surtir efeito, uma vez que a conceção, à partida, está errada.

1.9 Vantagens de um SGBD A utilização de um SGBD apresenta várias vantagens relativamente a outra solução de gestão de dados (Ramakrishnan e Gehrke, 2003), algumas das quais já foram abordadas nas secções anteriores: ■■

Independência dos dados: Esta característica evita que as aplicações que acedem à base de dados tenham de ser modificadas se a estrutura física dos dados mudar. Ou seja, mudanças no esquema físico, por exemplo, não implicam mudanças nos outros níveis da base de dados. Modificar estruturas de acesso ou tamanhos de página não implica alterações nas consultas, por exemplo;

■■

Verificação de regras de integridade e de segurança: É possível especificar regras de integridade, como, por exemplo, um preço ser sempre número positivo, no esquema da base de dados, em vez de ter de se colocar essa regra em todas as aplicações que manipulam os preços. Da mesma forma, políticas de segurança podem ser implementadas no esquema e não nas aplicações, facilitando a sua imediata aplicação;

■■

Acesso eficiente aos dados: O acesso aos dados é decidido pelo SGBD, permitindo assim escolher as estratégias mais eficientes, não sendo necessário o utilizador ter de escolher a forma de acesso, ou seja, este vê os dados como uma tabela e não precisa de se preocupar com a sua representação interna, nem com a forma mais eficaz de aceder aos tuplos;

■■

Gestão da concorrência e recuperação: Vários utilizadores podem aceder em simultâneo aos dados sem terem de se preocupar em sincronizar as suas ações. Por outro lado, o SGBD fica encarregado de garantir que, em caso de falha, é sempre possível colocar a base de dados num estado estável, com todas as restrições de integridade respeitadas;

■■

Gestão de dados: Várias aplicações podem partilhar os mesmos dados, com as vantagens de eliminação de redundância, reforço de coerência e integridade, que daí © FCA – Editora de Informática

13


FUNDAMENTOS DE BASES DE DADOS advêm. A utilização de uma base comum para os dados facilita a aplicação de normas e diretivas; ■■

Redução do tempo de desenvolvimento: Ao aliviar o programador de ter de tomar decisões relativas à forma de armazenamento e acesso aos dados, diminui o tempo de desenvolvimento e reduz a probabilidade de erros. Ao permitir a manipulação de um modelo independente da máquina e do sistema operativo, permite que o programador se concentre no essencial e na lógica de negócio, deixando as decisões de baixo nível para o SGBD.

Embora estas vantagens possam constituir motivos suficientes para escolher um SGBD em detrimento de outra solução, por vezes não se justifica a sua complexidade, principalmente quando algumas das vantagens não são essenciais. Nesse caso, pode optar-se por escolher aplicações ou ambientes mais especializados.

1.10 Breve histórico A necessidade de utilização de bases de dados nasce com os computadores e com a manipulação de grandes quantidades de dados que estes começaram a permitir. O que pode ser considerado como o primeiro SGBD utilizado em situação real, o Integrated Data Store (IDS), foi desenvolvido, entre 1961 e 1964, para a General Electric por Charles Bachman (Bachman e Williams, 1964), e estava integrado num complexo sistema de controlo de produção. O IDS distinguia-se dos outros sistemas de processamento de dados da época por aceder aos dados em disco, ao invés de banda magnética ou cartões perfurados, e por disponibilizar várias das funções que hoje associamos aos SGBD. O IDS introduziu também o precursor do chamado Modelo em Rede e várias das características dos SGBD modernos. Em 1959, foi criado pelo Departamento de Defesa americano um consórcio que envolvia universidades, empresas, fabricantes de computadores, organismos de investigação e desenvolvimento, e entidades governamentais, designado por Conference on Data Systems Languages (CODASYL). Este consórcio tinha por missão definir uma linguagem de programação que pudesse ser executada em vários computadores, independentemente do equipamento ou do fabricante. O CODASYL estava organizado em três comités técnicos, sendo que um deles, o Programming Language Committee, propôs, em 1960, a linguagem COBOL e, em 1969, através do seu grupo de trabalho Data Base Task Group (DBTG), uma extensão de COBOL para trabalhar com bases de dados que ficou conhecida como o Modelo em Rede ou Modelo CODASYL. O Modelo em Rede utilizava os conceitos introduzidos pelo SGBD IDS da General Electric, que constituiu a sua principal inspiração. Outro comité, o Systems Committee, começou a interessar-se por bases de dados e iniciou um projeto que identificou praticamente 50 sistemas diferentes em utilização em 1968 (CODASYL, 1969), quase todos com modelos próprios. 14

© FCA – Editora de Informática


Introdução

1

Devido à grande pressão da indústria, incluindo dos fabricantes de computadores e de grandes organizações com complexos problemas de gestão da informação, procuravam­ ‑se linguagens e modelos que fossem independentes dos computadores e que pudessem ser facilmente adaptados ou modificados se os requisitos iniciais mudassem. Os sistemas existentes estavam muito dependentes da estrutura de armazenamento e das máquinas utilizadas, pelo que qualquer alteração no tipo de informação e na utilização pretendida poderia obrigar a grandes alterações nos programas informáticos que acediam às bases de dados. Em 1968, a IBM introduziu o seu primeiro SGBD, o Information Management System (IMS)2, destinado a gerir o inventário de material da missão lunar Apolo. O IMS, que utilizava o que mais tarde ficou conhecido por Modelo Hierárquico (Tsichritzis e Lochovsky, 1976), começou a ser desenvolvido em 1965 com a colaboração da Caterpillar e da North American Rockwell, tendo resultado no Information Control System (ICS) e na Data Language/I (DL/I). O IMS deveria gerir os cerca de dois milhões de componentes da nave espacial e funcionar num computador IBM System/360 com 256 K de memória. Segundo a própria IBM, o IMS é ainda hoje o seu SGBD mais utilizado, com 95% das empresas da lista Fortune 500 a utilizá-lo. O IMS continuou a acompanhar os avanços da tecnologia e do conhecimento no domínio dos SGBD e adapta-se perfeitamente aos ambientes informacionais das grandes organizações. Os modelos de dados usados na altura, em Rede e Hierárquico, não estavam formalmente definidos como tal, o que só aconteceu anos mais tarde, mas guiavam o desenvolvimento técnico dos SGBD. Em 1969, Edgar Codd publicou as bases do Modelo Relacional de Dados e alguém vaticinou que seriam necessários 10 anos até que um produto baseado nesse modelo surgisse, o que realmente aconteceu. A IBM iniciou o projeto do protótipo System R em 1973. A partir dos resultados deste projeto, surge, em 1978, o primeiro SGBD relacional comercial, Oracle, que começou a ser vendido em 1979 e antecipou a entrada comercial da IBM nesta área. A IBM só começou a disponibilizar em 1981 a versão comercial do System R, SQL/DS e, pouco depois, em 1983, o DB2 para o sistema operativo MVS da IBM. Outro protótipo relacional da IBM, Query By Example (QBE), começou a ser desenvolvido na mesma altura do System R e chegou a ser instalado em mais de uma centena de clientes, mas foi abandonado. Outros protótipos de SGBD relacionais foram sendo desenvolvidos e disponibilizados, e alguns tiverem uma difusão alargada como o Ingres3, da Universidade da Califórnia (UC), em Berkeley. O Ingres foi iniciado ao mesmo tempo do que o System R e teve um grande impacto, auxiliado pelo facto de ser escrito para Unix, um sistema operativo gratuito, aberto e muito utilizado nas universidades americanas, produzindo um protótipo e uma linguagem de interrogação, QUEL. Em 1982, o projeto termina, mas os seus resultados são aproveitados pelo projeto Postgres, iniciado, em 1985, pela UC. Este projeto por sua vez dará origem ao SGBD Postgre95, em 1995, com a introdução de uma linguagem de interrogação relacional, e, mais tarde, o PostgreSQL (Stonebraker e Kemnitz, 1991). Em 2 3

Também designado como DB1.   O Interactive Graphics and Retrieval System foi um projeto financiado pelo Governo americano ao mesmo tempo que a IBM iniciava o projeto System R. © FCA – Editora de Informática

15


FUNDAMENTOS DE BASES DE DADOS 1987, a Sybase disponibiliza o SGBD SQL Server para plataformas Linux e, mais tarde, para plataformas Windows, em conjunto com a Microsoft, parceria que manteve até 1994. A Microsoft introduziu o SQL Server 7 em 1998 com mudanças significativas relativamente ao código base da Sybase. A Sybase continuou a oferecer o SQL Server sob a designação Adaptive Server Enterprise (ASE), sendo atualmente um dos SGBD com maior quota de mercado, atrás dos três grandes: Oracle, IBM e Microsoft. Recentemente, surgiram modelos especializados, não relacionais, que são adaptados a aplicações específicas: modelos orientados a objetos (Gouveia, 1993), modelos baseados em tuplos Resource Description Framework (RDF) (Dittrich e Quiane-Ruiz, 2012), modelos temporais (Snodgrass, 2000), modelos lógico-dedutivos (Gallaire, Minker e Nicolas, 1984) e modelos chamados verticais ou em colunas (Abadi, 2007). Cada um dos modelos responde a características particulares do domínio em que é usado, e é geralmente otimizado para nichos de aplicações.

1.11 Aplicações Os SGBD invadiram todos os setores das organizações, constituindo o núcleo de sistemas de informação cada vez mais versáteis, abrangentes e poderosos. As aplicações clássicas de bases de dados encontram-se na faturação, gestão de clientes, de fornecedores, de vendas, de produtos, de armazém, em domínios que são bem conhecidos e onde a informação tem uma estrutura quase rígida, por força de normas, práticas ou exigências de corpos reguladores, como o Estado. Existem, no entanto, vários domínios com restrições próprias e requisitos de informação que necessitam de modelos ou arquiteturas de bases de dados diferentes das apresentadas neste livro, por exemplo, as bases de dados em memória principal. Em algumas situações, pode justificar-se ter a base de dados ou uma grande parte dela sempre em memória, como nas aplicações de portabilidade de números antigos para os números de telefone reais, ou para aplicações financeiras em tempo real. Noutras situações, pode recorrer-se a modelos especializados, como o modelo orientado por objetos, o modelo temporal, ou o modelo geométrico. Em aplicações analíticas com grandes quantidades de dados, começam a ser aplicados modelos alternativos, implicando, por vezes, arquiteturas diferentes das estudadas neste livro. Em aplicações complexas de engenharia, podem ter-se relações entre peças de informação que são demasiado variadas e complexas para poder ser representadas eficazmente num SGBD, por exemplo: relações de composição (peças que fazem parte, de diferentes formas, de outras peças), de estrutura (representações em grafo ou árvore) e generalização. A Web semântica implica gerir enormes quantidades de dados, pouco estruturados, geralmente em modelos de grafos ou com forte conetividade entre si. O modelo mais utilizado de bases de dados, o Modelo Relacional, prevê dados com estrutura uniforme, conhecida e pouco variável no tempo. A representação de dados incompletos e com estrutura variável, produzidos em grande escala, coloca grandes desafios aos SGBD. No extremo oposto, temos pequenas aplicações, móveis ou embebidas, que registam dados de forma estru16

© FCA – Editora de Informática


Introdução

1

turada e querem tirar partido da utilização de um SGBD, mesmo que este não tenha todas as características de um SGBD; por exemplo, o controlo de concorrência pode não ser necessário, porque a aplicação é do tipo monoutilizador, ou o SGBD pode não necessitar de possibilidades de recuperação. O aparecimento das aplicações móveis traz novos desafios, como a gestão de transações distribuídas, a gestão de recuperação em ambientes com interrupções de conetividade, e o processamento de dados distribuídos com padrões diferentes de acesso segundo o utilizador ou a sua localização. Nestas situações, aparecem novos conceitos como a “quase consistência”, sugerindo que pode ser preferível trabalhar com uma base de dados que não seja 100% ACID, mas que permita mesmo assim um nível de serviço aceitável em determinadas situações.

1.12 Organização do livro O livro está organizado em 11 capítulos, que podem ser divididos em três grandes partes: ■■

Os Capítulos 1, 2, 3 e 4 abordam camadas que estão diretamente expostas à interação com o utilizador e cujo conhecimento é essencial para a utilização de um SGBD;

■■

Os Capítulos 5, 6, 7, 8 estão relacionados com as camadas internas de um SGBD que não estão diretamente acessíveis ao utilizador, mas cujo conhecimento é indispensável para uma eficiente utilização e administração de um SGBD;

■■

Os Capítulos 9, 10 e 11 dizem respeito ao funcionamento de camadas internas do SGBD que podem ser controladas, de uma forma ou de outra, pelo utilizador ou pelo administrador, e que podem ter um impacto direto na consistência e na disponibilidade da base de dados.

Embora a ordem recomendada de leitura seja pela numeração dos capítulos, é possível lê­ ‑los em qualquer ordem, principalmente se o leitor estiver interessado em tópicos de apenas uma das três partes referidas. A primeira parte é geralmente abordada numa disciplina de introdução a bases de dados, que pode incluir também a parte inicial dos Capítulos 5, 6, 8, 9 e 10. Os Capítulos 5, 6, 7, 8, 9 e 10 podem fazer parte de uma disciplina de Bases de dados avançadas ou de arquitetura de bases de dados. É ainda possível usar os Capítulos 8 e 9 num curso avançado de sistemas de informação. A seguir, apresenta-se brevemente o conteúdo de cada capítulo: ■■

Capítulo 1: Introduz os conceitos de bases de dados, enquadrando o seu aparecimento histórico na indústria de computadores e de sistemas de informação. Este capítulo apresenta as características principais e a arquitetura genérica de um SGBD, cujos componentes serão estudados noutros capítulos deste livro;

■■

Capítulo 2: Introduz o Modelo Relacional de Dados e a álgebra relacional. São apresentados os seus conceitos fundamentais, como relações, atributos, chaves e dependências funcionais, e é descrito brevemente o cálculo relacional como linguagem equivalente à álgebra relacional; © FCA – Editora de Informática

17


FUNDAMENTOS DE BASES DE DADOS

■■

Capítulo 3: Aborda o projeto lógico de bases de dados, introduzindo o Modelo Entidade-Relacionamento na sua variante mais utilizada. São apresentadas extensões do Modelo citado, nomeadamente a especialização. São introduzidas a normalização e as formas normais mais comuns, baseadas nas noções de dependência como técnica para definir um esquema de base de dados sem anomalias. São introduzidos vários tipos de dependências, bem como as noções de fecho e de cobertura de um conjunto de dependências;

■■

Capítulo 4: Introduz a linguagem SQL, a sua sintaxe, os seus principais operadores e os principais componentes de um SGBD envolvidos na análise e no processamento de interrogações. São abordadas questões como a utilização de mecanismos de indexação e a otimização de interrogações;

■■

Capítulo 5: Aborda os aspetos de armazenamento e indexação, com destaque para os aspetos práticos do armazenamento físico dos dados e das suas implicações nos algoritmos de indexação. São apresentadas várias técnicas de indexação, as variantes usadas nos SGBD e o seu impacto no desempenho;

■■

Capítulo 6: Introduz a execução de consultas e o componente responsável por interpretar os comandos SQL recebidos. São detalhadas as fases iniciais do processamento, bem como a análise da escolha de operadores e algoritmos de acesso. É detalhada a construção de planos lógicos e as transformações geralmente utilizadas a partir de um ponto de vista heurístico;

■■

Capítulo 7: Dedica-se a questões de otimização de consultas, tanto do ponto de vista do utilizador como do SGBD. Retoma o processamento de consultas abordado no capítulo anterior, a partir da construção de planos lógicos, e detalha a construção de planos físicos e respetiva otimização. É introduzida a noção de custo de um operador e são descritos os operadores físicos disponíveis num SGBD, sendo calculado o seu custo em diferentes cenários. São introduzidas estruturas de estimação como os histogramas e o seu uso pelo otimizador;

■■

Capítulo 8: Aborda as questões de gestão de transações e dos critérios para assegurar a correção de uma execução concorrente de transações. É introduzida a noção de escalonamento e definidas as anomalias de concorrência mais comuns. Define-se serialização, de conflitos e de vistas, e relaciona-se o conceito com as questões de recuperação. Apresentam-se brevemente as técnicas de controlo de concorrência, que serão detalhadas no capítulo seguinte;

■■

Capítulo 9: Apresenta o controlo de concorrência, com destaque para os principais algoritmos utilizados e para questões práticas de desempenho. São apresentados e descritos os mecanismos de controlo de concorrência utilizados por alguns produtos disponíveis;

■■

Capítulo 10: Introduz os níveis de isolamento e define-os em termos das anomalias de concorrência. Mostra-se que os níveis de isolamento permitem gerir o grau de consistência requerido numa transação, permitindo uma maior ou menor interferência entre transações;

18

© FCA – Editora de Informática


Introdução ■■

1

Capítulo 11: Aborda a recuperação, o componente do gestor de transações responsável por garantir que a base de dados pode ser colocada num estado consistente, quer após interrupção de transações, quer após falhas diversas. É detalhado o funcionamento do gestor de memória, os seus algoritmos mais utilizados e o seu relacionamento com a recuperação da base de dados. É apresentado em detalhe o algoritmo ARIES devido à sua importância nos SGBD.

Em cada capítulo, é reunida a bibliografia relevante para as matérias tratadas, permitindo ao leitor encontrar material com informação mais detalhada ou complementar, muitas vezes do âmbito de investigação e experimental, outras vezes sobre técnicas, modelos e algoritmos utilizados em aplicações reais. A bibliografia é, na sua maioria, recolhida de revistas científicas da especialidade (com destaque para publicações da Association for Computing Machinery – ACM – e do Institute of Electrical and Electronics Engineers – IEEE), existindo também muitas referências a conferências (com destaque para a Very Large Databases – VLDB –, e International Conference on Management of Data SIGMOD) e a publicações universitárias. Evitaram-se referências a documentos que fossem difíceis de encontrar ou a documentos de carácter puramente comercial, encontrando-se grande parte das referências em bibliotecas digitais. Incluíram-se também os livros geralmente adotados em cadeiras de bases de dados ou de matérias relacionadas com bases de dados.

Leituras Recomendadas Bachman e Williams (1964), por um lado e CODASYL (1969), por outro, permitem compreender o início das bases de dados, e os modelos e a tecnologia em uso nos anos 60. Kim (1979) faz uma análise dos sistemas relacionais existentes no final dos anos 70. O trabalho precursor das bases de dados modernas é o de Edgar Codd da IBM, publicado em 1969 e posteriormente em 1970 (Codd, 1969, 1970). Astrahan et al. (1976) e Chamberlin et al. (1981) descrevem o System R. Existem várias obras com capítulos introdutórios aos SGBD, entre as quais as de Date (2003), Ramakrishnan e Gehrke (2003), Silberschatz, Korth et al. (2010), Garcia-Molina, Ullman et al. (2008) e Elmasri e Navathe (2010). A obra de Garcia-Molina, Ullman et al. (2000) é inteiramente dedicada a questões de implementação de SGBD. Hellerstein e Stonebraker (2005) apresentam uma compilação dos trabalhos mais importantes na área, reunidos quer pelo interesse histórico, quer pela sua contribuição teórica e prática para o domínio. McGee (1981) faz uma compilação dos primeiros 25 anos da tecnologia de bases de dados. Um grupo de investigadores de bases de dados e membros da indústria juntou-se pela primeira vez em Laguna Beach, Califórnia, em 1989, e reúne-se regularmente desde então para refletir sobre os avanços na área e para identificar problemas e projetar a evolução no domínio (Silberschatz et al., 1996 e Bernstein et al., 1998). Autores como Stonebraker e Cetintemel (2005) refletem sobre o estado da arte dos SGBD e sobre os novos cenários da sua utilização.

© FCA – Editora de Informática

19


FUNDAMENTOS DE BASES DE DADOS

Bibliografia Abadi, D. (2007). Column­Stores For Wide and Sparse Data. Proceedings of 3rd Biennial Conference on Innovative Data Systems Research (CIDR). Abiteboul, S., Hull, R., Vianu, V. (1995). Foundations of databases. Addison-Wesley. Astrahan, M., Blasgen, M. et al. (1976). System R: Relational Approach to Database Management. ACM Transactions on Database Systems, 1(2). Bachman, C., Williams, S. (1964). A general purpose programming system for random access memories. Proceedings of AFIPS’64. Bernstein et al. (1998). The Asilomar Report on Database Research. ACM SIGMOD Record, 27(4). Chamberlin, D., Astrahan, M. et al. (1981). A history and evaluation of System R. Communications of the ACM, 24(10). CODASYL (1969). A Survey of Generalized Data Base Management Systems. CODASYL System Committee Technical Report, Nova Iorque. Codd. E. F. (1969). Derivability, Redundancy and Consistency of Relations in Large Data Banks. IBM Research Report RJ 599. Publicado como SIGMOD Record, 38(1), 2009. Codd, E. F. (1970). A Relational Model of Data for Large Shared Data Banks. Communications of the ACM, 13(6). Date, C. (2003). An Introduction to Database Systems. Addison-Wesley. Dittrich, J., Quiane-Ruiz, J.-A. (2012). Efficient Big Data Processing in Hadoop MapReduce. Proceedings of the VLDB Endowment VLDB Endowment, 5(12). Elmasri, R., Navathe, S. B. (2010). Fundamentals of Database Systems. 6.ª ed., Addison­ ‑Wesley. Eswaran, K., Gray, J. et al. (1976). The Notions of Consistency and Predicate Locks in a Database System. Communications of the ACM, 19(11). Gallaire, H., Minker, J., Nicolas, J.-M. (1984). Logic and Databases: A Deductive Approach. ACM Computing Surveys, 16(2). Garcia-Molina, H., Ullman, J. et al. (2000). Database System Implementation. Prentice Hall. Garcia-Molina, H., Ullman, J. et al. (2008). Database Systems: The Complete Book. Prentice Hall. Gouveia, F. (1993). Survey and Selection of OODB for Object-Oriented Simulation Environments. Institut Internationale pour l’Intelligence Artificielle, Relatório IIIA-OOSE-93-03-24. Gray, J. (2004). The Revolution in Database Architecture. Relatório Técnico MSR-TR-2004-31, Microsoft Research. 20

© FCA – Editora de Informática


1

Introdução

Härder, T., Reuter, A. (1983). Principles of Transaction-Oriented Database Recovery. ACM Computing Surveys, 15(4). Härder, T., Rothermel, K. (1993). Concurrency Control Issues in Nested Transactions. VLDB Journal, 2(1). Hellerstein, J. Stonebraker, M. (2005). Readings in Database Systems. MIT Press. Kim, W. (1979). Relational Database Systems. ACM Computing Surveys, 11(3). McGee, W (1981). Data Base Technology. IBM Journal of Research and Development, 25(5). Michaels, A., Mittman, B., Carlson, C. (1971). A Comparison of the Relational and CODASYL Approaches to Data-Base Management. ACM Computing Surveys, 8(1). Navathe, S. (1992). Evolution of Data Modeling for Databases. Communications of the ACM, 35(9). Ramakrishnan R., Gehrke, J. (2003). Database Management Systems. 3.ª ed., McGraw-Hill. Silberschatz, A. Zdonik, S. et al. (1996). Strategic directions in database systems – breaking out of the box. ACM Computing Surveys, 28(4). Silberschatz, A., Korth, H. et al. (2010). Database Systems Concepts. 6.ª ed., McGraw-Hill. Snodgrass, R. (2000). Developing Time-Oriented Database Applications in SQL. Morgan Kauf­ mann Publishers. Stonebraker, M., Kemnitz, G. (1991). The Postgres Next Generation Database Management System. Communications of the ACM, 34(10). Stonebraker, M., Cetintemel, U. (2005). One Size Fits All: An Idea Whose Time Has Come and Gone. Proceedings of the 21st International Conference on Data Engineering (ICDE ‘05). Tsichritzis, D., Lochovsky, F. (1976). Hierarchical Data-Base Management: A Survey. ACM Computing Surveys, 8(1).

EXERCÍCIOS 1 .1 Identifique algumas razões para utilizar um SGBD em vez de ficheiros simples ou de uma aplicação do tipo folha de cálculo. 1 .2

Quais os tipos principais de utilizadores que um SGBD deve suportar?

1 .3

Quais são as principais funções de um administrador de bases de dados?

1 .4 Defina independência dos dados, e explique a importância desta característica. 1 .5 Descreva os principais componentes da arquitetura de um SGBD.

© FCA – Editora de Informática

21


FUNDAMENTOS DE BASES DE DADOS

1 .6

Quais os componentes que garantem as características ACID?

1 .7

Que aspetos podem influenciar o desempenho de um SGBD?

1 .8

Enuncie algumas diferenças entre uma transação e um programa.

1 .9 Descreva as principais características que uma transação deve exibir. 1 .10 O que são as características ACID? 1 .11

Enuncie alguns problemas que poderiam acontecer se as transações não respeitassem as características ACID.

1 .12

Quais são os níveis ANSI/SPARC e o que significam?

1 .13

Quais são as principais características do Modelo Relacional?

1 .14

Quais são as principais etapas de projeto de uma base de dados?

1 .15

Quais dessas etapas dependem de um SGBD em particular?

1 .16

Quais são os modelos de dados mais utilizados nas diferentes etapas de projeto de uma base de dados?

1 .17 Identifique algumas aplicações que utilizam bases de dados.

22

© FCA – Editora de Informática


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.