Abordagem
g
de SGBD
† Abordagem = tipo de modelo lógico
† Históricas
 hierárquica
 rede
† Atuais
 relacional
l i
l
 orientada a objeto
Abordagens clássicas/1
Tipos de modelos lógicos de SGBD
Desde o fim da década de 60 diversos SGBD comerciais foram construídos. Alguns
tipos básicos de SGBD estabeleceram-se na prática.
† Abordagem hierárquica
p
IBM teve IMS,, largamente
g
utilizado durante a década de 70 e
Importância:
início da década de 80.
† Abordagem em rede
Grande
G
a de família
a
a de SG
SGBDss baseada e
em u
um pad
padrão
ão ANSI
S
Originário do IDMS (BF Goodrich, depois Culinane)
Exemplos: IDMS, IDS/2, RDBMS (Digital), …
† Abordagem relacional
Base: trabalhos teóricos de Codd (IBM) procurando um modelo lógico
independente de detalhes de implementação
Década de 70: pesquisa e construção de diversos protótipos.
protótipos Mais importantes
são:
System R (IBM), precursor do DB2
INGRES (Stonebraker,
(Stonebraker Universidade da Califórnia)
Califórnia), precursor do produto
comercial de mesmo nome
Abordagens clássicas/2
Comparação entre abordagens
Aspectos
† Comparação da estrutura de dados
Construções que compõe uma base de dados na abordagem
† Comparação das instruções de acesso a dados
DML fictícia mínima
destinada apenas a comparar as abordagens
DML opera registro-a-registro
registro a registro (não há operações que tratam conjuntos
de dados)
† Comparação das instruções de alteração
Será verificado como alterações são implementadas em cada modelo
lógico
† Comparação da independência de dados
Abordagens clássicas/3
Exemplo
p usado
† Informações armazenadas:
Para cada peça: código, nome, cor, peso e cidade em que se encontra
Para cada fornecedor: código, nome, status e cidade
Para cada
P
d embarque:
b
f
fornecedor
d que ffez o embarque,
b
peça embarcada,
b
d
quantidade embarcada
† Operações consideradas:
Buscar os nomes dos produtos embarcados por um fornecedor de código
dado.
Buscar os nomes dos fornecedores que embarcaram um produto de
código dado.
Incluir um produto e um fornecedor
Excluir um produto e um fornecedor
Alterar os nome de um produto e o nome de um fornecedor
Abordagens clássicas/4
Abordagem
g
hierárquica
q
† Importância:
 IBM teve IMS (DL/1), largamente utilizado durante a década de 70 e início
da década de 80
 Próprio
P ó i IMS estendeu
t d o modelo
d l hi
hierárquico
á i ainda
i d na dé
década
d d
de 70
† Poucos produtos além de IMS
† Ainda aparece em sistemas legados
Abordagens clássicas/5
Abordagem
g
hierárquica
q
- estrutura de dados
† Um BD hierárquico é uma floresta composta de árvores de registros
† Há dois tipos básicos de construção
 registro (chamado segmento em IMS)
 ligação pai-filho entre os registros
