Thiago Hernandes de Souza
SQL Avançado e Teoria Relacional
Copyright¤ Editora Ciência Moderna Ltda., 2013
Todos 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ção
I — Título
ISBN: 978-85-399-0428-0
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]
WWW.LCM.COM.BR
CDD 005
004
05/13
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.
Sumário
V
Sumário
Capítulo 1
SQL (Structured Query Language) e Teoria Relacional ........................................... 1
Capítulo 2
Valor e Variável .............................................................................................................. 3
Capítulo 3
Características do Emprego do Banco de Dados .................................................... 5
Capítulo 4
Linguagens do Banco de Dados ................................................................................. 7
Capítulo 5
Interfaces do SGBD ...................................................................................................... 9
Capítulo 6
Ambiente dos Sistemas de Banco de Dados ......................................................... 11
6.1 Módulos Componentes do SGBD ......................................................................... 11
Capítulo 7
Utilitários do Sistema do Banco de Dados ............................................................. 13
Capítulo 8
Arquiteturas para SGBD............................................................................................. 15
VI
SQL Avançado e Teoria Relacional
Capítulo 9
Projeto de Banco de Dados e afim com o modelo relacional ............................. 17
Capítulo 1
0
10
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 .......................................................................... 21
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
2
12
Regras de Codd ........................................................................................................... 25
12.1 Chaves e Índices .................................................................................................. 26
12.2 Regras de Integridade no Modelo Relacional ................................................. 27
Capítulo 1
3
13
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
13.5 Sentido de Baixo para Cima (BOTTON-UP) ...................................................... 31
Sumário
VII
Capítulo 1
4
14
Anomalias .................................................................................................................... 33
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
6
16
Segunda Forma Normal (2FN) .................................................................................. 39
Capítulo 1
7
17
Terceira Forma Normal (3FN) ................................................................................... 41
Capítulo 1
8
18
Cláusulas SQL .............................................................................................................. 43
18.1 Operadores Lógicos ............................................................................................. 43
18.2 Operadores Relacionais ...................................................................................... 44
18.3 Funções de Agregação ........................................................................................ 44
18.4 Sistemas de Banco de Dados que usam SQL ................................................. 44
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
19.5 SUBSELECTs .......................................................................................................... 72
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
Aprofundando no SQL ................................................................................................ 89
Capítulo 2
1
21
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
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
Praticando um Pouco Mais .................................................................................... 111
23.1 Exercitando as Instruções SQL com o Banco “estoqueentradassaidas” ...... 118
Sumário
IX
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
4
24
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
Capítulo
1
SQL (Structured Query Language)
e Teoria Relacional
A teoria relacional é geralmente incrompreendida por diversos programadores de banco de dados ou DBAs (Database Administrators). Com isso, a grande maioria dos profissionais da área de banco de dados não sabe o quanto é importante a
compreensão desse tópico.
Na verdade, o que muitos profissionais de TI (Tecnologia da Informação) não
sabem é que o modelo relacional é o fundamento para a criação de qualquer banco
de dados bem estruturado e de alta disponibilidade. Ou seja, é o alicerce para o bom
uso da linguagem SQL em qualquer cenário ou metamodelo de dados.
Toda parte relacional envolve consistentemente os registros, a diferença entre a
relação de valores e a relação de variáveis, a importância de nomes de atributos e as
regras cruciais para a integridade de constraints.
Constraint é um fator elementar que tem como principal objetivo referenciar
as entidades.
Download

Thiago Hernandes de Souza