BANCO DE DADOS
Transcript of BANCO DE DADOS
Araújo 2
Índice ...
• Conceitos de Bancos de Dados
• Arquiteturas de SGBD
• SGBD X SGA
• Modelos de dados
• Modelos Lógicos de Dados
• Modelo de Entidades e Relacionamentos
• Extensões do MER
• Mapeamento MER MR
• Modelo Relacional
• Normalização
• Linguagem SQL
• Consultas mais
complexas
• Stored Procedure
• Triggers
Araújo 3
CONCEITOS DE BANCO DE DADOS...
• CHU - 1983
Um banco de dados é um conjunto de arquivos
relacionados entre si
• DATE - 1985
Um banco de dados é uma coleção de dados
operacionais armazenados usados pelos
sistemas de aplicação de uma determinada
organização
Araújo 4
...CONCEITOS DE BANCO DE DADOS...
• ELMARSI & NAVATHE - 1989
Um banco de dados é uma coleção de dados
relacionados
• ENGLES
Um banco de dados é uma coleção de dados
operacionais usados pelos sistemas aplicativos
de uma empresa
Araújo 5
...CONCEITOS DE BANCO DE DADOS...
Dados Operacionais
Projetos Funcionários
DepartamentosProdutos Fornecedores
Aloca
Fornece Lota
Araújo 6
...CONCEITOS DE BANCO DE DADOS...
cpf-cgc, nome, ender, dt-nasc nºconta, sld-atu, sld-med, cpf-cgc
SGBDcpf-cgc, nºcotas
CONTA CORRENTE FUNDO DE INVESTIMENTO
SISTEMAS QUE USAM SGBD
BD . . .
SI . . .
Araújo 7
...CONCEITOS DE BANCO DE DADOS...
Ambiente de Banco de Dados envolve:
• Dados - em um ou mais arquivos
• Metadados - Dicionário de Dados
• Software - SGBD (interface entre usuários e dados)
• Hardware - discos
• Usuários - DBA, Programadores de Aplicação, Usuários Finais
Araújo 8
...CONCEITOS DE BANCO DE DADOS...
• SGBD
– dá suporte ao acesso dos usuários aos dados
– esconde do usuário detalhes de
armazenamento dos dados
• Programador de Aplicação
– codifica programas batch ou on-line para
manter o BD
Araújo 9
...CONCEITOS DE BANCO DE DADOS...
• DBA - Administrador de BD define:
– que dados manter no BD
– estrutura que deve ter o BD
– estratégias de acesso
– que esquema de back-up adotar
– procedimentos de autorização
– como monitorar / sintonizar/ reorganizar o BD
Araújo 10
...CONCEITOS DE BANCO DE DADOS...
• Usuário Final
Acessa o Banco de Dados via:
– linguagem de consulta (query language )
– programas de aplicação
Araújo 11
...CONCEITOS DE BANCO DE DADOS...
• Um BD representa aspectos do mundo real
• Um BD é projetado, construído e os dados são
nele armazenados com algum propósito
• Um BD é definido e mantido por uma coleção de
programas (SGBD)
• Sistema de Banco de Dados = Dados +
Programas (SBD = BD + SGBD )
Araújo 12
...CONCEITOS DE BANCO DE DADOS...
Bancos de dados X Linguagens
• DDL - Linguagem de definição de dados
(create, drop, alter...)
• DML - Linguagem de manipulação de dados
(insert, update, delete, select, ...)
• DCL - Linguagem de controle de acesso aos
dados (grant, revoke, commit, rollback, ...)
Araújo 13
...CONCEITOS DE BANCO DE DADOS...
Características de um SGBD:
• BD = Dados + Metadados
Um sistema de Banco de Dados contém,
além dos dados normais, uma descrição
completa desses dados num dicionário de
dados (Catálogo)
Araújo 14
...CONCEITOS DE BANCO DE DADOS...
Características de um SGBD:
• Abstração de dados
Um SGBD permite uma representação conceitual dos dados evitando preocupação com detalhes de armazenamento de dados
• Suporte a múltiplas visões de dados
Cada usuário acessa apenas o que lhe é dado direito a acessar
Araújo 15
...CONCEITOS DE BANCO DE DADOS...
Características de um SGBD:• Controle de redundância
Sem repetição de dados não há inconsistência
• Compartilhamento de dados
Acesso multiusuário com controle de
concorrência garantido
• Processamento de transação
Recuperação em caso de falha
Araújo 16
...CONCEITOS DE BANCO DE DADOS...
Características de um SGBD:• Segurança contra acesso indevido
Diferentes visões asseguram confidencialidade
• Múltiplas Interfaces
Acesso via menu, linguagem natural, query
language, linguagem de programação
Araújo 17
...CONCEITOS DE BANCO DE DADOS...
Características de um SGBD:
• Relacionamentos complexos
Uma entidade pode relacionar-se com outras de
forma binária, ternária, ...
• Restrições de Integridade
Armazenadas no BD “enxugam” os programas
de aplicação
Araújo 18
...CONCEITOS DE BANCO DE DADOS...
Características de um SGBD:
• Independência lógica de dados
A capacidade de se modificar o esquema conceitual sem ter que modificar o esquema externo ou programas de aplicação. Ex.: adição de uma coluna numa tabela no modelo conceitual não exige alteração dos programas
Araújo 19
...CONCEITOS DE BANCO DE DADOS...
Características de um SGBD:
• Independência física de dados
É a capacidade de se modificar o esquema Interno sem ter que modificar os esquemas conceitual ou externo.
Ex.: a inclusão de um índice no esquema interno não exige alteração dos programas nem do esquema conceitual
Araújo 20
...CONCEITOS DE BANCO DE DADOS
Características de um SGBD:
• Dados separados de programas
Definição das estruturas de dados armazenada fora dos programas de aplicação e dentro do SGBD (catálogo): alteração de estruturas de dados evita recompilação de programas
Araújo 21
ARQUITETURAS DE SGBD...
Arquitetura de 3 Níveis (Visões)
Externo (Visão de usuário)
(Usuário)
Conceitual (Visão Total do BD)
(Adm. Dados)
Interno (Visão do Armazenamento)
(DBA)
. . .
Araújo 22
... ARQUITETURAS DE SGBD
ESQUEMA CONCEITUAL:
CLIEN (Nome, DataCadast, LimCred)
ESQUEMA EXTERNO: Arq. 3 Esquemas
CLIEN (Nome, DataCadast, LimCred)
PROD (Codigo, Descriçao, Preço)
ESQUEMA INTERNO:
Formato do Registro CLIEN .....
Formato do Registro PROD .....
Araújo 23
SGBD X SGA ...
• SGBD - software responsável pela definição,
criação e manutenção de um BD
• SGA - conjunto de rotinas do sistema operacional
responsáveis pelo sistema de arquivos (SA) e
respectivos métodos de acesso
• SA - arquivos convencionais (seqüenciais,
indexados, randômicos) e suas operações
Araújo 24
... SGBD X SGA ...
Mundo real
MER
SGBDOORelacional
Rede
Hierárquico
SGBD Específico
SGA
Máquina
Araújo 26
MODELOS DE DADOS ...
Ferramenta usada para descrever a
estrutura de um BD
Compõe-se de:
• Estruturas de dados
• Operações
• Restrições de integridade
Araújo 27
... MODELOS DE DADOS ...
Conceitual
Lógico
Físico
Modelo Conceitual
descreve dados num nível de
abstração muito próximo ao
mundo real
Exemplos:
•Modelo Semântico
•MER
Mundo
real
Araújo 28
... MODELOS DE DADOS ...
Conceitual
Lógico
Físico
Modelo Lógicodescreve dados ao nível de registro bem próximo da
implementação física.
Exemplos:• Relacional• Rede• Hierárquico
Mundo
real
Araújo 29
... MODELOS DE DADOS ...
Conceitual
Lógico
Físico
Modelo Físico
descreve as estruturas de dados
ao nível de armazenamento
físico dos dados, definindo:
•Tipo e tamanho de dados
• Índices
Mundo
real
Araújo 30
... MODELOS DE DADOS ...
Fase do Projeto de BD Modelo de Dados
Conceitual Semântico / MER
Lógico
Relacional
Rede
Hierárquico
Físico Físico
Mundo
real
Araújo 31
... MODELOS DE DADOS
Esquema
Descrição gráfica ou textual de um BD conforme
um modelo de dados
Exemplo de esquema relacional:
FUNC(mat, nome, sal, dep)
DEPA(dep, descr)
DEPE(mat, seq, nomd,sexd)
Araújo 32
MODELOS LÓGICOS DE DADOS ...
RELACIONAL
• Entidades como tabelas e relacionamentos como colunas em pares de tabelas
• Restrições de Integridade:
– componente de PK não pode ser null
– para cada valor de FK em uma tabela deve existir um valor de PK em outra tabela
• Operações: seleção, projeção, junção, união ...
Araújo 33
... MODELOS LÓGICOS DE DADOS ...
RELACIONAL
• Dados armazenados de forma tabular
• Usuário vê um conjunto de tabelas
• Ligações implícitas compartilhando chaves
num nível lógico
• Navegação automática: otimizador de query
Araújo 35
... MODELOS LÓGICOS DE DADOS
• SGBD´S RELACIONAIS
– ORACLE
– INGRES
– DB2
– SQL SERVER
– MYSQL
– POSTGRESQL
Araújo 36
...POR QUE MODELAGEM DE DADOS ?
• modelo prévio de dados é um
excelente instrumento de documentação
do mundo real, em tempo de entrevista
• levanta e documenta a parte mais estável
de uma aplicação: os dados
• execelente ferramenta gráfica de projeto
conceitual de bd
Araújo 37
MODELO DE ENTIDADES E RELACIONAMENTOS (MER) ...
• proposto por Peter S. Chen - 1976
• entidade-algo sobre o que se armazena dados
-representação abstrata de algo do mundo real
ex.: aluno, cliente, nota fiscal, ...
• conjunto de entidades - grupo de entidades com características semelhantes ex.: alunos, clientes, notas fiscais,...
Araújo 38
... MER ...
• relacionamento - associação entre elementos de conjuntos de entidades
• relacionamento binário - é um par ordenado (e1, e2), onde e1 e e2 são respectivamente elementos dos conjuntos das entidades E1 e E2
ALUNOS DISCIPLINASCURSA
MAT NOM COD DESNOTA PERÍODO
Araújo 39
... MER ...
• conjunto de relacionamentos - grupo de relacionamentos do mesmo tipo ; no caso binário, conjunto de pares ordenados c (a, d) onde: a e d D
• grau de um relacionamento - número de conjuntos de entidades envolvidos no relacionamento. ex.: unário, binário, ternário, ...
Araújo 40
... MER ...
• classe ou cardinalidade dos relacionamentos
razão entre as quantidades de entidades com
que cada conjunto participa do relacionamento
• exemplos de classes de relacionamentos:
– binários: 1 : 1 1 : n m : n
– ternários: 1 : m : n m : n : p
Araújo 41
... MER ...
PROJETOS
FUNCIONÁRIOS DEPARTAMENTOS
CHEFIA
TRABALHAALOCA
GERENCIA
DT-POSSE
DT-ALOCHOR-TRAB
Araújo 42
... MER ...
• RELACIONAMENTO UNÁRIO OU RECURSIVO OU
AUTORELACIONAMENTO
PESSOAS PRODUTOS
CASA COMPÕE
ESPOSA MARIDO
1 1 M N
É-COMPOSTO É-COMPONENTE
PAPEL DA ENTIDADE NO RELACIONAMENTO
Araújo 43
... MER ...
• RELACIONAMENTO TERNÁRIO
ITENS P-R-I REQUISIÇÕES
PEDIDOS
M N
P
- A UM ITEM E UM PEDIDO CORREPONDEM N REQUISIÇÕES
- A UMA REQUISIÇÃO E UM PEDIDO CORRESPONDEM M ITENS
- A UMA REQUISIÇÃO E UM ITEM CORRESPONDEM P PEDIDOS
Araújo 44
... MER ...
• RELACIONAMENTO TERNÁRIO ...
PROFESSORES P-A-D ALUNOS
DISCIPLINAS
1 N
M
- UM ALUNO CURSA UMA DISCIPLINA COM UM PROFESSOR
- UM PROFESSOR MINISTRA UMA DISCIPLINA PARA N ALUNOS
- UM PROFESSOR MINISTRA PARA UM ALUNO M DISCIPLINAS
Araújo 45
... MER
• RELACIONAMENTO QUATERNÁRIO
CLIENTES
EXECUTA
FUNCIONÁRIOS
ATIVIDADESSISTEMASM
N
P
Q
CDA
NMA
CDS
NMS
NMFMAT
NMCCDC
DT-FIMDT-INI
HOR-INI HOR-FIM
Araújo 46
EXTENSÕES DO MER ...
• atributos compostos - formados por mais de um atributo
• atributos multivalorados - levam uma entidade a mais de um ponto do conjunto de valores
CLIENTESoo FONES
oENDEREÇO
oLOGRADOUROo CEP
oo
o APTO
NUMNOME
Araújo 47
... EXTENSÕES DO MER ...
• parcialidade / totalidade
- nem todo funcionário gerencia um departamento ( parcial)
- todo departamento é gerenciado por um funcionário (total)
FUNCIONÁRIOS DEPARTAMENTOSGERENCIA1 1
Araújo 48
... EXTENSÕES DO MER ...
• RELACIONAMENTOS TOTAIS E PARCIAIS
PESSOAS CIDADES
MORA
NASCE
CASA
1 1
N 1
N 1
NOME
POPULAÇÃO
DT-NASCNOME
Araújo 49
... EXTENSÕES DO MER ...
• cardinalidade dos relacionamentos com
valores máximo e mínimo de entidades que
se associam
• chave - identifica entidades
ALUNOS DISCIPLINASCURSA
( 0 , 40 ) ( 1 , 6 )
MAT NOM COD DESPERÍODONOTA
Araújo 50
... EXTENSÕES DO MER ...
Agregação / Decomposição
Alunos DisciplinasCursa
Turmas
Ensina
Professores
Aluno “é-parte”
da Turma
Disciplina “é-parte”
da Turma
Não há herança
m n
Araújo 51
... EXTENSÕES DO MER ...
Médicos PacientesAtende
Consultas
Faz
Exames
Médico “é-parte”
da Consulta
Paciente “é-parte”
da Consulta
Não há herança
AGREGAÇÃO - identificação de uma superentidade
a partir do relacionamento entre outras entidades
m n
Araújo 52
... EXTENSÕES DO MER ...
• agregação - abstração que permite:
- tratar relacionamentos como entidades de nível
mais alto
- modelar um relacionamento entre uma entidade e
um relacionamento (este geralmente m : n)
Araújo 53
... EXTENSÕES DO MER ...
• GENERALIZAÇÃO / ESPECIALIZAÇÃO
CLIENTES
PESSOAS
FÍSICAS
PESSOAS
JURÍDICAS
ESPECIALIZAÇÃO
GENERALIZAÇÃOCOD
NOMENDER
CPF SEXO EST-CIV
NR-MESES-EX
MES-INCAPITAL
COD
CGC
COD
AS SUB-CATEGORIAS (SUB-TIPOS) HERDAM OS ATRIBUTOS
DA CATEGORIA (SUPERTIPO)
Araújo 54
... EXTENSÕES DO MER ...
• hierarquia de generalização - uma categoria de
entidades C é uma generalização de um conjunto
de entidades S1, S2, ... , Sn, chamadas sub-
categorias de C, se cada conjunto de entidades Si
for um sub-conjunto de C e, cada instância de C
for uma instância de um e somente um dos
conjuntos de entidades S1, S2, ... , Sn
Araújo 55
... EXTENSÕES DO MER ...
– GENERALIZAÇÃO - formação de superentidades a
partir de outras entidades; é possível falar: ...é um....,
...é um tipo de ..., ...é um subconjunto de ...
Professores
Concursados Visitantes
Concursado é um professor
cod
nom
instituiçãocod
periodo
codclassific
dt-concurs
Araújo 56
... EXTENSÕES DO MER ...
- ESPECIALIZAÇÃO - identificação de subentidades a
partir de uma entidade; cada subentidade tem
características (atributos) adicionais
Professores
Concursados Visitantes
cod
nom
instituiçãocod
periodo
codclassific
dt-concurs
Especialização Generalização
Araújo 57
... EXTENSÕES DO MER ...
Func
Engenh Secretar ComissionMensalistGerentes
Projetos N.Fiscais
EmiteGerencia
1
n
1
1
nr-crea toq.p.hora sal-mes vlc
3 Espec de Func:
Engehn/Secretar
Gerentes
Mensalist/Comission
GEN / ESPEC
Araújo 58
... EXTENSÕES DO MER ...
ZÉ SÁ ED DÉ DI JÔ
ZÉ ED JÔSÁ DÉ
Funcionários
PedreirosEngenheiros
Um engenheiro “é-um” funcionário
ZÉ, engenheiro, é o funcionário ZÉ
O engenheiro ZÉ é a mesma entidade que o funcionário ZÉ,
apenas está desempenhando um papel diferente
GEN / ESPEC
Araújo 59
... EXTENSÕES DO MER ...
É importante modelar especialização quando:
• Certos atributos aplicam-se somente a algumas e
não a todas as entidades(objetos) da
superentidade; uma subentidade é um conjunto
de entidades ao qual estes atributos se aplicam
• Alguns relacionamentos podem envolver apenas
as entidades da subentidade (apenas os
comissionistas emitem nota fiscal)
Araújo 60
... EXTENSÕES DO MER ...
Automóveis
• Placa
• Marca
• Km
• AnoFabricação
• Preço
• NrPassageiros
• VelocidadeMáxima
Caminhões
• Placa
• Marca
• Km
• AnoFabricação
• Preço
• Tonelagem
• NrEixos
Araújo 61
... EXTENSÕES DO MER
Veículos
Automóveis Caminhões
Placa
Km
AnoFabric
Marca
Preço
Placa PlacaNrPassagVelMax NrEixos Tonelagem
O relacionamento (1:1) entre objetos da superentidade e
de uma subentidade é do tipo “é-um” (caminhão é um
veículo)
Araújo 62
CHAVES ...
• chave primária - conjunto de atributos que
identificam uma única entidade ex.: MATF + NRD,
MAT, CDD ...
• chave candidata- conjunto de atributos que podem
ser chave primária ex.: MAT, RG, CDD, ...
DEPARTS FUNCS DEPENDS
CDD NMD MAT NMF SEX RGSAL
CDDEP
MATF NRD NMD
Araújo 63
chave secundária ou alternada - conjunto de
atributos que identificam um grupo de
entidades ex.: SAL, SEX, ...
... CHAVES ...
DEPARTS FUNCS DEPENDS
CDD NMD MAT NMF SEX RGSAL
CDDEP
MATF NRD NMD
Araújo 64
DEPARTS FUNCS DEPENDS
CDD NMD MAT NMF SEX RGSAL
CDDEP
MATF NRD NMD
... CHAVES ...
•chave estrangeira - conjunto de atributos que são
chave primária em outro conjunto de entidades
ex.:CDDEP, MATF , ...
Araújo 65
... CHAVES ...
• chave externa ou surrogate key - número sequencial
sem qualquer semântica, introduzido para ser chave
primária de um conjunto de entidades ex.:NRD, MAT, ...
DEPARTS FUNCS DEPENDS
CDD NMD MAT NMF SEX RGSAL
CDDEP
MATF NRD NMD
Araújo 66
... CHAVES
• como escolher a chave primária
– deve ser a menor possível
– valor não deve mudar ao longo da vida
da entidade
– não pode ser null (nem parcial, nem
totalmente)
Araújo 67
MAPEAMENTO MER --> MR...
FUNCIONÁRIOS PROJETOS
MAT NOM NMPCDP
ALOCA
DT-ALOC
FUNCIONÁRIOS PROJETOS
MAT NOM NMPCDP
N 1
CDP
DT-ALOC
chave primária do lado 1 vai para o lado n
atributos do relacionamento vão para o lado n
1 : N
Araújo 68
...MAPEAMENTO MER --> MR...
ALUNOS DISCIPLINASCURSA
M N
CDA NMA CDD NMDNOTA PERÍODO
ALUNOS DISCIPLINASAL-DI
NMA CDD NMDNOTA PERÍODO
CDA
M : N
. quebra relacionamento m : n em dois 1 : n
. atributos do relacionamento ficam na entidade intermediária
. chaves primárias das entidades fazem parte da chave primária
da entidade intermediária
CDA CDD
Araújo 69
...MAPEAMENTO MER --> MR...
MÉDICOS HOSPITAISDIRIGE
1 1CDM NMM CDH NMH
DT-POSSE
MÉDICOS HOSPITAIS
CDM NMM CDH NMH CDMDT-POSSE1 : 1
. atributos do relacionamento vão para a entidade
que tem participação total no relacionamento
. chave primária da entidade do lado mais populoso vai ser chave estrangeira no lado menos populoso
Araújo 70
...MAPEAMENTO MER --> MR...
FUNCIONÁRIOS CHEFIA
1
N
CHEFE
SUBORDINADO
MAT
NOM
FUNCIONÁRIOS
MAT NOM MATCHEFE
Araújo 71
...MAPEAMENTO MER --> MR...
PEÇAS COMPÕE
M
N
COMPONENTES
COMPOSTOS
COD
DES
PEÇAS COMPÕE
CD-COMPONENTE
QTD
QTD
CD-COMPOSTO
COD
DES
Araújo 72
...MAPEAMENTO MER --> MR...
FUNCIONÁRIOS DEPARTAMENTOSALOCA
1N
GERENCIA1 1
CURSOSCURSA
MNCHEFIA
1 N
NOMMAT DESCDD
NMCCDC
DT-ALOC
DT-POSSE
Araújo 73
...MAPEAMENTO MER --> MR...
FUNCIONÁRIOS DEPARTAMENTOS
CURSOSCURSA
MAT NOM
CDD NMD
DT-POSSE
CDC NMCMAT CDC DT-CUR
MAT-CH
CHEFE SUBORDINADO
CDD
DT-ALOC
ALOCA
MAT-GERGERENCIA
Araújo 74
...MAPEAMENTO MER --> MR...
MODELO
CONCEITUAL
MODELO
LÓGICO
MODELO
FÍSICO
MER .................
MODELO RELACIONAL.....
Mundo
real
Araújo 75
...MAPEAMENTO MER --> MR...
A R B
CA AA AR CB AB
A B1 1
CA AA CB AB
CB AR
A R B A B1 N
CA AA AR CB AB CA AA CB AB
CA AR
A R B
CA AA AR CB AB
M NA A-B B
CA AA CB ABAR
CA CB
Araújo 76
...MAPEAMENTO MER --> MR...
Relacionamento M X N se transforma em 2
relacionamentos 1 : N (1 nas pontas, N no meio)
FUNCIONÁRIOS DEPARTAMENTOSLOTAÇÕES
MAT NOM CDD NMDMAT CDD DAT
100 ARI
200 ANA
300 EVA
VEN VENDAS
PRO PRODUÇÃO
ADM ADMINISTRAÇÃO
100 ADM JAN / 80
100 VEN MAR / 85
200 VEN OUT / 86
300 PRO MAR / 90
Araújo 78
...MAPEAMENTO MER --> MR...
A R B
C
M N
P
A R B
C
CA AA
CC AC
CB AB
AR
CC AC
CB ABCA AA
CACB CC
AR
Araújo 79
...MAPEAMENTO MER --> MR
A R B
S
M N
P
A R B
S
CC AS
CB ABCA AA
CACB AR
AR
C
CA CB
ACCCC
AS
CC AC
CA AACB AB
Q
Araújo 80
Modelo Relacional ...
• O modelo relacional foi proposto em um paper clássico, por Ted Codd em 1970
• O modelo tem como base matemática a teoria dos conjuntos e usa o conceito de relação matemática que se assemelha a uma tabela bidimensional
• O modelo relacional usa as operações da Álgebra Relacional
Araújo 81
... Modelo Relacional ...
• Os elos são implícitos
• O usuário vê o banco de dados como um conjunto de relações (tabelas)
FUNCIONÁRIOS
MAT NOME DEPART
100 ANA VEN
200 EDU PRO
300 ARI ADM
400 EVA O&M
relação (tabela)
atributos
tuplas (linhas)
valor de atributo
domínios
Araújo 82
... Modelo Relacional ...
UMA RELAÇÃO PODE SER REPRESENTADA SOB A FORMA DE TABELA, ONDE:
- Cada coluna representa um atributo
- Cada linha representa uma ocorrência de: * UMA ENTIDADE * UM RELACIONAMENTO
- Linha (tupla) é um conjunto de colunas (atributos)
Araújo 83
... Modelo Relacional ...
UMA RELAÇÃO PODE SER REPRESENTADA SOB A FORMA DE TABELA, ONDE: ...
- DOMÍNIO - conjunto de valores do atributo
- GRAU DE UMA RELAÇÃO - número de atributos da tupla da relação
- CHAVE PRIMÁRIA - um ou mais atributos que identificam uma única linha (tupla)
- EX.: ALUNO (MAT, NOM, DT-NASC, SEXO)
Araújo 84
... Modelo Relacional
Esquema relacional
Func (mat, nom, sal, sex, dtNasc, cdd, match)
Depa (cdd, dsd, orcamento)
Depe (mat, seq, nomd, sexd, parentesco)
Proj (cdp, dsp)
FunPro (mat, cdp, horasTrab)
Curso (cdc, dsc, cargaHoraria)
FunCurs (mat, cdc, datc, nota)
Araújo 85
NORMALIZAÇÃO ...
• Simplificação de relações a fim de que os
algoritmos de atualização de dados sejam mais
simples e mais claros
• Como sub-produto: ELIMINAÇÃO DA
REDUNDÂNCIA DE DADOS
• Resultado das pesquisas de E. F.CODD
Araújo 86
... NORMALIZAÇÃO ...
• a matrícula de um funcionário determina
funcionalmente o nome bem como o salário
do funcionário
MATRÍCULA NOME
MATRÍCULA SALÁRIO
Se A determina funcionalmente B, então
B depende funcionalmente de A, logo:
NOME depende funcionalmente de MATRÍCULA
Araújo 87
... NORMALIZAÇÃO ...
• DEPENDÊNCIA FUNCIONALFUNC ( MAT, NOME, SAL, CPF)
MAT
NOME
SAL
CPF
MAT NOME
MAT SAL
MAT CPF
CPF SAL
CPF NOME
CPF MAT
Araújo 88
... NORMALIZAÇÃO ...
• DEPENDÊNCIA FUNCIONAL COMPLETA
um conjunto de atributos B de R é
completamente dependente funcionalmente de
outro conjunto de atributos A de R, se B
depende funcionalmente de A, como um todo
Araújo 89
... NORMALIZAÇÃO ...
• TAREFA ( MAT, NOM, NU-PROJ, NM-PROJ, HORAS-TRAB)
MAT, NU-PROJ HORAS-TRAB
MAT NOM
MAT NOM NU-PROJ NM-PROJ HORAS-TRAB
Araújo 90
... NORMALIZAÇÃO ...
• QUAIS AS CHAVES DAS RELAÇÕES ABAIXO ?
PEDIDO (nr-ped, nr-cliente, dt-ped, vl-ped)
HIST-ALUNO (mat, nom, cd-disciplina, nota, periodo)
VENDA (nr-ped, nr-cli, nr-vendedor, cd-item, qt-vendida,
preço-unit, vl-item)
Araújo 91
... NORMALIZAÇÃO ...
• 1FN-NÃO HÁ GRUPO DE ATRIBUTOS REPETIDOS
FUNC (MAT, NOM, ENDER, DT-NASC, DEPENDENTES (NM-DEP, DT-NASC-DEP, PARENTESCO))
A relação não está em 1FN (RELAÇÃO NF2)
há n dependentes (grupos repetidos de atributos ) por funcionárioNormalizando, teríamos:
FUNC ( MAT, NOM, ENDER, DT-NASC)
DEPEN (MAT, SEQ, NM-DEP, DT-NASCD,PARENTESCO)
Araújo 92
... NORMALIZAÇÃO ...
• 2FN - A RELAÇÃO ESTÁ EM 1FN
- OS ATRIBUTOS NÃO-CHAVE DEPENDEM
FUNCIONALMENTE DA CHAVE TODA
ESTOQ(CD-ITEM, NM-ITEM, ESTAB, FONE-ESTAB, QTD)
CD-ITEM
NM-ITEM
ESTAB
FONE-ESTAB
QTD
ESTOQ não está em 2FN: nm-item
e fone-estab não dependem da
chave toda. Normalizando:
ITEM (CD-ITEM, NM-ITEM)
ESTA (ESTAB, FONE-ESTAB)
ESTO (CD-ITEM, ESTAB, QTD)
Araújo 93
... NORMALIZAÇÃO ...
• 3FN - A RELAÇÃO ESTÁ EM 2FN
- OS ATRIBUTOS NÃO-CHAVE SÃO
INDEPENDENTES ENTRE SI
ITEM-PED (NR-PED, NR-ITEM, QTD, PR-UNIT, VL-ITEM)
NR-PED
NR-ITEM
QTD
PR-UNIT
VL-ITEM
ITEM-PED NÃO ESTÁ EM 3FN :
VL-ITEM DEPENDE DE PR-UNIT
E DE QTD QUE NÃO SÃO CHAVE
Normalizando:
IT-PED(NR-PED,NR-IT,QTD,VL-IT)
Araújo 94
... NORMALIZAÇÃO ...
• normalização x performance- ideal do ponto de vista de performance:
todos os dados em um único registro
- ideal do ponto de vista de simplicidade: várias relações em 5FN
• como melhorar a performance em bd`s relacionais - criar índice (evita varrer tabela) - armazenar resumos
Araújo 95
... NORMALIZAÇÃO ...
• NOTA-FISCAL(NR-CLI, NM-CLI, EN-CLI, NR-NF, (CD-IT, DS-IT, QTD, PREÇO,VAL), TOT-NF,
CD-VENDEDOR, NM-VENDEDOR)
• FICARIA ARMAZENADA COMO:NR-CLI NM-CLI EN-CLI NR-NF CD-IT DE-IT 1206 SILVA RU X,20 468 126 PARAF 1206 SILVA RU X,20 468 130 PORCA 1206 SILVA RU X,20 476 140 ARRUEL 1300 MARIA RU Y,30 477 126 PARAF 1300 MARIA RU Y,30 477 130 PORCA
Araújo 96
... NORMALIZAÇÃO ...
• ANOMALIAS
- INCLUSÃO – incluir novo item exige nota fiscal
- EXCLUSÃO DE UM REGISTRO - exige verificar
existência do item mais de uma vez para não
perder os dados desse item com a exclusão
- ALTERAÇÃO - mudar endereço do cliente 1206
implica alterar vários registros
Araújo 97
... NORMALIZAÇÃO ...
• As anomalias existem por falta de independência de
dados: cliente misturado com nota fiscal, misturado
com produto, com vendedor.
NORMALIZANDO ....
CLIEN (NR-CLI, NM-CLI,EN-CLI)
NFIS (NR-NF, TOT-NF, NR-CLI,CD-VENDEDOR)
IT-NF(CD-IT, DS-IT, QTD, PREÇO,VAL,NR-NF)
VENDEDOR (CD-VENDEDOR, NM-VENDEDOR)
Araújo 98
... NORMALIZAÇÃO ...
•IT-NF (CD-IT, DS-IT, QTD, PREÇO, VAL, NR-NF)
ANOMALIAS NA RELAÇÃO ACIMA:
INCLUSÃO - só inclui um item se houver venda
ALTERAÇÃO - alterar descrição de um item, altera vários registros
EXCLUSÃO - excluir único registro que contém um item perde dados desse item
ALÉM DISSO, DS-IT DEPENDE FUNCIONALMENTE APENAS DE PARTE DA CHAVE. LOGO ....
Araújo 99
... NORMALIZAÇÃO ...
• ITENS (CD-IT, DS-IT, PREÇO)
• IT-NF (NR-NF, CD-IT, QTD, VAL)
• CLIEN(NR-CLI, NM-CLI, EN-CLI)
• VEND (CD-VENDEDOR, NM-VENDEDOR)
• NFIS (NR-NF,NR-CLI,TOT-NF,CD-VENDEDOR)
Araújo 100
... NORMALIZAÇÃO
CLIEN NFIS IT-NF
ITENSVEND
NR-NF
CD-ITQTD
VAL
NR-NF
CD-VENDEDOR
TOT-NF NR-CLI
NR-CLI NM-CLI EN-CLI
CD-VENDEDOR NM-VENDEDOR CD-IT
PRECO
DER
EQUIVALENTE
DS-IT
Araújo 101
Linguagem SQL ...
• Linguagem de Consulta Estruturada
• Linguagem comercial, declarativa, padrão
para acesso a bancos de dados relacionais
• Introduzida como linguagem de consulta
para o sistema R (inicialmente, SEQUEL)
• Trata conjuntos de tuplas (linhas)
• Álgebra Relacional é formal e procedural
Araújo 102
... Linguagem SQL ...
• Cria e manipula as estruturas de dados:
– TABLE - tabela real formada por linhas e
colunas
– INDEX - índice para otimizar o acesso às
linhas das tabelas
– VIEW - tabela virtual formada a partir de
outras tabelas (apenas a definição da visão é
armazenada em disco)
Araújo 103
... Linguagem SQL ...
Mat Nom Sex Sal Dep Match
100 Zé M 200,00 Pro 300
200 Sá M 210,00 Pro 300
300 Ed M 300,00 Pro 500
400 Dé M 320,00 Ven 500
500 Di F 500,00 Adm
FK FKPK
FUNC
Tabela
Araújo 104
... Linguagem SQL ...
Mat Nom Sex Dep
1 100 Zé M Pro
2 200 Sá M Pro
3 300 Ed M Pro
4 400 Dé M Ven
5 500 Di F Adm
Adm 5
Pro 1
Pro 2
Pro 3
Ven 4
Dep E
Idep Inom
Nom E
Dé 4
Di 5
Ed 3
Sá 2
Zé 1
Índices secundários
Create index Idep on func (dep)
Create index Inom on func (nom)
Araújo 105
... Linguagem SQL ...
Mat Nom Sex Dep
1 100 Zé M Pro
2 200 Sá M Pro
3 300 Ed M Pro
4 400 Dé M Ven
5 500 Di F Adm
100 1
200 2
300 3
400 4
500 5
Mat E
Imat Inom
Nom E
Dé 4
Di 5
Ed 3
Sá 2
Zé 1
EImat é um índice primário (mat é PK)
Imat é um índice clusterizado (índice e dados na mesma ordem)
Araújo 106
... Linguagem SQL ...
Índices - estruturas de dados que agilizam o
acesso às tuplas (linhas); podem ser:
• primário - campo de indexação é a chave primária não permitindo campos repetidos
• secundário ou alternado - campos de indexação são quaisquer atributos que não a chave primária
• clusterizado - a ordem das entradas no índice é a mesma das linhas da tabela
Araújo 107
... Linguagem SQL ...
Índice agiliza consulta e prejudica atualização
• Evitar muitos índices em tabela muito volátil (alta taxa de inclusão / exclusão)
• Em tabela pouco volátil, muitos índices agilizam acessos; desvantagem: maior consumo de disco
• Cuidado ao indexar coluna atualizada com muita freqüência
• Grandes tabelas: recomendável criar os índices após a carga dos dados
Araújo 108
... Linguagem SQL ...
Índice clusterizado
• Não é obrigatório, mas, só um por tabela
• Força os dados da tabela ficarem na mesma ordem das chaves do índice
• Favorece a leitura exaustiva mas prejudica muito a atualização
• O índice clusterizado deve ser o primeiro a ser criado entre os índices de uma tabela
Araújo 109
... Linguagem SQL ...
O que indexar ?
• Chave primária (checa unicidade)
• Chave estrangeira (usada em junções e na integridade referencial)
• Chave secundária que seja argumento de pesquisa freqüentemente feita
• Nome usado para consulta alfabética on-line
• Atributo fonetizado usado em pesquisa fonética
Araújo 110
... Linguagem SQL ...
O que indexar ?
• Em tabela associativa, além do índice primário composto, criar índice secundário (unique), invertendo as chaves
• Indexar colunas usadas em consultas freqüentes ou que classifiquem muitas linhas, usando order by, group by ou distinct
Araújo 111
... Linguagem SQL ...
O que não indexar ?
• Atributo com poucos valores (sexo = M / F)
• Atributo usado em consulta que recupera quase todas as linhas (otimizador não usará o índice)
• Atributo com alto percentual de valores null
• Atributo com alto percentual de valores duplicados (poucos valores; bom criar índice composto)
Araújo 112
... Linguagem SQL ...
Por que indexar?
• Aumentar performance das consultas
• Acelerar a execução das junções
• Aumentar a performance de execução de
cláusulas ORDER BY e GROUP BY
• Acelerar a verificação de restrições de
integridade
Araújo 113
... Linguagem SQL ...
Por que não indexar?
• Aumenta o consumo de disco
• Gasta tempo para criar índice em tabela com grande número de linhas
• Piora a performance de execução de comandos de alteração de dados (Insert, Update, Delete)
Araújo 114
... Linguagem SQL ...
VISÃO
• é como se fosse uma janela que nos permitisse
ver um subconjunto de uma ou mais tabelas
• é uma tabela virtual derivada de uma ou mais
tabelas (não duplica os dados)
• Exemplos:– Marajás – funcionários com salário muito alto
– Idosas – funcionárias com idade avançada
Araújo 115
... Linguagem SQL ...
Mat Nom Sex Sal Dep Match
100 Zé M 200,00 Pro 300
200 Sá M 210,00 Pro 300
300 Ed M 300,00 Pro 500
400 Dé M 320,00 Ven 500
500 Di F 500,00 Adm
FUNC
As linhas azuis correspondem a uma visão: homens que trabalham na produção
Araújo 116
... Linguagem SQL ...
Mat Nom Sex Sal Dep Match
100 Zé M 200,00 Pro 300
200 Sá M 210,00 Pro 300
300 Ed M 300,00 Pro 500
400 Dé M 320,00 Ven 500
500 Di F 500,00 Adm
FUNC
Em azul, uma visão que exibe nome e salário
Araújo 117
... Linguagem SQL ...
Possui comandos DDL, DML, DCL
• DDL - Linguagem de Definição de Dados
Create, Drop, Alter
• DML - Linguagem de Manipulação de Dados
Select, Insert, Update, Delete
• DCL - Linguagem de Controle de Dados
Commit, Rollback, Grant, Lock
Araújo 118
... Linguagem SQL ...
DDL - Linguagem de Definição de Dados
• CREATE – cria objetos (table, index, view,
procedure, trigger) no banco de dados
• DROP – remove objetos (table, index, view,
procedure, trigger) do banco de dados
• ALTER – altera objetos (table, index, view,
procedure, trigger) do banco de dados
Araújo 119
... Linguagem SQL ...
Tipos de dados:
• integer - inteiro entre 32767 e -32768
• char - alfanumérico
• date - data
• decimal - numérico com casas decimais
• varchar - alfanumérico com tamanho variável
Araújo 120
... Linguagem SQL ...
DDL - Linguagem de Definição de Dados
• CREATE TABLE nome-tabela (coluna1 tipo1 [NOT NULL] [, coluna2 tipo2 [NOT NULL] ...)
• create table aluno (matric integer not null, -- matric exigidanome char (30), sexo char(1),nasc date, ender varchar (40))
Araújo 121
... Linguagem SQL ...
DDL - Linguagem de Definição de Dados
• create table Func
(mat integer primary key,
nom char(30),
sex char(1) check (sex = “M” or sex = “F”),
sal decimal(8,2) check (sal >179.99),
dep char(3) default “PRO” references Depa,
match integer references Func)
Araújo 122
... Linguagem SQL ...
Problemas com o NULL (ausência de valor)
• Aumenta complexidade no código para seu
tratamento
• Aumenta complexidade no armazenamento
• SGBD’s tratam de forma diferente os NULL’s
• Funções agregadas levam em conta apenas os
valores não NULL
Araújo 123
... Linguagem SQL ...
Problemas com o NULL (ausência de valor)
• Na ausência de especificação no atributo:
default do padrão ANSI: NULL
default do SQL Server: NULL
• Recomendável especificar sempre NOT NULL
e, quando necessário, NULL para todos os
atributos
Araújo 124
... Linguagem SQL ...
DDL - Linguagem de Definição de Dados
• CREATE [UNIQUE] [CLUSTERED] INDEX
nome-do-índice ON tabela (coluna1
[ordem1] [, coluna2 [ordem2]] ...)
• create unique index imat on func (mat)
• create index isal on func (sal desc)
isal indexa func em ordem decrescente de sal
Araújo 125
... Linguagem SQL ...
DDL - Linguagem de Definição de Dados
• create index idep on func (dep, nome desc)
idep indexa func por departamento e, dentro de
departamento em ordem decrescente de nome
• create unique clustered index icdd on depa (cdd)
icdd é um índice clusterizado na tabela depa com valores de cdd sem repetição
Araújo 126
... Linguagem SQL ...
DDL - Linguagem de Definição de Dados
• CREATE VIEW nome-da-visão [(coluna1, ...)] AS clausula-select
• create view marajas as select * from func where sal > 30000
• create view idosas (nome, anonasc) as select nom, aanasc from pessoa where sex = “F” and aanasc < 1930
Araújo 127
... Linguagem SQL ...
DDL - Linguagem de Definição de Dados
• create view marajas as select * from func where
sal > 30000
• marajas é uma tabela virtual, logo os dados dos marajas estão apenas na tabela func
• a execução dos comandos abaixo produz o mesmo resultado
• select * from marajas
• select * from func where sal > 30000
Araújo 128
... Linguagem SQL ...
DDL - Linguagem de Definição de Dados
• DROP TABLE nome-da-tabela
• drop table func /*elimina a tabela func (definição e dados) */
• DROP INDEX nome-tabela.nome-do-índice
• drop index func.isal /*elimina índice isal de func*/
• DROP VIEW nome-da-visão
• drop view idosas /* elimina visão idosas */
Araújo 129
... Linguagem SQL ...
DDL - Linguagem de Definição de Dados
• ALTER TABLE nome-da-tabela ADD nome-da-
coluna tipo-de-dado
• alter table func add estadocivil char(1), grauinstr
char(1)
• alter table depa add orcamento decimal(10,2)
altera tabelas criando as colunas estadocivil e
grauinstr na tabela func e, orcamento em depa
Araújo 130
... Linguagem SQL ...
DDL - Linguagem de Definição de Dados
• UPDATE [ALL] STATISTICS FOR TABLE nome-da-tabela (SQL1)
• update statistics for table func
atualiza, no catálogo, as estatísticas referentes a tabela func, contribuindo para melhoria de performance de acesso a func
• Sintaxe no SQL Server: update statistics func
Araújo 131
... Linguagem SQL ...
DDL - Linguagem de Definição de Dados (SQL1)
• COMMENT ON {TABLE tabela | COLUMN coluna} IS “comentario”
• comment on table func is “cadastro de funcionários” -- não funciona no SQL Server
• comment on column sal is “salário do funcionário”
• acrescenta comentários para tabela func e para coluna sal
Araújo 132
... Linguagem SQL ...
DML - Linguagem de Manipulação de Dados
Comandos
• SELECT – obtém linhas de uma tabela
• INSERT – insere linhas numa tabela
• UPDATE – atualiza linhas de uma tabela
• DELETE – exclui linhas de uma tabela
Araújo 133
... Linguagem SQL ...
DML - Linguagem de Manipulação de Dados
• SELECT [ALL | DISTINCT] {colunas | *}
FROM tabela1 [nome de correlação], ...
[WHERE condição de linha]
[GROUP BY colunas]
[HAVING condição de grupo]
[ORDER BY coluna1 [ASC | DESC], ...]
Araújo 134
... Linguagem SQL ...
DML - Linguagem de Manipulação de Dados
• select * from func
exibe todos os atributos de todas as linhas da tabela func
• select mat, nom from func where sal > 500
exibe matrícula e nome dos funcionários com salário superior a 500 projeção – exibe apenas mat e nomseleção – exibe linhas onde sal > 500
Araújo 135
... Linguagem SQL ...
DML- Linguagem de Manipulação de Dados
• select * from func order by sal desc
exibe todos os atributos de todos os
funcionários em ordem decrescente de salário
• select * from func order by nom
exibe todos os atributos de todos os
funcionários em ordem alfabética
Araújo 136
... Linguagem SQL ...
DML - Linguagem de Manipulação de Dados
• select count(*), sum(sal) from func
exibe a quantidade de funcionários e a soma dos salários de todos
• select avg(sal) from func
exibe a média salarial dos funcionários
Funções de agregação: count, sum, avg, min, max
Araújo 137
... Linguagem SQL ...
DML - Linguagem de Manipulação de Dados
• select dep, count(*), sum(sal), avg(sal) from func
group by dep
exibe para cada departamento, o código, a
quantidade de funcionários, a soma dos
salários e a média salarial do departamento
Araújo 138
... Linguagem SQL ...
DML - Linguagem de Manipulação de Dados
• select * from func, depaexibe todas as linhas resultado do produto cartesiano de func e depa (func X depa)
• select * from func, depa where func.cdd = depa.cdd
exibe o resultado da junção, ou seja as linhas que têm mesmo valor de cdd (func depa)
Araújo 139
... Linguagem SQL ...
DML - Linguagem de Manipulação de Dados
• select * from clien where uf = “PI” union select * from forn where uf = “PI” -- uniãoObtém os clientes ou fornecedores do PI
• select * from clien where uf = “PI” intersect select * from forn where uf = “PI” -- interseção
Obtém os clientes que são também fornecedores, do PI
• select * from clien where uf = “PI” minus select * from forn where uf = “PI” -- diferença
Obtém os que são clientes mas não fornecedores, do PI
Araújo 140
... Linguagem SQL ...
DML - Linguagem de Manipulação de Dados
select nom from forn where uf = “PI” union select nom from clien where uf = “CE”
exibe nomes, sem repetir, dos fornecedores do Piauí ou dos clientes do Ceará
select nom from forn where uf = “PI” union all select nom from clien where uf = “CE”
idem, com repetição de nomes
Araújo 141
... Linguagem SQL ...
DML - Linguagem de Manipulação de Dados
INSERT INTO tabela [(coluna1,...)] VALUES
({literal / NULL / valor}, ...)
• insert into func values (800, ‘Rui’, ‘M’, ‘PRO’)
inclui na tabela func um novo funcionário com
valores (na mesma ordem) para todos os
atributos
Araújo 142
... Linguagem SQL ...
DML - Linguagem de Manipulação de Dados
• INSERT INTO tabela [(coluna1,...)] VALUES
({literal / NULL / valor}, ...)
• insert into func (mat, nom) values (900, ‘Ana’)
inclui na tabela func um novo funcionário com
valores para apenas os atributos mat e nom
Araújo 143
... Linguagem SQL ...
DML - Linguagem de Manipulação de Dados
• UPDATE tabela SET coluna = {valor / NULL}
WHERE condição
• update func set nom = ‘Gal’ where nom = ‘Gil’
altera para Gal o nome do funcionário Gil
Araújo 144
... Linguagem SQL ...
DML - Linguagem de Manipulação de Dados
• update func set sal = sal * 2
duplica o salário de todos os funcionários
• update func set sal = sal * 1.3 where dep = ‘pro’
dá um aumento de 30% aos funcionários do departamento ‘pro’ (produção)
Araújo 145
... Linguagem SQL ...
DML - Linguagem de Manipulação de Dados
• DELETE FROM tabela WHERE condição
• delete from func where mat = 200
exclui o funcionário de mat = 200
• delete from func
exclui todos os funcionários (cuidado !!!)
Araújo 146
... Linguagem SQL ...
DCL - Linguagem de Controle de Dados
Comandos
• GRANT – concede privilégios de acesso a dados para usuários
• REVOKE – retira privilégios de usuários
• COMMIT – efetiva transações no banco de dados
• ROLLBACK – desfaz transações no banco de dados
• LOCK – bloqueia acesso a itens do BD
Araújo 147
... Linguagem SQL ...
DCL - Linguagem de Controle de Dados
• GRANT {ALL | ALL [PRIVILEGES] | {ALTER | DELETE | INDEX | INSERT | SELECT | UPDATE} [(coluna1, ...)]} ON tabela1, ... TO {usuario1, ... | PUBLIC} [WITH GRANT OPTION]
• grant select, update on func to joao, maria with grant option
• grant select mat, nom on func to ze
Araújo 148
... Linguagem SQL ...
DCL - Linguagem de Controle de Dados
• REVOKE {ALL | ALL [PRIVILEGES] | {ALTER |
DELETE | INDEX | INSERT | SELECT |
UPDATE} [(coluna1, ...)]} ON tabela1, ... FROM
{usuario1, ... | PUBLIC}
• revoke update on func from joao
Araújo 149
... Linguagem SQL ...
DCL - Linguagem de Controle de Dados
• COMMIT WORK - efetiva (grava em disco) as modificações feitas no banco de dados desde o início da sessão, do programa ou da última sentença efetivadora
• ROLLBACK WORK - desfaz as modificações feitas no banco de dados desde o início da sessão, do programa ou da última sentença efetivadora
Araújo 150
... Linguagem SQL
• DCL - Linguagem de Controle de Dados
• LOCK TABLE {visão | tabela} IN {SHARE | EXCLUSIVE} MODE
• lock table preco in exclusive mode
impede qualquer acesso à tabela preco
• lock table func in share mode
impede atualização embora permita leitura simultânea na tabela func
Araújo 151
Consultas mais complexas ...
DML- Linguagem de Manipulação de Dados
• select * from func where dep is null
exibe os atributos dos funcionários sem valor de código de departamento (NULL)
• select mat, nom, sal * 12 from func order by 3 desc
exibe matrícula, nome e salário anual dos funcionários em ordem decrescente de salário anual (terceiro atributo)
Araújo 152
... Consultas mais complexas ...
DML- Linguagem de Manipulação de Dados
• select * from func where dep in (“ven”,”pro”)
exibe atributos dos funcionários cujo código do
departamento pertence ao conjunto dos elementos
“ven” e “pro”
• select * from func where dep not in (“ven”,”pro”)
atributos dos funcionários que não pertencem ao
conjunto dos elementos “ven” e “pro”
Araújo 153
... Consultas mais complexas ...
DML- Linguagem de Manipulação de Dados
• select * from func
where mat between 150 and 500
exibe os atributos dos funcionários de valor de
matrícula entre 150 e 500, incluindo os extremos
• select * from func
where mat not between 150 and 500
Araújo 154
... Consultas mais complexas ...
DML- Linguagem de Manipulação de Dados
• select * from func where nom like “A_B%”
exibe os atributos dos funcionários que têm
nome iniciado por A e a terceira letra do nome
igual a B (ALBER, ALBERTO, ALBA, ALBINA,
ALBINO, AMBLER, ...)
• select * from func where nom not like “A_B%”
Araújo 155
... Consultas mais complexas ...
DML- Linguagem de Manipulação de Dados
• select * from func where nom like “%a”
exibe os atributos dos funcionários que têm
nome terminado em a (Francisco Lima, Laura,
Maria, Diva, Eva, Lia, Sa)
• select * from func where nom not like “%a”
Araújo 156
... Consultas mais complexas ...
DML- Linguagem de Manipulação de Dados
• select * from func where nom like “A%”
exibe os atributos dos funcionários que têm
nome iniciado com A (Ana Maria, Alves, Ari,
Araujo)
• select * from func where nom not like “A%”
Araújo 157
... Consultas mais complexas ...
DML- Linguagem de Manipulação de Dados
• select distinct dep from func
exibe os diferentes códigos de departamento existentes na tabela func (havendo 20 funcionários em pro, 5 em ven e 3 em adm, o resultado da consulta acima será):
adm
pro
ven
Araújo 158
... Consultas mais complexas ...
DML - Linguagem de Manipulação de Dados
• select dep, count(*), sum(sal), avg(sal) from func
group by dep having count(*) > 3
exibe para cada departamento com mais de 3
funcionários, o código, a quantidade de
funcionários, a soma dos salários e a média
salarial do departamento
Araújo 159
... Consultas mais complexas ...
DML - Linguagem de Manipulação de Dados
• select count(*) as x from func where sal < 150
• select count(*) as y from func where sal >= 150
• select count(*) as z from func
Seria possível z > x + y ?
Seria possível se houvesse algum funcionário com
salário NULL (Mais problema com NULL)
• select * from func where sal is null
Araújo 160
... Consultas mais complexas ...
DML - Linguagem de Manipulação de Dados
• select count(*) from func where sex = “M”
• select dep, count(*) from func where sex = “M” group by dep
• select dep, count(*) from func where sex = “M” group by dep having count(*) > 3
where - testa condição de linha
having - testa condição de grupo
Araújo 161
... Consultas mais complexas ...
DML - Linguagem de Manipulação de Dados
• select nom, sal, dsd from func, depa
where dep = cdd
exibe nome, salário e nome do departamento
dos funcionários
junção (join) entre as tabelas func e depa, com
base na igualdade entre PK e FK
Araújo 162
... Consultas mais complexas ...
DML - Linguagem de Manipulação de Dados
• select nom, sal from func
where sal > (select avg(sal) from func)
exibe nome, salário dos funcionários com salário
superior à média salarial da empresa
subselect - select dentro de select; o que
está entre parênteses é executado antes
Araújo 163
... Consultas mais complexas ...
DML - Linguagem de Manipulação de Dados
Exibir o total de dependentes dos funcionários do
departamento de produção
select count(*) from depe where mat in
(select mat from fun where dep in
(select cdd from depa where dsd = “produção”))
Araújo 164
... Consultas mais complexas ...
DML - Linguagem de Manipulação de Dados
Exibir dados dos funcionários sem dependentes
• select * from func where mat not in (select distinct mat from depe)
Exibir dados dos funcionários com salário maior que qualquer salário do departamento “p”
• select * from func where sal > any (select sal from fun where dep = "p")
Araújo 165
... Consultas mais complexas ...
DML - Linguagem de Manipulação de Dados
func (mat, nom, sal, match)
• select su.nom, su.sal, ch.nom from func su, func ch
where su.match = ch.mat
exibe nome e salário de cada funcionário e, na mesma linha, o nome do seu chefe
implementação de autorelacionamento 1: n
su, ch - alias ou nome de correlação
Araújo 166
... Consultas mais complexas ...
DML - Linguagem de Manipulação de Dados
func (mat, nom, sal, match)
select su.nom, su.sal from func su, func ch
where su.match = ch.mat and su.sal > ch.salexibe nome e salário dos funcionários que ganham mais
que seus respectivos chefes
implementação de autorelacionamento 1: n
su, ch - alias ou nome de correlação
Araújo 167
... Consultas mais complexas ...
• INNER JOIN – resultam da operação, apenas as
linhas em que haja igualdade entre o par de
atributos (por exemplo, PK = FK)
• OUTER JOIN – resultam da operação, além das
linhas em que PK = FK, também as linhas de
uma tabela sem correspondência na outra tabela
Araújo 168
... Consultas mais complexas ...
INNER JOIN ou apenas JOIN
FUNC(mat, nom, cdd) DEPA(cdd, dsd)
select * from func join depa on func.cdd = depa.cdd /* Inner Join */
• Resultado mostra só os funcionários que estão alocados em algum departamento e apenas departamentos que têm pelo menos um funcionário alocado ( Inner join)
• select * from func, depa where func.cdd = depa.cdd /* produz mesmo resultado */
Araújo 169
... Consultas mais complexas ...
LEFT / RIGHT OUTER JOIN
• select * from func left outer join depa on func.cdd = depa.cdd
• Resultado mostra todos os funcionários, mesmo os que não estão alocados em nenhum departamento
• select * from func right outer join depa on func.cdd = depa.cdd
• Resultado mostra todos os departamentos, mesmo os que não têm nenhum funcionário alocado
• A palavra outer pode ser suprimida
Araújo 170
... Consultas mais complexas ...
FULL OUTER JOIN
• select * from func full outer join depa on func.cdd = depa.cdd
• Resultado mostra todos os funcionários, mesmo os que não estão alocados em algum departamento e todos departamentos, mesmo os que não têm nenhum funcionário alocado ( Full join)
• A palavra outer pode ser suprimida
Araújo 171
... Consultas mais complexas ...
CROSS JOIN
• select * from func cross join depa
• Resultado do comando acima é o produto cartesiano das tabelas func X depa (para 8 linhas em func e 4 linhas em depa, o resultado terá 32 linhas, cada uma delas formada pela concatenação de uma linha de func com uma linha de depa)
• select * from func, depa -- mesmo resultado
Araújo 172
... Consultas mais complexas
• select "nome:", nom from func
exibe a palavra nome: antes do nome de cada funcionário:
nome: Ana Marianome: José Silva...
• Select 5 + 4 * 1045
Araújo 173
Stored Procedure ...
• Programa formado por variáveis, comandos SQL e comandos de controle de fluxo, armazenado no banco de dados
• Pode ser executado manualmente ou chamado de um programa de aplicação ou de outro procedimento armazenado
• Reduz tráfego de dados na rede, além de melhorar a performance de acesso aos dados
• Execução mais rápida que comandos SQL porque não precisa ser pré-compilada e otimizada a cada execução
Araújo 174
... Stored Procedure ...
• Facilita a manutenção, pois uma alteração em
stored procedure é feita só no servidor
• Aceita parâmetros de entrada e pode retornar
resultados, além de indicação de sucesso ou
causa da falha na execução
• Difere de função pois não retorna valor nem
pode ter seu nome usado numa expressão
Araújo 175
... Stored Procedure ...
Tipos de stored procedure
• Local – armazenada em servidor local
• Remota – armazenada em servidor remoto
• Definida pelo usuário – criada por usuário
• Do sistema – previamente criada e é componente do SGBD (system stored procedure): sys.sp_columns, sys.sp_tables, sys.sp_fkeys, sys.sp_helptrigger, sys.sp_helptext, ...
Araújo 176
... Stored Procedure ...
CREATE PROCEDURE nome-procedure@param1 tipo dado1, @param2 tipo dado2 ...
AS comandos sqlCREATE procedure sp_aumenta_sal
@dep char(3), @fator decimal(2,1)AS UPDATE [RH].[dbo].[Func] SET [sal] = sal * @fatorWHERE ([cdd] = @dep)
aumenta salário (fator informado) dos funcionário do
departamento (informado)
Araújo 177
... Stored Procedure
create procedure sp_totdepa
@dep char(3) -- parâmetro
as select @dep Dep, count(*) Qtd, sum(sal) Total, avg(sal) Média from func where cdd = @dep
cria stored procedure sp_totdepa recebendo código do departamento como parâmetro
sp_totdepa pro -- executa sp_totdepa
exibe totais de funcionários, de salários e salário médio do departamento de código igual a pro
drop procedure sp_totdepa -- elimina sp_totdepa
Araújo 178
Triggers ...
Trigger• um tipo de procedimento armazenado no banco
de dados, que é executado quando uma tabela é atualizada
• usado para:– manter integridade referencial– criar uma coluna a partir de outras– replicar alterações em uma tabela – atualizar outras tabelas quando uma tabela
sofre alteração
Araújo 179
...Triggers ...
Por que usar Trigger?
• Regras de negócio ficam armazenadas no banco de dados e são sempre executadas não importando se a alteração foi promovida por programa de aplicação ou por comando SQL interativo
• Redução da complexidade de programas de atualização
Araújo 180
...Triggers ...
Por que não usar Trigger?
• Aumenta a complexidade do banco de dados
• Uma atualização do banco de dados pode provocar a execução de um trigger que altera o banco de dados que provoca a execução de outro trigger,... em cascata
Araújo 181
... Triggers ...
DDL - Linguagem de Definição de Dados
• CREATE TRIGGER nome-do-trigger ON tabela FOR [INSERT] [, UPDATE] [, DELETE] AS comandos Transact SQL
• create trigger incFunc on func for insert as print “mais um funcionário cadastrado”
exibe a mensagem “mais um funcionário cadastrado”, quando inserida linha em func
Araújo 182
... Triggers ...
create trigger excFunc on func for delete as
/* informa exclusão de func. e num. de func. restantes */
begin
declare @cont int
print “mais um funcionário excluído”
select @cont = count(*) from func
print “funcionários restantes”
print @cont
end
Araújo 183
... Triggers ...
• DROP TRIGGER nome-do-trigger
• drop trigger excFunc /* exclui trigger excFunc */
• sp_helptrigger nome-da-tabela
• sp_helptrigger func /* exibe triggers da tabela func */
• sp_helptext nome-do-objeto
• sp_helptext excFunc /* exibe texto do trigger excFunc*/
Araújo 184
... Triggers ...
Replicando linhas com trigger
create trigger IncRepFunc
on func for insert as
insert into func1 select * from inserted
replica na tabela func1, linha recém incluída na tabela func
Araújo 185
... Triggers
Excluindo linhas com trigger
create trigger ExcRepFunc
on func for delete as
delete from func1 where func1.mat in (select mat from deleted)
exclui da tabela func1 linha recém excluída da tabela func
drop trigger ExcRepFunc /*elimina trigger */
Exercícios...
1. Uma cidade tem vários bairros e um bairro tem
várias ruas e uma rua tem vários imóveis. Deseja-
se saber quem é o proprietário de um dado
imóvel, a área do imóvel e a data do seu habite-
se. Desenhar DER.
Araújo 186
...Exercícios...
2.Na informatização de uma biblioteca é necessário registrar as
datas de empréstimo e devolução dos livros. É preciso poder
localizar os livros consultando por autor, título, editora,
assunto principal. Deve ser armazenado um resumo de cada
livro com até 200 caracteres. Os periódicos não são
emprestados. Desenhar DER que responde às questões:
. Que periódicos são referenciados pelo periódico P?
. Quais os livros do autor A?
. Quais os livros cujo assunto é Bancos de Dados Relacionais?
. Que livros são referenciados pelo periódico P?
. Quais os autores do periódico P?
Araújo 187
Exercícios
3. Um passageiro tem um documento de identidade e um
nome definido. Um avião é caracterizado por um
número de série único e por um modelo. Um assento é
uma posição única em um avião, identificada por um
código. Um assento é da classe econômica ou
executiva. Um avião possui vários assentos e pode ser
usado em vários vôos. Um vôo é identificado por um
número e utiliza: um avião, um piloto, um aeroporto
de partida e outro de chegada. Um passageiro pode
reservar um assento em um vôo. Desenhar DER
destacando os atributos.
Araújo 188