Restrição:
um determinado registro somente pode possuir um registro pai
Abordagens clássicas/6
Esquema
q
gráfico
g
de um BD hierárquico
q
Peça
CodPeça
NomePeça
CorPeça
PesoPeça
CidadePeça
definição
de tipo de relação
“pai-filho”
p
Fornec
CodFornec
NomeFornec
StatusFornec CidadeFornec
QtdeEmbarc
definição
de tipo de
registro
Abordagens clássicas/7
Um estado da base de dados IMS
Peça
P1
Eixo
Cinza
10
Um possível conteúdo da
base de dados IMS de
produtos e fornecedores
(instância, ocorrência da base
de dados)
dados).
PoA
Fornec
F3
F2
Álvares
5
Souza
F1
Sil
Silva
10
5
São Paulo
200
Rio
400
Sã P
São
Paulo
l
300
Peça
P2
Rolamento
Preto
16
Rio
Fornec
F4
Tavares
F1
Silva
8
5
Rio
São Paulo
350
300
Peça
P3
Mancal
Verde
30
SãoPaulo
Abordagens clássicas/8
Exemplo
p de esquema
q
IMS (BD
(
acadêmico))
† Um registro pai pode possuir filhos de tipos diferentes
† A hierarquia pode estender-se por diversos níveis
Curso
Cód Nome
Aluno
C dAl
CodAl
Disciplina
N
NomeAl
Al
D t I
DataIngr
CodDisc
NomeDisc ObrOpcDisc
Histórico
CodDisc NomeDisc CredDisc Conceito
AnoSem
Abordagens clássicas/9
Instruções
ç
de acesso a dados
†g
get next <record name> [
[where <select criteria>]
]
Esta instrução busca um registro raíz que obedece a determinado
critério com base em valores de seus campos
† get next <record name> under this
[where <select criteria>]
Esta instrução busca um registro que
1 - é filho do registro corrente
2 - obedece a determinado critério
Abordagens clássicas/10
Exemplos
p
de acessos a dados
† Consulta 1
Buscar os nomes dos fornecedores que embarcaram o
código P2
get
t next
t Peça
P
where
h
C dP
CodPeça='P2';
'P2'
produto de
do until no more Fornec under this;
get next Fornec under this;
g
print NomeFornec;
end;
Abordagens clássicas/11
Exemplos
p
de acessos a dados
† Consulta 2
Buscar os nomes das peças embarcadas pelo fornecedor F1:
do until no more Peça;
get next Peça;
get next Fornec under this
where CodFornec = 'F1';
if found then print NomePeça;
end;
Abordagens clássicas/12
Assimetria na abordagem
g
IMS
† O problema das peças e fornecedores é simétrico.
† A abordagem
g
IMS força
ç uma assimetria inexistente na realidade modelada.
† O modelador tem que escolher um tipo de registro pai com base em
considerações de performance.
† Consultas simétricas são resolvidas de forma diferente
†S
Somente
t problemas
bl
hi
hierárquicos
á i
são
ã modelados
d l d adequadamente
d
d
t na
abordagem hierárquica
Abordagens clássicas/13
Operações
p
ç
de modificação
ç da base de dados - Inclusão
† Incluir um novo fornecedor (sem embarques)
 criar um registro “fantasma” de peça
† Anomalia de inclusão
Uma operação que do ponto de vista da realidade modelada inclui um
ú i
único
objeto
bj t é implementada
i l
t d na base
b
d dados
de
d d
pela
l inclusão
i l ã de
d
múltiplos objetos
É conseqüência da redundância de dados
Abordagens clássicas/14
Operações
p
ç
de modificação
ç da base de dados - Exclusão
† A exclusão do último embarque de um fornecedor implica na exclusão de
seus dados
† A exclusão da única peça fornecida por um fornecedor implica na exclusão de
seus dados
† Para resolver o problema, fornecedores sem embarques teriam que ser
movidos para baixo de um registro fantasma
† Anomalia de exclusão
Abordagens clássicas/15
Operações
p
ç
de modificação
ç da base de dados - Alteração
ç
† A alteração de um campo de um fornecedor implica em busca em toda base
de dados
† Anomalia de alteração
Abordagens clássicas/16
Análise da abordagem
g
hierárquica
q
† Adequada somente para problemas hierárquicos
† Em caso de problemas não hierárquicos cria:
 Redundância de dados
 Assimetrias indesejáveis na representação de dados e na programação
 Anomalias nas instruções de modificação da base de dados
† Porque abordagem hierárquica foi
f usada?
?
 Performance
Modelava a idéia de armazenar contiguamente um registro pai e seus
vários filhos
IBM fez cedo uma reforma introduzindo o conceito de pai-filho lógico
Permitia
P
iti estabelecer
t b l
relações
l õ entre
t dif
diferentes
t á
árvores e d
de ffato
t
implementar o modelo em rede (ver adiante)
Abordagens clássicas/17
Abordagem
g
em rede
† Grande família de SGBDs baseada em um padrão estabelecido na década de
70
 Padrão CODASYL/DBTG
† Precursores forma sistemas de gerência de arquivos e ponteiros como
TOTAL
† Originário do IDMS (BF Goodrich,
Goodrich depois Culinane)
† Depois adotado por muitos fornecedores de Hardware
Abordagens clássicas/18
Abordagem
g
em rede: estrutura de dados
† BD em rede é um grafo
nós = registros
arcos = ligações entre registros
† Há dois tipos básicos de construção
 registro (“record type”)
 ligação pai-filho entre os registros (“set type”)
