SQL Avançado e Teoria Relacional
Copyright
¤
Editora Ciência Moderna Ltda., 2013Todos os direitos para a língua portuguesa reservados pela EDITORA CIÊNCIA MODERNA LTDA.
De acordo com a Lei 9.610, de 19/2/1998, nenhuma parte deste livro poderá ser reproduzida, transmitida e gravada, por qualquer meio eletrônico, mecânico, por fotocópia e outros, sem a prévia autorização, por escrito, da Editora.
Editor: Paulo André P. Marques
Produção Editorial: Aline Vieira Marques Assistente Editorial: Lorena Fernandes Capa: Carlos Arthur Candal
Diagramação: Tatiana Neves Copidesque: Eveline Vieira Machado
Várias Marcas Registradas aparecem no decorrer deste livro. Mais do que simplesmente listar esses nomes e informar quem possui seus direitos de exploração, ou ainda imprimir os logotipos das mesmas, o editor declara estar utilizando tais nomes apenas para fins editoriais, em benefício exclusivo do dono da Marca Registrada, sem intenção de infringir as regras de sua utilização. Qualquer semelhança em nomes próprios e acontecimentos será mera coincidência.
FICHA CATALOGRÁFICA
SOUZA, Thiago Hernandes de. SQL Avançado e Teoria Relacional
Rio de Janeiro: Editora Ciência Moderna Ltda., 2013.
1.
Programação de Computador – Programas e Dados 2. Ciência da ComputaçãoI — Título
ISBN: 978-85-399-0428-0 CDD 005 004
Editora Ciência Moderna Ltda. R. Alice Figueiredo, 46 – Riachuelo
Rio de Janeiro, RJ – Brasil CEP: 20.950-150 Tel: (21) 2201-6662/ Fax: (21) 2201-6896 E-MAIL:[email protected]
Introdução
Nos dias atuais, uma das preocupações de programadores é o aprendizado de
novas tendências tecnológicas para área de TI (Tecnologia da Informação). Muitos
desses se deparam constantemente com reciclagens, especializações e foco em
linguagens que possam trabalhar fornecendo informações para o banco de dados
corporativo em que desenvolve incumbências.
Essa é uma realidade! Não obstante, uma parte da TI que tem sido pouco
explorada e enfocada para um resultado mais profissional e que flexibilize a
implementação a qualquer momento de uma aplicação é o banco de dados.
Um banco de dados, juntamente com suas teorias de otimização e
normalização, na verdade estão em segundo plano, tendo como objetivo principal o
desenvolvimento de trabalhos demandados e a grande ansiedade em colocá-los para
“funcionar”.
Com isso, bancos de dados mais complexos e que requeiram um maior fluxo
de dados e constantes processamentos de procedimentos armazenados e instruções
para atualização ou correção acabam se tornando: instáveis, lentos e duvidosos
para certas empresas. Além de propícios aos famosos “travamentos” e reinicialização
do SGBD.
Mesmo assim, pelo desconhecimento e até mesmo pela pouca ênfase na
Teoria Relacional, servidores estão cada vez mais sendo escolhidos pela
escalabilidade vertical. Esta, que trabalha com máquinas cada vez mais potentes
e que, mesmo assim, ao não conseguir atender a demandas, são trocados e
configurados constantemente para manutenção operacional com o objetivo de
rapidez e confiabilidade parcial.
A Teoria Relacional, aliada à escalabilidade horizontal, tende a reduzir gastos
com grandes e potentes servidores, devido à característica de distribuir processamentos,
demandas e demais tarefas pertinentes a um sistema de computador.
IV SQL Avançado e Teoria Relacional
Contudo, não basta! Se os mandamentos de Codd e as Formas Normais(FN)
não forem estabelecidos corretamente e pré-dispostos a receber adaptações e
implementações futuras, o grande responsável em manter, armazenar e disponibilizar
os dados para estatísticas e consultas empresariais, o banco de dados, não vai passar de
um “sofrimento” e “dor de cabeça” para uma corporação, tendo que conviver com
momentos de “pico” e, consequentemente, a famosa “lentidão” de sistemas.
V Sumário
Sumário
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 1
SQL (Structured Query Language) e Teoria Relacional ... 1
Capítulo 2
Capítulo 2
Capítulo 2
Capítulo 2
Capítulo 2
Valor e Variável ... 3
Capítulo 3
Capítulo 3
Capítulo 3
Capítulo 3
Capítulo 3
Características do Emprego do Banco de Dados ... 5
Capítulo 4
Capítulo 4
Capítulo 4
Capítulo 4
Capítulo 4
Linguagens do Banco de Dados ... 7
Capítulo 5
Capítulo 5
Capítulo 5
Capítulo 5
Capítulo 5
Interfaces do SGBD ... 9
Capítulo 6
Capítulo 6
Capítulo 6
Capítulo 6
Capítulo 6
Ambiente dos Sistemas de Banco de Dados ... 11
6.1 Módulos Componentes do SGBD ... 11
Capítulo 7
Capítulo 7
Capítulo 7
Capítulo 7
Capítulo 7
Utilitários do Sistema do Banco de Dados ... 13
Capítulo 8
Capítulo 8
Capítulo 8
Capítulo 8
Capítulo 8
Arquiteturas para SGBD ... 15
VI SQL Avançado e Teoria Relacional
Capítulo 9
Capítulo 9
Capítulo 9
Capítulo 9
Capítulo 9
Projeto de Banco de Dados e afim com o modelo relacional ... 17
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 10
0
0
0
0
Modelo Entidade-Relacionamento ... 19
10.1 Generalização ... 19 10.2 Especialização ... 20 10.3 Relacionamentos ... 20 10.4 Condicionalidade ... 20 10.5 Expressão do Relacionamento ... 21Capítulo 11
Capítulo 11
Capítulo 11
Capítulo 11
Capítulo 11
Relacionamentos Especiais ... 23
11.1 Relacionamentos entre Múltiplas Entidades ... 23
11.2 Modelo Lógico Relacional ... 23
11.2.1 Principais Vantagens da Abordagem Relacional ... 24
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 12
2
2
2
2
Regras de Codd ... 25
12.1 Chaves e Índices ... 2612.2 Regras de Integridade no Modelo Relacional ... 27
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 13
3
3
3
3
Derivação do Modelo E-R para o Modelo Relacional ... 29
13.1 Conversão do Modelo Conceitual no Modelo Lógico Relacional ... 29
13.2 Generalizações ... 31
13.3 Normalização ... 31
13.4 Sentido de Cima para Baixo (TOP-DOWN) ... 31
VII Sumário
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 14
4
4
4
4
Anomalias ... 33
Capítulo15
Capítulo15
Capítulo15
Capítulo15
Capítulo15
Primeira Forma Normal (1FN) ... 35
15.1 Variação Temporal e a Necessidade de Histórico ... 35
15.2 Dependência Funcional ... 36
15.3 Dependência Funcional Total (Completa) e Parcial ... 36
15.4 Dependência Funcional Transitiva ... 37
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 16
6
6
6
6
Segunda Forma Normal (2FN) ... 39
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 17
7
7
7
7
Terceira Forma Normal (3FN) ... 41
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 1
Capítulo 18
8
8
8
8
Cláusulas SQL ... 43
18.1 Operadores Lógicos ... 43 18.2 Operadores Relacionais ... 44 18.3 Funções de Agregação ... 4418.4 Sistemas de Banco de Dados que usam SQL ... 44
Capítulo 19
Capítulo 19
Capítulo 19
Capítulo 19
Capítulo 19
Praticando com SQL ... 47
19.1 Criação das Entidades/Tabelas do Banco de Dados ... 51
19.2 Realizando INSERTs nas Tabelas ... 55
19.3 Trabalhando com SELECT ... 66
19.4 Trabalhando com JOINs ... 67
VIII SQL Avançado e Teoria Relacional
19.6 Funções de Agregação ... 74
19.7 Operador Relacional LIKE ... 77
19.8 >, <, >=, <= e BETWEEN ... 79
19.9 GROUP BY, ORDER BY e HAVING ... 80
19.10 WHERE ... 85
19.11 Processamento Condicional com CASE ... 86
19.12 Encapsulamento ... 87
Capítulo 20
Capítulo 20
Capítulo 20
Capítulo 20
Capítulo 20
Aprofundando no SQL ... 89
Capítulo 2
Capítulo 2
Capítulo 2
Capítulo 2
Capítulo 21
1
1
1
1
Otimização ... 97
21.1 Erros Comuns na Definição das Entidades ... 98
21.2 Chaves Primárias Compostas ... 99
21.3 UPDATE e DELETE ... 100
21.4 Integridade Relacional Referencial ... 101
21.5 Campos Calculados ... 102
Capítulo 22
Capítulo 22
Capítulo 22
Capítulo 22
Capítulo 22
Permissões para os Usuários ... 107
22.1 Permissão para Todos os Objetos do Banco de Dados “academicosqlavancado” .. 107
22.2 Excluindo as Permissões para Todos os Objetos do Banco de Dados “academicosqlavancado” ... 108
22.3 Permissão por Tabelas ... 108
22.4 Excluindo a Permissão por Tabelas ... 109
Capítulo 23
Capítulo 23
Capítulo 23
Capítulo 23
Capítulo 23
Praticando um Pouco Mais ... 111
IX Sumário
23.2 Considerações Finais da Performance com o SQL ... 121
23.2.1 Aperfeiçoando a definição de QUERIES (QUERY) ... 123
23.2.2 Dicas para a normalização das entidades e a integridade dos dados ... 124
Capítulo 2
Capítulo 2
Capítulo 2
Capítulo 2
Capítulo 24
4
4
4
4
Prática Final Avançada - Banco de Dados Normalizado para uma Empresa de
Ônibus ...127
24.1 Diagrama E-R (Entidade-Relacionamento) Conceitual ... 127
24.2 Criando o Banco de Dados ... 129
24.2.1 Tabelas ... 133 24.2.2 Indexes ... 142 24.2.3 Triggers ... 144 24.2.4 Functions ... 146 24.2.5 Views ... 147 24.2.6 Procedures ... 149