|
1 Conceitos básicos
|
19
|
|
1.1 Bancos de dados versus coleção de arquivos
|
20
|
|
1.2 Sistemas gerenciadores de bases de dados
|
21
|
|
1.3 Um exemplo: a base de dados Torneios de Tênis da ATP
|
23
|
|
1.4 Conexões lógicas a sistemas gerenciadores de bases de dados
|
25
|
|
1.4.1 Conexões tipo time sharing
|
25
|
|
1.4.2 Conexão tipo servidor de arquivos
|
26
|
|
1.4.3 Conexão tipo cliente-servidor
|
26
|
|
1.4.4 Conexão via servidor de aplicações
|
28
|
|
1.4.5 Conexão via servidor Web (Internet)
|
28
|
|
2 Modelagem de dados
|
31
|
|
2.1 Projeto top down de bases de dados
|
31
|
|
2.2 O modelo entidade-relacionamento
|
33
|
|
2.2.1 Tipos de atributos
|
35
|
|
2.2.2 Relacionamentos
|
36
|
|
2.2.3 Conjunto de entidades fracos
|
39
|
|
2.2.4 Auto-relacionamentos
|
39
|
|
2.2.5 *Extensões ao modelo entidade-relacionamento
|
41
|
|
2.2.6 Un exemplo de projeto conceitual usando o MER: a BD Torneios de Tênis da ATP
|
44
|
|
2.2.7 Convenções para nomes - considerações práticas
|
46
|
|
2.2.8 Exercícios
|
47
|
|
3 Projeto lógico de dados
|
51
|
|
3.1 Modelos lógicos históricos
|
51
|
|
3.2 O modelo relacional
|
52
|
|
3.2.1 Valores nulos
|
55
|
|
3.2.2 Restrições de integridade
|
55
|
|
3.2.3 Restrições sobre atributos
|
56
|
|
3.2.4 Mapeamento do MER para o modelo relacional
|
57
|
|
3.2.5 Mapeamento do projeto conceitual da BD Torneios de Tênis para o MR
|
61
|
|
3.2.6 Exercícios
|
61
|
|
4 Linguagem de manipulação de dados realcionais
|
63
|
|
4.1 Álgebra relacional (AR)
|
63
|
|
4.1.1 Exemplos de consultas usando álgebra relacional
|
67
|
|
4.1.2 Um exemplo mais elaborado: composições de materiais
|
69
|
|
4.1.3 *Operador divisão da álgebra relacional
|
71
|
|
4.2 Cálculo relacional de tuplas (CRT)
|
73
|
|
4.2.1 Exercícios resolvidos sobre CRT
|
76
|
|
4.3 Exercícios
|
77
|
|
5 Conceitos de normalização de dados relacionais
|
81
|
|
5.1 Motivação
|
81
|
|
5.2 O conceito de dependência funcional (df)
|
82
|
|
5.2.1 Regras de interferência de Armstrong
|
83
|
|
5.2.2 Formas normais (FN) de relações
|
84
|
|
5.2.3 Quarta forma normal
|
86
|
|
5.2.4 *O conceito de fecho de um conjunto de atributos
|
88
|
|
5.2.5 Decomposição de relações não normalizadas
|
90
|
|
5.3 Considerações práticas sobre normalização
|
94
|
|
5.4 Exercícios
|
95
|
|
6 A Linguagem SQL
|
99
|
|
6.1 Histórico
|
99
|
|
6.2 Características básicas
|
100
|
|
6.2.1 O ambiente de um SGBD relacional
|
101
|
|
6.2.2 Tipos de dados
|
103
|
|
6.2.3 Comandos para definição de dados
|
104
|
|
6.2.4 Comandos para alterar a definição de tabelas
|
109
|
|
6.2.5 Um guia prático para nomes de tabelas e colunas
|
110
|
|
6.3 O comando select
|
110
|
|
6.3.1 Características básicas
|
111
|
|
6.3.2 Operadores de comparação
|
113
|
|
6.3.3 Conectores lógicos and, or, not
|
114
|
|
6.3.4 Operadores between
|
114
|
|
6.3.5 Operadores in, not in
|
114
|
|
6.3.6 Operador like
|
115
|
|
6.3.7 Funções para manipular cadeias de caracteres
|
116
|
|
6.3.8 Operação de junção
|
118
|
|
6.3.9 Sinônimos para nomes de tabelas (alias)
|
119
|
|
6.3.10 Problemas com operadores nulos
|
120
|
|
6.3.11 Subconsultas com o operador in
|
122
|
|
6.3.12 Subconsultas com operador de comparação
|
123
|
|
6.3.13 Operadores all e any em subconsultas
|
124
|
|
6.3.14 Operadores exists e not exists
|
125
|
|
6.3.15 Escopo de nomes em comandos select
|
126
|
|
6.3.16 Operadores união (union), interseção (intersect) e diferença (except)
|
127
|
|
6.3.17 Cláusula order by
|
128
|
|
6.3.18 Funções que produzem valores agregados
|
129
|
|
6.3.19 Funções agragado na cláusula select
|
129
|
|
6.3.20 Miscelânea
|
131
|
|
6.4 Atualização de tabelas
|
132
|
|
6.4.1 Comando insert
|
132
|
|
6.4.2 Comando update
|
133
|
|
6.4.3 Comando delete
|
134
|
|
6.4.4 Tabelas temporárias, tabelas criadas dinamicamente
|
134
|
|
6.5 *Características avançadas do comando select
|
135
|
|
6.5.1 Cláusula group by
|
135
|
|
6.5.2 Cláusula select com função agregado seguida de cláusula group by
|
136
|
|
6.5.3 Cláusula having
|
137
|
|
6.5.4 Exercícios
|
139
|
|
6.5.5 Junção natural e junção exterior
|
144
|
|
6.6 Visões (Views)
|
146
|
|
6.6.1 Comandos para manipular visões
|
147
|
|
6.6.2 Atualização de visões
|
149
|
|
6.7 *Expressões com tipos de dados para datas e horas
|
150
|
|
6.7.1 Visão geral
|
151
|
|
6.7.2 Expressões aritméticas envolvendo datetime e interval
|
153
|
|
6.7.3 Exemplos
|
154
|
|
6.7.4 Compatibilidade de atribuições e comparações
|
155
|
|
6.8 *Usos avançados do comando select
|
156
|
|
6.8.1 Exercícios
|
162
|
|
6.8.2 **Expressões-tabelas
|
163
|
|
6.8.3 Exercícios
|
171
|
|
6.8.4 **Utilização dos operadores de diferença e interseção na formulação de consultas complexas
|
174
|
|
6.8.5 Um roteiro para elaboração de consultas complexas
|
176
|
|
6.8.6 Exercícios
|
177
|
|
6.8.7 Operadores case, match e unique
|
177
|
|
6.8.8 Idiossincrasias, peculiaridades
|
179
|
|
6.8.9 Exercícios
|
180
|
|
7 Restrições de integridade, stored procedures e triggers
|
185
|
|
7.1 Restrições de integridade
|
185
|
|
7.1.1 Restrições sobre uma tabela base
|
186
|
|
7.1.2 Restrições sobre tabela base do tipo check (condition)
|
187
|
|
7.1.3 Restrições sobre domínios
|
189
|
|
7.1.4 Asserções
|
190
|
|
7.1.5 Tratamento de violação de restrições de integridade referencial
|
191
|
|
7.1.6 Verificação postergada de restrições
|
192
|
|
7.1.7 Exercícios
|
193
|
|
7.2 Procedimentos armazenados (stored procedures)
|
194
|
|
7.3 SQL procedural
|
196
|
|
7.4 Gatilhos (triggers)
|
199
|
|
7.4.1 Visão geral
|
199
|
|
7.4.2 Quando usar before triggers ou after triggers?
|
203
|
|
7.4.3 Problemas na implementação de gatilhos
|
203
|
|
7.4.4 Exercícios
|
204
|
|
8 Programação SQL via linguagem hospedeira
|
205
|
|
8.1 Sintaxe básica
|
205
|
|
8.1.1 SQL dinâmico
|
210
|
|
8.1.2 Um exemplo: SQL dinâmico para acesso a BDs relacionais heteroêneas via WEB
|
212
|
|
9 Administração e segurança de dados, transações
|
217
|
|
9.1 Organização de um SGBD padrão SQL
|
217
|
|
9.1.1 Tabelas do catálogo (information_squema)
|
218
|
|
9.2 Segurança de dados
|
219
|
|
9.3 O conceito de transação
|
222
|
|
9.3.1 Transações concorrentes
|
225
|
|
9.3.2 Controle de concorrência
|
226
|
|
9.3.3 Níveis de isolação de transações em SQL/92
|
228
|
|
10 Recursos do padrão SQL: 1999
|
231
|
|
10.1 Extensões ao modelo relacional
|
231
|
|
10.1.1 Novos tipos de dados
|
231
|
|
10.1.2 Novos predicados
|
232
|
|
10.1.3 Operadores Rollup e Cube
|
233
|
|
10.1.4 Privilégios para roles
|
235
|
|
10.2 **Recursão em consultas SQL
|
235
|
|
10.2.1 Exercícios
|
238
|
|
10.3 Recursos de orientação a objetos
|
240
|
|
A Comparação de SGBDS relacionais
|
243
|
|
A.1 Exemplos de acesso a bases de dados relacionais viz Php
|
244
|
|
A.1.1 Exemplo de acesso a uma BD MySql
|
244
|
|
A.1.2 Exemplo de acesso a uma BD Firebird ou Interbase
|
247
|
|
A.1.3 Exemplo de acesso a uma BD Postgres
|
249
|
|
A.1.4 Exemplo de uma acesso a uma BD Oracle
|
250
|
|
A.2 Um exemplo completo: processador SQL interativo
|
253
|
|
A.3 Ambientes de programação SQL
|
260
|
|
A.3.1 Arquivos de configuração
|
262
|
|
Referências bibliográficas
|
263
|
|
Índice Remissivo
|
265
|