Não há a restrição da abordagem hierárquica: um determinado registro
pode possuir diversos registros pai.
A única restrição é que, em um tipo de ligação, um registro somente
pode participar uma vez
Abordagens clássicas/19
Esquema
q
gráfico
g
de um BD em rede - Exemplo
p dos fornecedores e peças
p ç
Peça
CodPeça
NomePeça
CorPeça
PesoPeça
CidadePeça
definição
de tipo de relação
“pai-filho”
Peça Embarq
Peça-Embarq
Embarq
QtdeEmbarc
Fornec-Embarq
Fornec
Embarq
definição
de tipo de
g
registro
Fornec
CodFornec
NomeFornec
StatusFornec CidadeFornec
Abordagens clássicas/20
Conteúdo da base de dados em rede ((Peças
ç e Fornecedores))
Peça
P1
Peça
Eixo Cinza 10 PoA
Peça
P2 Rolamento Preto
16
Rio
P3
Mancal Verde 30 SãoPaulo
Peça-Embarq
Embarq
400
300
200
300
350
Fornec-Embarq
Fornec
F1 Silva
Fornec
5
São Paulo
F2 Souza 10 Rio
Fornec
F3 Álvares 5 São Paulo
Fornec
F4 Tavares 8
Rio
Abordagens clássicas/21
Exemplo de esquema em rede do BD acadêmico
Curso
Cód Nome
CurAl
Ingr
CurCurric
DataIngr
Curric
ObrOpcDisc
AlIngr
g
Aluno
CodAl
NomeAl
DiscCurric
Disciplina
AlHist
CodDisc
Histórico
Conceito
AnoSem
NomeDisc CredDisc
DiscHist
Abordagens clássicas/22
Instruções
ç
de acesso a dados - abordagem
g
em rede (1)
( )
Na abordagem de rede são necessárias duas instruções de acesso a dados
semelhantes às da abordagem hierárquica:
† get next <record name> where <select criteria>
Esta instrução busca um registro de um tipo (<record name>) que
obedece a determinado critério (<select criteria>) com base em
valores de seus campos
Não está restrita a registros raiz
† get next <record name> under this in <set name>
where <select criteria>
Esta instrução busca um registro de um tipo (<record name>) que
obedece a determinado critério (<select criteria>) e que é filho do
registro corrente dentro da ligação (<set name>) indicada.
indicada
Abordagens clássicas/23
Instruções
ç
de acesso a dados - abordagem
g
em rede (2)
( )
Adicionalmente, aparece uma instrução própria da abordagem em rede para
buscar um registro pai (<record name>1) de um filho em uma cadeia dada
(<set name>)
† get <record name>1 over this in <set name>
Abordagens clássicas/24
Exemplos
p
de acessos a dados -abordagem
g
em rede
† Consulta 1
Buscar os nomes dos fornecedores que embarcaram o
código P2
produto de
get next Peça where CodPeça='P2';
do until no more Embarq under this in Peça
Peça-Embarq;
Embarq;
get next Embarq under this in Peça-Embarq;
get Fornec over this in Fornec-Embarq;
print NomeFornec;
end;
Abordagens clássicas/25
Exemplos
p
de acessos a dados - abordagem
g
em rede
† Consulta 2
Buscar os nomes das peças embarcadas pelo fornecedor F1
get next Fornec where CodFornec='F1';
do until no more Embarq under this in Fornec-Embarq;
get next Embarq under this in Fornec
Fornec-Embarq;
Embarq;
get Peça over this in Peça-Embarq;
print NomePeça;
end;
end
Abordagens clássicas/26
Simetria na abordagem
g
em rede
† O problema das peças e fornecedores que é simétrico do ponto de vista
da realidade implementada Õ
tratado de forma simétrica na abordagem em rede
† A abordagem em rede modela o problema e as consultas simetricamente.
Abordagens clássicas/27
Operações
p
ç
de modificação
ç da base de dados - abordagem
g
em rede
Na abordagem em rede, não aparecem as anomalias de alteração que podem
aparecer na abordagem hierárquica
† Para incluir um novo fornecedor (sem embarques) é necessário criar apenas
um registro de fornecedor
† A exclusão do último embarque de um fornecedor não implica na exclusão de
seu registro
† A exclusão
l ã d
de uma peça não
ã iimplica
li na exclusão
l ã d
de seus ffornecedores
d
(apenas de seus embarques)
† A alteração
ç de um campo
p de um fornecedor implica
p
em alteração
ç de um
registro somente
Abordagens clássicas/28
Análise da abordagem
g
em rede
† Não está restrita a problemas hierárquicos.
† O programador tem que conhecer as ligações existentes na base de dados
(navegação explícita) Õ
Independência de dados fica prejudicada, pois a criação/eliminação de
ligações implica em alterações dos programas
Abordagens clássicas/29
Abordagem
g
relacional: estrutura de dados
† Um BD relacional é composto por um único tipo de construção:
 Tabela:
T b l composta
t por linhas
li h (tuplas)
(t l ) e colunas
l
( t ib t )
(atributos).
 As ligações entre linhas de diferentes tabelas são feitas através do uso de
