Professional Documents
Culture Documents
Banco de Dados I
Sumrio
Relacionais (Normalizao)
Banco de Dados I
Sumrio
9. Introduo Armazenamento e Indexao
10. Introduo ao Processamento de Consultas
11. Introduo ao Processamento de Transaes
12. Introduo Recuperao e Logging
13. Banco de Dados Orientados a Objetos (BDOO)
Banco de Dados I
Bancos de Dados I
- Bibliografia Recomendada 1. Silberschatz, A., Korth, H., Sudarshan, S. Sistemas de
Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico
Livro
Captulo/Seo
1. Tecnologia de
Banco de Dados
Banco de Dados I
Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico
Livro
Captulo/Seo
2. Modelo
EntidadeRelacionamento
(MER)
Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico
Livro
Captulo/Seo
3. Modelo
Relacional (MR)
Banco de Dados I
Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico
Livro
Captulo/Seo
4. Projeto de
Banco de Dados
Relacionais
2.8
Nenhum
captulo
especfico para
o tpico
Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico
Livro
Captulo/Seo
5. SQL
Banco de Dados I
Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico
Livro
Captulo/Seo
6. Acesso Banco
de Dados
4.12
10
Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico
Livro
Captulo/Seo
7. Restries de
Integridade
Banco de Dados I
11
Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico
Livro
Captulo/Seo
8. ProjetoFsico de
Banco de Dados
Relacionais
6.5 a 6.9
Banco de Dados I
12
Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico
Livro
Captulo/Seo
9. Introduo ao
Armazenamento e
Indexao
10
Banco de Dados I
13
Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico
Livro
Captulo/Seo
10. Introduo ao
Processamento de
Consultas
12
Banco de Dados I
14
Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico
Livro
Captulo/Seo
11. Introduo ao
Processamento de
Transaes
13, 14
Banco de Dados I
15
Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico
Livro
Captulo/Seo
12. Introduo
Recuperao e
Logging
15
Banco de Dados I
16
Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico
Livro
Captulo/Seo
13. Banco de
Dados Orientados
a Objeto
15
Banco de Dados I
17
Programa 2
Programa 3
Descrio
de dados
Descrio
de dados
Descrio
de dados
Arquivo A
Arquivo B
Arquivo C
Banco de Dados I
18
Redundncia e inconsistncia
Dificuldade de acesso aos dados
Isolamento dos dados
Problemas de integridade
Problemas de atomicidade
Anomalias de acesso concorrente
Problemas de segurana
Banco de Dados I
19
20
Programa 2
Programa 3
Descrio
de Dados
Banco
de Dados
Sistema de Banco de Dados
Conjunto de dados inter-relacionados (banco de dados)
Componente de software (SGBD)
Acesso e modificao dos dados
Tornar
Tornartransparente
transparentecomo
comoos
osdados
dadosso
so
Garantir uma viso abstrata dos dados
armazenados e gerenciados
Banco de Dados I
armazenados e gerenciados
21
22
Esquema
Externo 1
Esquema
Externo 2
Esquema
Externo n
Camada
Externa
Esquema Conceitual
DBMS
Camada
Conceitual
Camada
Interna
(Fsica)
Banco de Dados I
Esquema Interno
(Banco de Dados armazenado)
23
Organizao de arquivo
seqencial-indexado, hashing, seqencial, heap
Alocao em disco
Contgua, lista encadeada, lista encadeada utilizando ndice
Tipo de registro
Fixo, varivel
Segurana
Banco de Dados I
24
Ocorrncias (instncias)
Coleo de informaes armazenadas na base
Altamente mutveis
Esquemas
Projeto ou estrutura da base - definio
Um esquema para cada nvel de abstrao
Esquema fsico - nvel interno
Esquema lgico - nvel conceitual
Sub-esquemas ou esquemas de visualizao - nvel
externo
Banco de Dados I
25
Habilidade de modificar
o esquema fsico sem
causar redefinio dos
programas de aplicao
Modificaes so
necessrias para
melhorar desempenho
Banco de Dados I
Habilidade de modificar
o esquema lgico sem
causar redefinio dos
programas de aplicao
Modificaes so
necessrias quando a
estrutura lgica da
base alterada
26
Banco de Dados I
27
Banco de Dados I
28
DML
Consultas sobre um BD
Procedural
Procedural
--requer
Exemplo (SQL)
requeraaespecificao
especificaode
dequais
quais dados
dados
devem
ser
acessados
e
como
devem
select nome
devem ser acessados e como devemser
ser
acessados
acessados
from Empregado
Nonprocedural
Nonprocedural
where salario > 7000
- -requer
requersomente
somenteaaespecificao
especificaode
dequais
quais
dados
devem
ser
acessados
Inseres em uma tabela
dados devem ser acessados
Exemplo (SQL)
insert into Empregado values(123, Brbara, 5000.00)
Remoes em uma tabela
Exemplo (SQL)
delete from Empregado
where matr=14
Atualizar valores de atributos de uma tabela
Exemplo (SQL)
update Empregado set salrio=salrio1.15
where salrio<1500.00
Banco de Dados I
29
SGBD
Compilador DML
Pr-Compilador DML
Traduz comandos DML em chamadas a procedimentos (rotinas) na
linguagem hospedeira
Interpretador DDL
Mecanismo de Consultas
Responsvel pela otimizao e gerao de planos de execuo de
consultas
Banco de Dados I
30
Definio
Sistema de Armazenamento
Gerenciador de Transaes
Controle de concorrncia
Recuperao do banco de dados aps falhas
Gerenciador de Buffer
Responsvel para recuperar objetos em disco e carreg-los na memria
principal em forma de pginas
SGBD possui uma rea de buffer em memria principal
Mapeamento:
Bloco
Pgina
(disco)
(buffer do SGBD)
Definio da poltica de alocao do buffer
MRU, LRU, FIFO, etc
31
BD
ndices
Estruturas de ndices para os arquivos de dados
Catlogo
Armazena esquema do banco de dados (meta-dados)
Nomes das tabelas
Atributos de cada tabela
Definio de ndice para uma tabela, etc
32
Programadores
Usurio experiente
Programa Aplicativo
Pre-compilador
DML
DBA
Consulta
Esquema
Compilador
DML
Interpretador
DDL
Mecanismo
de Consultas
Gerenciador
de Buffer
Gerenciador
de Transaes
Gerenciador
de Arquivo
Cdigo Objeto
aplicativos
Banco de Dados I
ndices
Arquivos
de dados
Processador
de Consultas
Sistema de
Armazenamento
DBM
S
Catlogo
DB
DBS
33
de armazenamento
Manuteno do esquema e da organizao fsica
dos dados
Definio da poltica de acesso aos dados
Especificao de restries de integridade
Banco de Dados I
34
Programadores de aplicao
Usurios sofisticados
Usurios especializados em aplicaes no-
convencionais
Usurios de programas de aplicao
Banco de Dados I
35
Conjunto
Conjuntode
deferramentas
ferramentasconceituais
conceituaispara
paradescrever
descreverdados,
dados,
seus
seusrelacionamentos,
relacionamentos,sua
suasemntica
semnticaeerestries
restriesde
deconsistncia
consistncia
Modelos lgicos baseados em objetos
Modelo entidade-relacionamento
Modelo orientado a objeto
Modelos lgicos baseados em registros
Modelo relacional
Modelo Codasyl (rede)
Modelo hierrquico
Modelos fsicos de dados
Banco de Dados I
36
37
38
Tipos primitivos
Objeto, conjunto, lista, string, integer, real
Restries de integridade
Unicidade de Objeto e identidade de objeto
Hierarquia de classes
Herana
- Uma classe herda as propriedades da superclasse
Comportamento de objetos de uma classe
- Mtodo
39
40
41
Banco de Dados I
42
Sumrio
Introduo aos Sistemas de Banco de Dados
Banco de Dados I
43
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Princpio bsico
Representar dados atravs
Entidades
Relacionamentos entre as entidades
Atributos
Banco de Dados I
44
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Entidade
Representao abstrata de um objeto do mundo real
Exemplos de entidades do mundo real
Objeto concreto
Um empregado, um carro, um estudante
Objeto abstrato
Uma empresa, uma conta bancria, uma disciplina
Banco de Dados I
45
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Atributos de estudantes
matrcula, nome, curso, rg, cpf, data-ingresso
Conjunto de entidades
Grupo de entidades que apresentam mesmo conjunto
de atributos
A cada atributo de uma entidade deve estar associado um
valor
Banco de Dados I
46
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Empregados
matrcula
Conjunto
de matrculas
Brbara
nome
endereo
Banco de Dados I
E
Empregados
Ei
i Empregados
Nome:
Nome:EEi i
onde
nnkk, ,onde
nnkconjunto
conjuntonomes
nomes
k
Conjunto
de nomes
Conjunto
de endereos
R. X, 9
47
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Exemplo
Matrcula atributo chave para Estudante
Tipos de atributos
Atributo atmico
endereo
Atributo composto
local
cep cidade
nmero
48
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Atributo multi-valorado
Atributo derivado
Banco de Dados I
49
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Relacionamento
Abstrao que representa associaes entre diferentes
conjuntos de entidades
Exemplo
Pode-se definir um relacionamento que associa o
empregado Brbara com o departamento Cincia da
Computao
Conjunto de relacionamentos (tipo de relacionamento)
Grupo de relacionamentos que representam o mesmo
tipo de associao
Exemplo
Conjunto de relacionamentos lotao
+Contm todos os relacionamentos entre empregado e
.departamento
50
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Relacionamento (cont.)
Exemplo
Papel (role)
Funo que uma entidade desempenha no relacionamento
Exemplo
Papel de empregado
lotado (Bbara lotada em Cincia da Computao)
Papel de departamento
Lota (Cincia da Computao lota Brbara)
Banco de Dados I
51
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Relacionamento (cont.)
Grau de Relacionamento
Nmero de entidades participantes no relacionamento
Relacionamento binrio
Relacionamento de grau 2
Exemplo
Relacionamento ternrio
Relacionamento de grau 3
Exemplo
Relacionamento Agncia-Conta-Cliente
Cliente
Agncia_Conta-Cliente
Banco de Dados I
Conta
Agncia
52
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Relacionamento (cont.)
Empregado
Empregadodesempenha
desempenhadois
doispapis
papis
---supervisionado-por
-supervisionado-por(1)
(1)
---supervisor-de
-supervisor-de(2)
(2)
1
1
1
1
Empregado
Banco de Dados I
2
2
Supervisiona
53
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Relacionamento (cont.)
Atributos de relacionamento
Propriedades que descrevem um relacionamento
Exemplo
Banco de Dados I
54
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Cardinalidade de relacionamento
Indica o nmero de entidades que podem participar de um
determinado relacionamento
Um para um (1:1)
Uma entidade de A s pode estar associada a uma
.. entidade de B
Banco de Dados I
.. entidade de A
.. quantidade
.. entidade de A
.. entidade de
.. quantidade
55
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
.. quantidade de entidades de A
Exemplos
1:N
1:Nentre Departamento e
Cardinalidade do relacionamento lotao
Empregado
N:N
N:N
Cardinalidade do relacionamento cursa
entre Estudante e
Disciplina
1:N
1:N
56
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Restrio de participao
Especifica a obrigatoriedade ou no de uma entidade e
participar de um relacionamento com outra entidade
Participao total
A participao de um conjunto de entidades A total em um
relacionamento R, se toda entidade de A participa de pelo menos um
relacionamento em R
Dependncia existencial
Exemplo
Participao parcial
A participao de um conjunto de entidades A parcial em um
relacionamento R, se apenas um subconjunto de entidades de A
participa em R
Exemplo
Banco de Dados I
57
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Entidade fraca
Entidade cuja existncia depende de estar associada, via um
relacionamento (relacionamento de identificao),
identificao com uma
outra entidade (entidade forte)
forte
Exemplo
Considere o relacionamento dependncia entre os
conjuntos de entidades Empregado e Dependente
Banco de Dados I
58
2. Modelo Entidade-Relacionamento
- Diagrama ER -
Ferramenta de projeto
Capaz de capturar e representar graficamente toda
estrutura lgica de um banco de dados
Utilizada para modelagem de BDs
Existem ferramentas
Fornecem uma interface grfica para o
desenvolvimento de DERs
A partir do DER especificado, geram o esquema do BD
relacional
ERWin
Banco de Dados I
59
2. Modelo Entidade-Relacionamento
- Diagrama ER -
Notao
Smbolo
Smbolo
Representao
Representao
Conjunto de entidades
Conjunto de entidades
fracas
Conjunto de relacionamentos
(relacionamento)
Relacionamento de
identificao
Nome atributo
Banco de Dados I
Atributo
60
2. Modelo Entidade-Relacionamento
- Diagrama ER -
Notao
Smbolo
Smbolo
Representao
Representao
Nome atributo
Atributo chave
Nome atributo
Atributo derivado
Nome atributo
Atributo multivalorado
Nome atributo
Atributo composto
Nome atributo
Banco de Dados I
Nome atributo
61
2. Modelo Entidade-Relacionamento
- Diagrama ER -
Notao
Smbolo
Smbolo
Representao
Representao
Nome atributo
E1
R
(min,max)
E1
Banco de Dados I
E2
Cardinalidade 1:N
Restrio estrutural de
participao de E em R
E2
Participao total de E2
em R
62
2. Modelo Entidade-Relacionamento
- Diagrama ER -
Exerccio
Utilize o DER para modelar o BD para o seguinte cenrio
A empresa X tem seus dados organizados da seguinte
forma:
Os empregados esto lotados em diversos departamentos.
Funcionrios so diretamente chefiados por supervisores.
importante identificar o supervisor de cada funcionrio
Todo funcionrio deve estar lotado em um departamento.
Nenhum funcionrio pode estar lotado em mais de um
departamento
Um departamento possui no mnimo 5 empregados, onde um
deles o gerente do departamento.
Os dependentes dos funcionrios devem possuir como
atributos: nome, data-nasc. A idade limite para ser dependente
de um empregado 18 anos
O salrio de um empregado calculado com base nos seus
diversos vencimentos.
Para tipo de vencimento, existe uma descrio e o valor
correspondente
Banco de Dados I
63
2. Modelo Entidade-Relacionamento
- Diagrama ER -
Cod_venc
descrio
Vencimento
supervisiona
-supervisionado
-supervisor
dt_lotao
(1,1)
lotao
(1,1)
(0,n)
valor
(0,n)
Empregado
(1,n)
ganha
(0,n)
(5,n)
matr
dt_nasc
nome
(0,1)
dependncia
idade
Departamento
(0,1)
gerncia
(1,1)
nome
Dependente
dt_nasc
Banco de Dados I
64
2. Modelo Entidade-Relacionamento
- Diagrama ER -
Cod_venc
descrio
Vencimento
supervisiona
-supervisionado
-supervisor
dt_lotao
n
lotao
valor
1
n
Empregado
ganha
1
1
matr
dt_nasc
nome
dependncia
n
Departamento
1
gerncia
nome
idade
Dependente
dt_nasc
Banco de Dados I
65
2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -
Especializao
Existem conjuntos de entidades compostos de subgrupos de
entidades
Cada subgrupo apresenta propriedades diferentes dos
outros subgrupos
Considere o conjuntos de entidades Empregado na
modelagem dos dados de um universidade
Podemos identificar os seguintes subconjuntos dentro de
Empregado
Professores
Titulao
Universidade de titulao
Regime de trabalho (DE, 40h, 20h)
Escriturrios
Grau de instruo
rea de atuao (contador, secretria, etc)
Engenheiros
Especialidade
66
2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -
Especializao (cont.)
Definio
Processo de identificao de subgrupos de entidades
dentro de um conjunto de entidades
Processo de especializao pode ser recursivo
Um nico conjunto de entidades pode ser especializado
por mais de uma caracterstica de diferenciao
(especializao)
No exemplo de Empregado em uma universidade
Especializao por tipo de empregado
Especializao por tipo de contrato
CLT
Servios prestados
67
2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -
Especializao (cont.)
Notao MER
Empregado
is
isaa(
(um)
um)
Empregado
EmpregadoisisaaProfessor
Professorou
ou
Empregado
is
a
Escriturrio
Empregado is a Escriturrioou
ou
Empregado
is
a
Engenheiro
Empregado is a Engenheiro
ISA
regime_tr
Professor
titulao
uni_tit
Banco de Dados I
Escriturrio
Grau_ins
rea_atua
Engenheiro
especialidade
68
2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -
Especializao (cont.)
Herana de propriedades
Os subgrupos de entidades herdam todas as
propriedades do conjunto de entidade de mais alto
nvel
nome
Empregado
dt_nasc
matr
ISA
regime_tr
Professor
titulao
uni_tit
Banco de Dados I
Escriturrio
Grau_ins
rea_atua
Engenheiro
especialidade
69
2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -
Especializao (cont.)
realizada sobre um nico conjunto de entidades
Identificar subgrupos
nfase nas diferenas entre entidades de um mesmo
subconjunto de entidades
Atravs dos subgrupos mais especializados
Generalizao
Processo de identificao de conjuntos de entidades que
possuem caractersticas em comum
Mesmos atributos e participam de mesmos
relacionamentos
Formao de um nico conjunto de entidades de mais alto
nvel
realizada sobre vrios conjuntos de entidades
Identificar um conjunto de entidades de mais alto nvel
Banco de Dados I
70
2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -
Generalizao (cont.)
nfase nas similaridades entre diversos conjuntos de
entidades
Reduo de redundncia de representao
Atributos compartilhados s sero representados no
conjunto de entidades de nvel mais alto
No sero repetidos
Na prtica
Generalizao o processo inverso da especializao
Duas estratgias que devem ser utilizadas
Especializar onde for necessrio
Generalizar onde for possvel
Banco de Dados I
71
2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -
ISA
E1
E2
...
...
En
Disjuno
0<i,jn, ij : Ei Ej =
Nenhuma entidade de E pode pertencer a mais de um
subgrupo
Banco de Dados I
72
2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -
especializao
Completeza
Especifica se uma entidade de E tem que pertencer
obrigatoriamente a um dos conjuntos de entidades de
mais baixo nvel ou no
Total
E=
E
n
i=1
Parcial
E
n E
i=1
Banco de Dados I
73
2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -
Agregao
Abstrao que representa relacionamentos como
entidades
Mecanismo utilizado para representar relacionamentos de
relacionamentos
Exemplo
Considere a modelagem de dados em um banco BX.
Clientes do BX esto relacionados a agncia e conta
Estratgia 1
Agncia
Conta
n
Cliente
Banco de Dados I
74
2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -
Agregao (cont.)
Problemas na Estratgia 1
No representa a estrutura lgica que deve ser
modelada
Relacionamento de cliente com o relacionamento agnciaconta
Banco de Dados I
75
2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -
Agregao (cont.)
Utilizar o mecanismo de agregao
cod_ag
nome
Agncia
ender gerente
num_conta
saldo
Conta
n
data_abertura
cod_cliente
CPF
nome
Banco de Dados I
n
Cliente
ender
data-nasc
76
Sumrio
Banco de Dados I
77
Sumrio
Introduo aos Sistemas de Banco de Dados
Projeto de Bancos de Dados Relacionais
Banco de Dados I
78
3. Modelo Relacional
- Introduo -
aplicaes comerciais
Modelo de dados para Bancos de Dados Relacionais
SBDs relacionais
DB2 (IBM)
Informix
ADABAS
Sybase
Oracle
SQL Server (Microsoft)
Banco de Dados I
79
3. Modelo Relacional
end
R X, 50
R Y, 1
R V, 502
R Z, 501
R A, 501
dt-nasc
20000102
19991001
19990510
19980601
20000203
Atributos
Banco de Dados I
80
3. Modelo Relacional
- Conceitos Bsicos -
Domnio
Conjunto de valores permitidos para um atributo
Valores so atmicos
Indivisveis
Exemplo: telefone
tipo char com formato (ddd)ddd-dddd
dom(telefone) representa o conjunto de valores atmicos
vlidos para o tipo char e formato especificado
Banco de Dados I
81
3. Modelo Relacional
- Conceitos Bsicos -
Restrio de Chave
Uma relao definida como um conjunto de tuplas
Elementos de um conjunto so distintos entre si
Banco de Dados I
82
3. Modelo Relacional
- Conceitos Bsicos -
Empregado(matr,nome,ender,cpf)
matr e cpf so atributos da super chave
Apenas matr ou apenas cpf
- condio necessria e suficiente para garantir a no
existncia de tuplas repetidas
Chave (key)
Banco de Dados I
83
3. Modelo Relacional
- Conceitos Bsicos -
Banco de Dados I
84
3. Modelo Relacional
- Conceitos Bsicos -
Banco de Dados I
85
3. Modelo Relacional
- Conceitos Bsicos -
Create
Createtable
tableDepartamento
Departamento
(cod_depart
integer
(cod_depart integernot
notnull,
null,
nome
varchar(30)
nome
varchar(30)not
notnull,
null,
ender
varchar(30),
ender
varchar(30),
primary
primarykey
key(cod_depart))
(cod_depart))
Banco de Dados I
Create
Createtable
tableEmpregado
Empregado
(matr
integer
(matr integernot
notnull,
null,
nome
varchar(30)
nome
varchar(30)not
notnull,
null,
ender
varchar(30),
ender
varchar(30),
cpf
integer
not
cpf
integer
notnull,
null,
lotao
integer
not
null,
lotao
integer
not null,
primary
key
(matr),
primary key (matr),
unique
uniquekey
key(cpf),
(cpf),
foreign
key
(lotao)
foreign key (lotao)references
references
Departamento
Departamentoon
ondelete
deletecascade)
cascade)
86
3. Modelo Relacional
Tratamento
Rejeitar a incluso
Solicitar novas informaes
Banco de Dados I
87
3. Modelo Relacional
Tratamento
Rejeitar a excluso
Propagao em cascata
Mudar fk em R que referencia R
Banco de Dados I
88
3. Modelo Relacional
Banco de Dados I
89
3. Modelo Relacional
- lgebra Relacional -
90
3. Modelo Relacional
- lgebra Relacional -
relacionais
Relao
Relao
Consulta
Linguagem procedimental
Operaes bsicas
Seleo
( )
Projeo
Unio
Diferena
Produto cartesiano
Banco de Dados I
()
()
(-)
(x)
Operaes unrias
Operaes binrias
91
3. Modelo Relacional
r uma relao e
P representa um predicado (condio de seleo)
Banco de Dados I
92
3. Modelo Relacional
salrio>5000
(Empregado)
93
3. Modelo Relacional
(r) ( (r))
( (r)) ( (r))
12
1
Banco de Dados I
94
3. Modelo Relacional
Exemplo
Listar o nome e salrio de todos os funcionrios
nome, salrio (Empregado)
Filtro
Filtrode
deatributos
atributos
Seleo
Seleo
Filtro
Filtrode
detuplas
tuplas
Banco de Dados I
95
3. Modelo Relacional
S(B1,
96
3. Modelo Relacional
Banco de Dados I
97
3. Modelo Relacional
Banco de Dados I
98
3. Modelo Relacional
A
a1
a1
a2
B
b1
b2
b1
Banco de Dados I
A
a1
a2
a2
B
b1
b3
b1
C
c1
c3
c4
a1
a1
a1
a1
a1
a1
a2
a2
a2
b1
b1
b1
b2
b2
b2
b1
b1
b1
a1
a2
a2
a1
a2
a2
a1
a2
a2
b1
b3
b1
b1
b3
b1
b1
b3
b1
s.C
c1
c3
c4
c1
c3
c4
c1
c3
c4
99
3. Modelo Relacional
condio
s = condio (r x s)
100
3. Modelo Relacional
A
a1
a1
a2
B
b1
b2
b1
Banco de Dados I
A
a1
a2
a2
B
b1
b3
b1
C
c1
c3
c4
r.B s.B
r.A
r.B
a1
a1
a1
a1
a2
b1
b2
b2
b2
b1
a2
a1
a2
a2
a2
b3
b1
b3
b1
b3
c3
c1
c3
c4
c3
101
3. Modelo Relacional
condio
s = condio (r x s)
102
3. Modelo Relacional
Departamento
cod-dep
1
2
3
nome
Informtica
R. Humanos
Financeiro
Banco de Dados I
d.cod-dep=e.lotao
Empregado
Empregado
ender
R. X,10
R. Y,5
R. Z. 2
gerente
21
11
40
Matr
11
21
33
35
37
40
57
Nome
Brbara
Andr
Sofia
Lucas
Rebeca
Caio
Yasmin
cpf
231
451
472
549
465
555
800
salrio lotao
8000
2
9000
1
3000
2
500
2
400
3
800
1
400
1
103
3. Modelo Relacional
d.cod-dep=e.lotao
Empregado
d.cod-dep d.nome
d. ender d. gerente
1
Informtica R. X,10
21
1
Informtica R. X,10
21
1
Informtica R. X,10
21
2
R. Humanos R. Y,5
11
2
R. Humanos R. Y,5
11
2
R. Humanos R. Y,5
11
3
Financeiro R. Z. 2
40
e.nome,d.nome (Departamento
d.cod-dep=e.lotao
Para
Paracada
cadaempregado,
empregado,listar
listarseu
seunome
nomeeeoo
nome
nomedo
dodepartamento
departamentoonde
ondeest
estlotado.
lotado.
Banco de Dados I
104
3. Modelo Relacional
s = condio (r x s)
condio de juno da forma
r.B1 = s.B1 r.B2 = s.B2
condio
Notao
r s
Banco de Dados I
r.Bi = s.Bi
105
3. Modelo Relacional
Departamento
cod-dep
1
2
3
nome
Informtica
R. Humanos
Financeiro
Banco de Dados I
Empregado
Empregado
ender
R. X,10
R. Y,5
R. Z. 2
gerente
21
11
40
Matr
11
21
33
35
37
40
57
Nome
Brbara
Andr
Sofia
Lucas
Rebeca
Caio
Yasmin
cpf
231
451
472
549
465
555
800
salrio cod-dep
8000
2
9000
1
3000
2
500
2
400
3
800
1
400
1
106
3. Modelo Relacional
Empregado
d.cod-dep d.nome
d. ender d. gerente
1
Informtica R. X,10
21
1
Informtica R. X,10
21
1
Informtica R. X,10
21
2
R. Humanos R. Y,5
11
2
R. Humanos R. Y,5
11
2
R. Humanos R. Y,5
11
3
Financeiro R. Z. 2
40
Banco de Dados I
107
3. Modelo Relacional
s = R (r
s)
Banco de Dados I
108
3. Modelo Relacional
Banco de Dados I
b1
b3
b3
b3
b2
c1
c1
c2
c3
c3
c1
c2
c3
a1
b3
109
3. Modelo Relacional
b1
b3
b3
b3
b1
b1
c1
c1
c1
c2
c1
c2
rs
c1
c2
a2
a2
b3
b1
Exemplo 3
b3
c1
Banco de Dados I
a1
a2
110
3. Modelo Relacional
Re-ordena os atributos de
Associa todas tuplas de r com s
111
3. Modelo Relacional
Exerccio:
Utilizando a definio de diviso, mostrar passo a passo como
encontrado os empregados que tm descontados de seu salrio todos
os tipos de descontos possveis
Banco de Dados I
112
3. Modelo Relacional
Exemplo
rel1 R-S((R-S(r) x s) - R-S,S(r))
rel2R-S(r)
resultado= rel1 - rel2
Banco de Dados I
113
3. Modelo Relacional
Banco de Dados I
114
3. Modelo Relacional
Banco de Dados I
115
3. Modelo Relacional
No aparecero no resultado
Vendedores que no efetuaram vendas
Banco de Dados I
116
3. Modelo Relacional
Banco de Dados I
117
3. Modelo Relacional
11
14
15
17
19
21
Brbara
Andr
Sofia
Caio
Lucas
Camila
Banco de Dados I
salrio
5000
7000
3000
500
700
900
Vendas
matr
11
11
14
21
cod-item
qtde
pr-venda
72727
545
545
13
160
50
87
10
2.00
15.50
15.50
8.75
118
3. Modelo Relacional
Vendas
matr
nome
salrio
cod-item
qtde
pr-venda
11
11
14
15
17
19
21
Brbara
Brbara
Andr
Sofia
Caio
Lucas
Camila
5000
5000
7000
3000
500
700
900
72727
545
545
Null
Null
Null
13
160
50
87
Null
Null
Null
10
2.00
15.50
15.50
Null
Null
Null
8.75
Banco de Dados I
119
3. Modelo Relacional
Banco de Dados I
120
3. Modelo Relacional
- Clculo Relacional -
Banco de Dados I
121
3. Modelo Relacional
- Clculo Relacional -
Banco de Dados I
122
3. Modelo Relacional
- Clculo Relacional -
123
3. Modelo Relacional
- Clculo Relacional -
Exemplos
Considere as seguintes relaes
Consulta C1:
Banco de Dados I
124
3. Modelo Relacional
- Clculo Relacional -
Consulta C2:
d[nome]=DC d[cod_dep]=e[lotacao]))}
Consulta C3:
Banco de Dados I
125
3. Modelo Relacional
- Clculo Relacional -
Expresses seguras
Ck: {e | (e Empregado)}
Banco de Dados I
126
3. Modelo Relacional
- Clculo Relacional -
Exemplo
Dom( (e Empregado))
Valores de tuplas pertencentes a Empregado
{e | (e Empregado)}
Tem como resultado tuplas que no pertencem a Empregado
(completeza relacional)
127
Mini-mundo
(mundo real)
real
Anlise de
Requisitos
Requisitos de dados
Independente
do SGBD
Anlise
Funcional
Projeto
Conceitual
Esquema Conceitual (MER)
Projeto Lgico
(mapeamento de
modelo de dados)
Esquema Conceitual representado
no modelo de dados do SGBD
Especfico para
cada SGBD
Projeto
(Software)
Projeto Fsico
Estruturas de armazenamento
e caminhos de acesso (ndices)
Implementao
Implementao
Banco de Dados I
Projeto conceitual
Com base nos requisitos de dados
Criar um esquema conceitual para o banco de dados
Modelo de dados conceitual
MER
Construir um DER
Projeto lgico
Com base no DER definido na fase anterior
Criar um diagrama relacional
Representao grfica de um esquema relacional
Banco de Dados I
129
Projeto Fsico
Definir estruturas de armazenamento
Como e onde devem ser armazenadas as tabelas
Uma tabela em um arquivo
Vrias tabelas em um nico arquivo
Implementao
Com base no DR definido na fase 3 e as estruturas de armazenamento
e caminhos de acesso definidos na fase anterior
Criar o banco de dados
Expresses DDL
Carregar o BD
Banco de Dados I
130
Banco de Dados I
131
descrito a seguir
Passo 1
Para cada conjunto de entidades E, deve ser criada
uma tabela como todos os atributos de E
Escolher uma chave candidata para ser a chave primria da
tabela
Apenas os componentes atmicos de atributos compostos
devem ser includos
Notao de tabela no DR
Nome da
Tabela
Banco de Dados I
132
Notao
E1
PK
E2
PK
Banco de Dados I
133
Notao
E1
Banco de Dados I
PK
E2
134
Notao
E1
PK-E1
Banco de Dados I
PK-E1
Tab-aux
PK-E2
E2
PK-E2
135
Passo 6
Para cada conjunto de entidades fracas F
Cria uma tabela TFr com todos os atributos de F
Incluir como chave estrangeira de TF a chave primria da tabela
correspondentes ao conjunto de entidades fortes R
A chave primria de TFr ser a chave parcial de F mais a chave
primria de R
Banco de Dados I
136
Banco de Dados I
137
nome
Agncia
ender gerente
num-conta
saldo
Conta
n
data_abertura
cod-cliente
CPF
nome
Banco de Dados I
n
Cliente
ender
data-nasc
138
ender gerente
nome
num-conta
cod_ag
Agncia
saldo
Conta
num-conta
cod-ag
AG_CC
tipo-conta
cod-ag, num-conta
Cliente_Conta
data-abert
cod-cliente
ender
cod-cliente
CPF
nome
Banco de Dados I
Cliente
data-nasc
139
5. SQL
140
5. SQL
Banco de Dados I
141
5. SQL
142
5. SQL
varchar(n)
string de caracteres de tamanho varivel (mximo n)
integer
smallint
decimal(p,d)
real
date
data de calendrio
Banco de Dados I
Alphabetic
Alphabeticdate
dateformats
formats( (April
April15,
15,1998)
1998)
Numeric
date
formats
(
4/15/1998)
Numeric date formats ( 4/15/1998)
Unseparated
Unseparatedstring
stringformats
formats(19921225')
(19921225')
143
5. SQL
Banco de Dados I
144
5. SQL
Alterando tabelas
Estrutura bsica
Exerccio:
Alterar a tabela Empregado para que nome seja chave candidata
Banco de Dados I
145
5. SQL
- Conjunto de Operaes para Manipulao de Dados Consultas simples sobre o banco de dados
Estrutura bsica
SELECT [ALL | DISTINCT] {* | expr [[AS] c_alias]
{, expr [[AS] c_alias] }}
FROM nome-tabela [[AS] qualificador]
{, nome-tabela [[AS] qualificador] }
WHERE predicado
ALL
Retorna todas as tuplas, inclusive repetidas (default)
DISTINCT
*
expr
Representa um atributo ou
Expresso matemtica envolvendo atributos das tabelas
salario*1.40
Banco de Dados I
146
5. SQL
- Conjunto de Operaes para Manipulao de Dados Consultas simples sobre o banco de dados (cont.)
FROM
Representa o produto cartesiano das tabelas referenciadas
WHERE
147
5. SQL
- Conjunto de Operaes para Manipulao de Dados Predicados com operaes sobre strings
Identificao de padro
%
Casa com qualquer substring
Operador
like
Exemplos
nome like inf%
148
5. SQL
UNION ALL
Unio de duas relaes
Com repeties
Exemplo
Considere as seguintes relaes
Banco de Dados I
149
5. SQL
INTERSECT ALL
Interseo entre duas relaes
Com repeties
EXCEPT ALL
Diferena entre duas relaes (consultas)
Com repeties
Banco de Dados I
150
5. SQL
151
5. SQL
avg
max
min
count
Sintaxe
nome-da-funo (ALL | DISTINCT nome-coluna) | count(*)
No podem ser utilizados na clusula WHERE
Banco de Dados I
152
5. SQL
Banco de Dados I
153
5. SQL
para
paraooconjunto
conjuntode
detuplas
tuplas
de
cada
grupo
de cada grupo
154
5. SQL
155
5. SQL
select
selectv.nome,
v.nome,e.referncia,
e.referncia,sum(d.qtde)
sum(d.qtde)as
astotal
total
from
fromEstoque
Estoquee,e,Vendedor
Vendedorv,v,Vendas
Vendasdd
where
wheree.cod_item=d.cod_item
e.cod_item=d.cod_itemand
andv.matr=d.matr
v.matr=d.matr
group
groupby
byv.nome,
v.nome,e.referncia
e.referncia
Banco de Dados I
156
5. SQL
157
5. SQL
158
5. SQL
select
selectv.nome,
v.nome,count(*)
count(*)as
astotal_de_vendas
total_de_vendas
from
fromVendedor
Vendedorv,v,Vendas
Vendasdd
where
wherev.matr=d.matr
v.matr=d.matr
group
groupby
byv.nome
v.nome
having
havingsum(d.qtde*d.pr_venda)
sum(d.qtde*d.pr_venda)>>10000
10000
order
orderby
bycount(*)
count(*)
Banco de Dados I
159
5. SQL
160
5. SQL
161
5. SQL
Varivel de correlao
Banco de Dados I
162
5. SQL
select
selectnome
nome
from
Empregado
from Empregado
where
wherelotao
lotaoin
in((select
selectcod_depart
cod_departfrom
fromDepartamento
Departamento
where
wherecidade='Fortaleza'
cidade='Fortaleza'))
Banco de Dados I
163
5. SQL
select
selectnome
nome
from
Empregado
from Empregado
where
wheresalrio
salrio>=some
>=some((select
selectavg(salrio)
avg(salrio)from
fromEmpregado
Empregado
group
lotao
groupby
bylotao)
lotao)
lotao
Banco de Dados I
164
5. SQL
ALL (subconsulta)
165
5. SQL
select
selectd.nome
d.nome
from
Empregado
from Empregadoe,e,Departamento
Departamentodd
where
whered.cod_depart=e.lotao
d.cod_depart=e.lotao
group
by
group byd.nome
d.nome
having
avg(salrio)
having avg(salrio)>=all
>=all((select
selectavg(salrio)
avg(salrio)from
fromEmpregado
Empregado
group
lotao
groupby
bylotao)
lotao)
lotao
Predicado EXISTS
Verifica se o conjunto retornado por uma subconjunto
vazio ou no
Listar empregados que possuem dependentes
select
selecte.nome
e.nome
from
Empregado
from Empregadoee
where
matr_resp=e.matr
whereexists
exists(select
(select**from
fromDependente
Dependentewhere
wherematr_resp=e.matr)
matr_resp=e.matr)
matr_resp=e.matr
Banco de Dados I
166
5. SQL
EXISTS (subconsulta)
167
5. SQL
Predicado Between
Sintaxe
expr1 [NOT] BETWEEN expr2 and expr3
Exemplo
matr between 2 and 10 matr >= 2 and matr<=10
Banco de Dados I
168
5. SQL
select d.nome
from Empregado e, Departamento d
where d.cod_depart=e.lotao
produto cartesiano
seleo
d.nome(d.cod_depart=e.lotao(Departamento x Empregado))
Departamento
Banco de Dados I
d.cod_depart=e.lotao
Empregado
169
5. SQL
- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado (cont.)
Sintaxe da clusula FROM
[ FROM {<tabela_fonte>} [,...n] ]
<table_fonte> ::=
nome_tabela [ [AS] qualificador ] [ WITH ( <table_hint> [,...n]) ]
Pode ser
| nome_tabela [ [AS] qualificador ] [ (column_alias [,...n] ) ]
uma viso
(view)
| (subquery) [AS] qualificador [ (column_alias [,...n] ) ]
| <tabela_fonte> <tipo_juno> <tabela_fonte> ON
<condio_juno>
<tipo_juno> ::=
[ INNER | { { LEFT | RIGHT | FULL } [OUTER] } ] [ <join_hint> ]
JOIN
Banco de Dados I
170
5. SQL
- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado (cont.)
Sintaxe da clusula FROM (cont.)
WITH (<table_hint> [,...n]) ])
Especifica estratgias (dicas) para o otimizador de consultas
ndices
tipo e granularidade de bloqueio (lock)
(column_alias [,...n] )
join_hint
Banco de Dados I
171
5. SQL
- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado (cont.)
Sintaxe da clusula FROM (cont.)
Tipos de juno
Juno theta
INNER JOIN
Juno externa esquerda
LEFT OUTER JOIN
Juno externa direita
RIGHT OUTER JOIN
Juno externa completa
FULL OUTER JOIN
Juno theta
Exemplo
Listar nome dos empregados com o nome do respectivo
departamento
select
selecte.nome,
e.nome,d.nome
d.nome
from
Empregado
from Empregadoeeinner
innerjoin
joinDepartamento
Departamentoddon
one.lotao=d.cod_depart
e.lotao=d.cod_depart
Banco de Dados I
172
5. SQL
- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado (cont.)
Juno theta (INNER JOIN)
Exemplo
Para os empregados que tm salrio maior que 700, listar
nome com o nome do respectivo departamento,
select
selectnome_empregado,
nome_empregado,d.nome
d.nomefrom
fromDepartamento
Departamentoddinner
innerjoin
join
(select
(selectnome,
nome,lotao
lotaofrom
fromEmpregado
Empregadowhere
where salrio>700)
salrio>700)ee
(nome_empregado,departamento_lotao)
(nome_empregado,departamento_lotao)
on
ondepartamento_lotao=d.cod_depart
departamento_lotao=d.cod_depart
Banco de Dados I
173
5. SQL
- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado (cont.)
LEFT OUTER JOIN
Calcula o resultado da juno
Exemplo
Listar o histrico de vendas de cada vendedor, considerando o
seguinte esquema
174
5. SQL
- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado (cont.)
RIGHT OUTER JOIN
Calcula o resultado da juno
Exemplo
Para cada empregado, listar nome do empregado, nome do
departamento e nome dos dependentes
select
selecte.nome,
e.nome,d.nome,
d.nome,p.nome
p.nome
from
fromDepartamento
Departamentoddinner
innerjoin
join(Dependente
(Dependenteppright
rightouter
outerjoin
join
Empregado
Empregadoeeon
onp.matr_resp=e.matr)
p.matr_resp=e.matr)on
ond.cod_dep=e.lotao
d.cod_dep=e.lotao
Banco de Dados I
175
5. SQL
- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado (cont.)
FULL OUTER JOIN
Calcula o resultado da juno
176
5. SQL
Banco de Dados I
177
5. SQL
178
5. SQL
Os dados so materializados
Custo praticamente igual a cada materializao
Quanto ao acesso
Somente leitura
Vises que s permitem acesso de leitura
Permitem atualizao
Vises que permitem atualizaes nas tabelas base
Banco de Dados I
179
5. SQL
Banco de Dados I
180
5. SQL
Banco de Dados I
181
5. SQL
- Vises Exemplos
Definindo vises
create view V1 (nome_departamento, nome_empregado)
as select d.nome,e.nome
from Departamento d inner join Empregado e
on d.cod_depart=e.lotao
from Empregado e
Banco de Dados I
182
5. SQL
- Vises Exemplos
Acessando o banco de dados atravs de vises
select * from V1
select * from V2 where nmero_de_dependentes>2
select * from V3
matrcula
salrio
----------------------------------- -----------------------caio
500.0
rebeca
500.0
matrcula
salrio
----------------------------------- -----------------------caio
600.0
rebeca
600.0
Erro,
as
Erro
Erro,
poisvo
astuplas
tuplasade
aserem
serem
Erro pois
alteradas
deixar
ser
visveis
alteradas
vo
deixar
de
ser
visveis
para
paraV3
V3
183
5. SQL
184
5. SQL
Banco de Dados I
185