valores de atributos.
atributo ou coluna
Tabela Dept
p
CódigoDepto NomeDepto
D1
Marketing
D2
Engenharia
D3
Financeiro
Tabela Emp
Código Nome CódigoDepto CategFuncional
E5
Souza
D1
C5
E3
Santos
D2
C5
E2
Silva
D1
C2
E1
Soares
D1
C6
linha ou tupla
chave estrangeira ou importada da tabela Dept
chave primária
Abordagens clássicas/30
Esquema gráfico de um BD relacional
Exemplo dos fornecedores e peças
Peça
ç
CodPeça
NomePeça
CorPeça
PesoPeça
CidadePeça
representa o fato deCodPeça
em Embarq ser chave estrangeiraem
relação aCodPeça em Peça
(não é uma ligação explícita)
Embarq
CodPeça
CodFornec
QtdeEmbarc
definição
de tabela
Fornec
CodFornec
NomeFornec
StatusFornec CidadeFornec
Atributos sublinhados
indicam a chave primária da tabela
Abordagens clássicas/31
Conteúdo da base de dados relacional ((Peças
ç e Fornecedores))
Peça
CodPeça
P1
P2
P3
NomePeça
Eixo
Rolamento
Mancal
CorPeça
Cinza
Preto
Verde
Embarq
CodPeça
P1
P1
P1
P2
P2
PesoPeça
10
16
30
CidadePeça
PoA
Rio
SãoPaulo
CodFornec
F1
F2
F3
F1
F4
QtdeEmbarc
300
400
200
300
350
Fornec
CodFornec
F1
F2
F3
F4
NomeFornec
Silva
Souza
Álvares
Tavares
StatusFornec
5
10
5
8
CidadeFornec
SãoPaulo
Rio
SãoPaulo
Rio
Abordagens clássicas/32
Exemplo
p de esquema
q
relacional do BD acadêmico
Curso
CódCur NomeCur
Ingr
CódCur CodAl DataIngr
Curric
CódCur CodDisc ObrOpcDisc
Aluno
CodAl
NomeAl
Disciplina
Histórico
CodDisc
NomeDisc CredDisc
CodAl CodDisc AnoSem Conceito
Abordagens clássicas/33
Instruções
ç
de acesso a dados - abordagem
g
relacional
† Como na abordagem relacional há somente um tipo de construção (a tabela),
apenas uma instrução de acesso a dados é necessária:
get next <table name> where <select criteria>
Esta instrução busca uma linha (tupla) da tabela (<table name>) que
obedece a determinado critério (<select criteria>) com base em
valores de seus atributos
Abordagens clássicas/34
Exemplos
p
de acessos a dados - abordagem
g
relacional
† Consulta 1
Buscar os nomes dos fornecedores que embarcaram o
código P2
produto de
do until no more Embarq;
get
t next
t Embarq
E b
where
h
C dP
CodPeça='P2';
'P2'
get next Fornec
where
Fornec.CodFornec=Embarq.CodFornec;
print NomeFornec;
end;
Abordagens clássicas/35
Exemplos
p
de acessos a dados - abordagem
g
relacional
† Consulta 2
Buscar os nomes das peças embarcadas pelo fornecedor F1
do until no more Embarq;
get next Embarq where CodFornec='F1';
get next Peça
where
Peça.CodPeça Embarq.CodPeça;
Peça.CodPeça=Embarq.CodPeça;
print NomePeça;
end;
Abordagens clássicas/36
Simetria na abordagem
g
relacional
† O problema das peças e fornecedores é simétrico.
† A abordagem relacional modela o problema e as consultas simetricamente.
Abordagens clássicas/37
Operações
p
ç
de modificação
ç da base de dados - abordagem
g
relacional
Na abordagem relacional não aparecem as anomalias de alteração que
podem
d
aparecer na abordagem
b d
hi
hierárquica
á i
† Para incluir um novo fornecedor (sem embarques) é necessário criar
apenas uma linha na tabela de fornecedores.
† A exclusão do último embarque de um fornecedor não implica na exclusão
de sua linha da tabela de fornecedores.
† A exclusão de uma peça não implica na exclusão de seus fornecedores
(apenas de seus embarques).
† A alteração de um campo de um fornecedor implica em alteração de uma
linha somente.
Abordagens clássicas/38
Análise da abordagem
g
relacional
† Não
Nã está
tá restrita
t it a problemas
bl
hi
hierárquicos.
á i
† Não há ligações e
explícitas.
plícitas
† Independência de dados aumenta
aumenta, pois programas não são influenciados pela
existência ou não de caminhos de acesso.
Abordagens clássicas/39
Download

Comparação entre modelos de Banco de Dados