Escolar Documentos
Profissional Documentos
Cultura Documentos
DEPARTAMENTO DE COMPUTAO
Banco de Dados
Orientado a Objetos
Contedo
Contedo........................................................................................................................1
1. Conceitos Avanados sobre Modelagem de Dados..................................................3
1.1. Introduo..................................................................................................................... 3
1.2. Modelos de Dados......................................................................................................... 5
1.2.1. Abstraes no Projeto Conceitual de Banco de Dados ......................................................... 5
4. Manipulando Objetos..............................................................................................39
4.1. Caractersticas de Linguagens de Consulta OO (LCOO) ...................................... 39
7. Bibliografia..............................................................................................................58
Projeto
Conceitual
Esquema conceitual
Projeto
Lgico
Esquema Lgico
Projeto
Fsico
Esquema Fsico
Fig. 1.1
O modelo ER foi proposto por Peter Chen em 1976, sendo que originalmente o
modelo incluia somente os conceitos de entidade, relacionamento e atributos;
posteriormente outros conceitos foram introduzidos no modelo, tais como atributos
compostos e hierarquias de generalizao.
1.3.1. Atributos compostos:
Um atributo composto representa um grupo de atributos que possuem uma afinidade
em significado ou uso. Como exemplo, considere o atributo endereo na figura 1.2,
que composto por Rua, Cidade, Estado, Pas e CEP.
Rua
Cidade
Estado
Pas
CEP
endereo
Professor
E1
E2
...
En
Pessoa
Veculo
Homem
Carro
Mulher
Bicicleta
Aluno
AlunoGraduaao
Aluno-PsGraduao
Bicicleta
Cliente
nro-cli
nome-cli
endereo
Cliente
Especial
taxa-desconto
Pessoa
situaoserv-mil
Homem
Mulher
nomesolteira
Empr
Chefe
nro-emp
nome-diviso
Gerente
Militar
categoria
diviso
ident-nadiviso
posio
Fig. 1.9
1.4. Exerccios
1. Indique na figura 1.4 se a cobertura exclusiva ou de sobreposio.
2. Indique na figura 1.6 se a cobertura total ou parcial.
3. Indique as propriedades de cobertura da generalizao na figura 1.10.
Suposies: - s existem jogadores de futebol e de tnis;
- pode ter jogadores que jogam os dois esportes.
Jogador
Futebol
Tnis
Fig. 1.10
4. Verifique como as propriedades de cobertura da hierarquia de generalizao se
relacionam com as restries de cardinalidade de relacionamento. (Sugesto:
interprete hierarquias de generalizao como tipos especiais de relacionamento entre
classes).
5. Transforme as hierarquias do exerc.4 em relacionamentos entre a classe genrica e
as subclasses.
6. Considerando a propriedade fundamental de hierarquias de generalizao,
simplifique o esquema da figura 1.11.
10
mora
(1,n)
(1,n)
nascida
Cidade
Pessoa
(1,1)
(1,1)
(1,n)
nome
reside
Masculino
Feminino
(1,1)
(0,n)
idade
trabalha
Soldado
(0,1)
Empregado
idade
Fig. 1.11
7. Considere o esquema da figura 1.11. Como voc pode mud-lo para representar no
esquema todos os empregados, homens e mulheres?
8. Faa o esquema conceitual usando o modelo Entidade-RelacionamentoEstendido,
do seguinte problema:
Uma companhia mantm informaes sobre as pessoas que, de alguma forma,
possuem com ela algum vnculo, dentre essas seus funcionrios. Os seguintes
requisitos foram levantados junto aos usurios:
a. De cada pessoa mantm-se um cdigo, o nome, endereo.
b. De cada funcionrio guarda-se tambm seu salrio e o departamento a que ele
pertence. Desses funcionrios, alguns so gerentes e para cada um destes guarda-se os
nomes dos projetos que eles gerenciam.
c. Dos demais funcionrios que so operrios, guarda-se suas habilidades (um
operrio pode ter vrias habilidades).
d. Mantm-se tambm os
trabalhos executados na Companhia (cdigo e
caracterstica) e os operrios que executaram cada trabalho, juntamente com o perodo
que isto se deu. Sabe-se tambm que pode haver operrios que no exercem nenhum
tipo de trabalho dentre os cadastrados.
e. Deve-se tambm manter os dependentes de cada funcionrio (nome, sexo e data de
nascimento).
11
12
Os objetos, em uma
14
conjunto de
combinao dos construtores tupla, lista, array, conjunto ou bag, envolvendo outros
objetos ou no. Objetos complexos so definidos atravs de construtores envolvendo
outros objetos.
Quando o valor de um atributo de um objeto O um objeto O, o sistema armazena o
identificador de O em O ou todo o valor complexo armazenado no atributo do
objeto.
2.3.6. Encapsulamento
A cada objeto est associada sua estrutura e seu comportamento (os mtodos ou
operaes). O comportamento armazenado no banco de dados junto com a estrutura
do objeto.
O conceito real de encapsulamento determina que somente as operaes sobre os
objetos so visveis e sua estrutura escondida. Em banco de dados a noo de
invisibilidade da estrutura do objeto afrouxada. desejvel, por exemplo, poder
consultar os atributos do objeto atravs de uma linguagem de consulta. Assim, a
maioria dos SGBDOOs permitem acesso direto aos atributos fornecendo operaes
definidas pelo sistema para a leitura e modificao dos atributos, o que livra o usurio
da incumbncia de implementar uma considervel quantidade de mtodos cujo nico
propsito ler e escrever os valores dos vrios atributos dos objetos. Isso um
exemplo de violao do encapsulamento permitida pelos SGBDOOs. Esses sistemas,
porm, possuem mecanismos para que o usurio possa proteger o acesso aos atributos
dos objetos, caso desejvel.
2.3.7. Mtodos
Os objetos nos SGBDOOs so manipulados atravs de mtodos. Em geral, a definio
de um mtodo consiste de assinatura e corpo. A assinatura especifica o nome do
mtodo, os nomes e classes dos argumentos e a classe do resultado, se existir. O corpo
representa a implementao do mtodo e consiste de um conjunto de instrues
expressas em uma dada linguagem de programao.
2.3.8. Tipos e Classes
Um tipo modela as caractersticas comuns de um conjunto de objetos e corresponde
noo de tipos abstratos de dados. Uma classe um conjunto de objetos que tem
exatamente a mesma estrutura interna, i., os mesmos atributos e mesmos mtodos.
Os modelos de dados orientados a objetos usam o conceito de classe como uma base
para instanciao.
2.3.9. Herana
um mecanismo de reusabilidade muito poderoso. Com herana, uma classe
chamada uma subclasse pode ser definida com base na definio de outra classe
chamada a superclasse. A subclasse herda os atributos, mtodos e mensagens de sua
superclasse e pode ter atributos especficos, mtodos e mensagens adicionais.
Exemplo: Considere duas classes com informaes sobre um conjunto de nibus e
caminhes. As caractersticas das duas classes so mostradas na figura 2.1 cuja
notao grfica utilizada representa cada classe por um retngulo dividido em 3
partes. A parte superior contm o nome da classe; a do meio contm os atributos e a
inferior contm os mtodos definidos pelo usurio. Como as duas classes possuem
algumas caractersticas em comum, pode-se criar a classe Veculo para conter essas
caractersticas, como na figura 2.2. Somente as caractersticas prprias de cada
subclasse so mantidas na mesma.
16
Caminho
nibus
nro-placa:STRING
modelo:STRING
licena:NUMBER
data_ltima_reviso:DATE
valor_estimado:NUMBER
prxima_reviso:DATE
nro-placa:STRING
modelo:STRING
lugares:NUMBER
data_ltima_reviso:DATE
prxima_reviso:DATE
Fig.2.1
Veculo
nro-placa:STRING
modelo:STRING
data_ltima_reviso:DATE
prxima_reviso:DATE
Caminho
licena:NUMBER
valor_estimado:NUMBER
nibus
lugares:NUMBER
17
Veculo
nro-placa:STRING
modelo:STRING
data_ltima_reviso:DATE
prxima_reviso:DATE
Caminho
Veculo_Passageiro
rota: STRING
preo:NUMBER
horrio_sada:NUMBER
nibus
licena:NUMBER
valor_estimado:NUMBER
lugares:NUMBER
A herana mltipla pode provocar problemas de conflitos, como por exemplo, duas ou
mais superclasses podem ter um atributo com o mesmo nome, mas com diferentes
domnios. Esses conflitos precisam ser tratados pelo sistema. Se existe uma relao de
incluso entre os domnios, ento o domnio mais especfico ser escolhido como o
domnio para a subclasse. Por exemplo, se na classe Veculo existir o atributo
combustvel cujo domnio : (gasolina, lcool, diesel) e em Veculo_Passageiro
existir tambm o atributo combustvel cujo domnio (diesel), a classe nibus
herdar o atributo combustvel cujo domnio ser (diesel) (figura 2.4), isto , o
domnio mais restrito. Se essa relao no existe, uma soluo adotada a escolha do
domnio com base na ordem de precedncia entre as superclasses. Outros sistemas
deixam por conta do usurio a resoluo do conflito.
Em um esquema de bd, as classes podem ser organizadas em uma hierarquia de
herana, formando um grafo acclico dirigido.
18
Veculo
nro-placa:STRING
modelo:STRING
data_ltima_reviso:DATE
combustvel:(gasolina, lcool,diesel)
prxima_reviso:DATE
Veculo_Passageiro
rota: STRING
preo:NUMBER
horrio_sada:NUMBER
combustvel:(diesel)
nibus
lugares:NUMBER
combustvel:(diesel)
2.3.10. Polimorfismo
Os SGBDOOs oferecem o recurso de polimorfismo de operaes, tambm conhecido
como sobrecarga de operador (overloading). Outros conceitos relacionados com o
polimorfismo so os de late binding (ligao tardia) e overriding (redefinio de
operao).
Para melhor expor esses conceitos, considere uma operao display que recebe um
objeto como entrada e apresenta o objeto na tela. Se o objeto for:
- uma imagem: deseja-se apresentar a imagem;
- uma pessoa: deseja-se apresentar os dados sobre a pessoa (nome, endereo, etc);
- um grfico: deseja-se apresentar uma representao grfica.
Usando um sistema convencional, seriam necessrias 3 operaoes: display_pessoa,
display_figura e display_grfico, como mostrado a seguir:
for x in X do
begin
case of type(x)
pessoa: display_pessoa(x);
figura: display_figura(x);
grfico: display_grfico(x);
end;
end;
19
20
nro_conta: Integer;
proprietrio: Cliente;
saldo_corrente: Money;
operations
deposito(quantia: Money);
retirada(quantia: Money);
end Conta_Corrente.
class Cliente
properties
nome: String;
...
operations
...
end Cliente
3.3.2. Herana
Para especificar a hierarquia de classe e subclasse ser utilizada a declarao
inherits. No exemplo a seguir tem-se que a classe Carro herda todas as propriedades e
operaes da classe Veculo.
class Veculo
properties
nro_reg, marca, modelo: String;
cor: String;
milhas: Integer;
tipo_combustvel: (lcool, gasolina, dsel);
ano: Integer;
operations
...
end Veculo.
class Carro
inherits Veculo
properties
tipo_combustvel: (lcool, gasolina); {redefinido}
{propriedades adicionais de carro}
tamanho: (compacto, mdio, grande);
extras: set(String);
end Carro.
literatura, entre elas a UML, que podem ser adotadas para essa fase do projeto do
banco de dados o.o. A adoo dessa notao visa simplicidade e utilizao dos
recursos dos construtores tuple, list e set, que so bastante expressivos para uma
variedade de aplicaes de bdoo.
3.4.1. Representao de uma classe de objetos
nome da classe
nome_mtodo(param);
...
atributo1
atributo2
...
atributon
Exemplo:
nome-rua
Pessoa
nome
endereo
telefone
filhos
rua
bairro
Dependente
nmero
nome
sexo
datanasc
Fig. 3.1
Na figura 3.1 est representado que uma pessoa pode ter vrios telefones,
sendo que os mesmos devem ser armazenados segundo uma ordem. Essa ordem
definida de acordo com a semntica da aplicao; por exemplo, a lista de telefones
24
pode estar representando a ordem de preferncia a ser usado para se entrar em contato
com a pessoa. Cada pessoa pode possuir vrios filhos, que esto representados por
um conjunto de objetos do tipo Dependente.
ATENO:
Quando um atributo possui tipo simples e envolve o construtor SET ou LIST, a
indicao desse construtor inserida na seta de definio do atributo.
a) uma s subclasse
Pessoa
Cliente
b) vrias subclasses
nome
endereo
telefone
nro-cliente
ender-comercial
Pessoa
ClienteCasual
25
renda
limitecred
nome
endereo
telefone
ClienteFrequente
nro-cliente
dbito
nome
endereo
cpf
Cliente
Funcionrio
Cliente Interno
nome*
nro-carteira-trab
endereo*
salrio
dbito
nome
endereo
filhos
Pessoa
Projeto
empregs
proj
Empregado
26
class nome_da_classe
inherits nome_superclasse1, . . ., nome_superclassej
properties
nome_atrib1: tipo;
nome_atrib2: tipo;
...
nome_atribj: tipo;
operations
nome_mtodo(parmetros); ... ;
end nome_da_classe
A definio do tipo segue a seguinte regra de sintaxe:
tipo :: = tipo-bsico / nome-classe /tipos_inversos
tuple (nome-atributo: tipo [, nome-atributo:tipo] ...) /
set(tipo) /
list(tipo)
tipo-bsico :: = Integer / Real / String / Boolean / ...
nome-classe : nome de uma classe existente (um identificador)
nome-atributo : identificador
tipos_inversos: nome_classe_inversa inverse is nome_classe_inversa. atrib_inverso/
set(nome_classe_inversa) inverse is nome_classe_inversa. atrib_inverso/
list(nome_classe_inversa) inverse is nome_classe_inversa. atrib_inverso/
Por conveno, nos esquemas conceitual e lgico, os nomes dos atributos so escritos
com letras minsculas e os nomes das classes iniciam com letra maiscula.
Exemplo : O esquema da figura 3.1 expresso como:
class Pessoa
properties
nome : String;
endereo: tuple ( rua: tuple ( nome_rua: String, nmero: Integer),
bairro:String);
telefone: list (Integer);
filhos: set (Dependente);
end Pessoa
class Dependente
properties
nome: String;
sexo: String;
data_nasc: Date;
27
end Dependente
A especificao das classes da figura 3.5 dada a seguir:
class Projeto
properties
empregs: set(Empregado) inverse is Empregado.proj;
end Projeto;
class Empregado
properties
proj: Projeto inverse is Projeto.empregs;
end Empregado;
28
Para cada projeto h vrios documentos produzidos, que podem ser artigos
publicados em jornais ou conferncias ( cujos autores so pesquisadores que
atuam no projeto), ou relatrios tcnicos internos do projeto.
Analisar_documento,
que
recupera
documentos
de
uma
determinada
classificao.
-
A figura 3.6 mostra o esquema conceitual do banco de dados o.o. desse exemplo,
usando a notao dada. Para permitir uma comparao com a UML, uma verso desse
esquema, usando sua notao, tambm fornecida na figura 3.10.
29
nome_ proj
objetivo
documento
plano_trabalho
sub_projeto
Projeto
tpicos
incio_validade
fim_validade
evoluo
Tarefa
calcular_esforo()
Documento
analisar_doc(classif:String)
Relatrio_
Tcnico
data_incio
data_fim
descrio_tarefa
coordenador
anos_homem
participante
precede
Artigo
Pesquisador
calcular_bonus()
Grupo
associar_membro()
Fig.3.6 Banco de Dados para Gerenciamento de Projetos
30
cdigo_doc
nome
classificao
autor
tipo_publ
local_publ
data_publ
nome
especializao
salrio
bnus_produo
nome_grupo
membro
coordenador
nome
nroE
sexo
Empregado
sobrenome
endereo
salrio
data nasc (1,1)
nroD
(0,1)
(4,n)
Trabalha
data-incio
nro-empregados
nome
localizao (1,n)
Departamento
(1,1)
(0,n)
Gerncia
(0,n)
Supervisiona
(0,1)
supervisionado
(1,n)
horas
Controla
Atua
Supervisiona
(1,n)
(0,n)
(1,1)
Projeto
Possui
(1,1)
Dependente
32
Departamento
Empregado
4..*
nroE
nome
prim_nome
sobrenome
sexo: { M,F}
endereo
salrio
data_nasc: Date
Trabalha
1..1
1..1
nroD
nome
0..1
Adiciona-empr
Nro-empregados
Muda-gerente
...
Gerncia
0..*
1..1
Data_Inicio
1..*
1..*
Localizao
controla
Nome
idade
muda-depto
...
Nome Dependente
Atua
supervisionado
*
Horas
0..1
supervisiona
1..*
Projeto
Nome
Nro
1..1
0..*
Adiciona_empr
Adiciona_projeto
...
Dependente
Sexo: {M,F}
Data nasc: Date
Grau-parentesco
...
Figura 3.8 Diagrama de classes UML BD Companhia
33
Cliente
Empregado
tipo cliente
porcent-desconto
Salrio
Pessoa fisca
Pessoa Juridca
CPF
CGC
34
prim_nome
nome
nroE
sobrenome
sexo endereo salrio
data_nasc
Empregado
depto-trab
ger
idade
muda-depto
...
supervisor
depends
emprs
gerente
data-incio
atua
...
proj
nroD
Adiciona-empr
Nro-empregados
Muda-gerente
...
nome
projs
horas
Dependente
Departamento
emps
Projeto
adiciona-empr
adiciona-proj
nome nro localizao
grau_parentesco
nome sexo data_nas
Figura 3.10 Esquema de Objetos - BD companhia
35
+compe
0..1
gera
Projeto
nome_proj : string
objetivo : string
0..*
+_composto
0..*
Relatrio_Tcnico
tpicos : string
incio_validade : date
fim_validade : date
1..*
0..*
Tarefa
data_inicio : date
data_fim : date
descrio_tarefa : string
anos_homem : float
0..*
+precede
analisar_documento()
1
possui
+_precedida
Documento
codigo_doc : int
nome : string
classificao : string
Artigo
tipo_publ : string
local_publ : string
data : date
0..*
escreve
0..*
calcular_esforo()
1..*
1..*
coordena
participa
1
1
1..*
Grupo
membro
1..*
nome_grupo : string
associar_membro()
Pesquisador
nome : string
especializao : string
salrio : float
bnus_produo : float
1
0..1
calcular_bnus()
coordena
Legenda
Class
Multiplicity
ClassName
attributes
operations()
Agregation
zero
one
0..1
zero or one
0..*
zero or more
1..*
one or more
n
Association
36
3.8. Exerccios
1. Mapeie o esquema da figura 3.6 para a linguagem de especificao de objetos dada
na seo 3.5.
37
38
4. Manipulando Objetos
A manipulao de objetos feita atravs de uma linguagem de consulta a
objetos. Uma linguagem de consulta oferece uma forma de recuperar informaes do
banco de dados de uma maneira declarativa e formulada em alto nvel. Muitos
Sistemas de Gerenciamento de Banco de Dados Orientados a Objetos utilizam uma
extenso da linguagem de consulta SQL (Structured Query Language), uma das mais
utilizadas para SGBDs relacionais, incorporando nesta mecanismos para manipulao
da estrutura complexa dos objetos.
A formulao de consultas podem ser feitas interativamente para recuperar
objetos do banco de dados ou podem ser embutidas em uma linguagem de
programao, na definio de mtodos.
4.1. Caractersticas de Linguagens de Consulta OO (LCOO)
4.1.1. Hierarquias de Agregao
No modelo relacional, para consultar informaes envolvendo mais do que uma
tabela, usa-se a operao de juno sobre seus atributos chaves (primrias / estrangeiras).
Como exemplo, suponha as tabelas abaixo e, a seguir, uma consulta sobre essas
tabelas:
Projeto (codproj, nome_proj, objetivo, ...)
Tarefa (codtarefa, data-incio, data-fim, ...,codproj, codpesq)
Pesquisador(codpesq, nome, especializao,salrio)
Encontre todos os nomes de projetos que tm pelo menos uma tarefa possuindo, como
seu coordenador, um pesquisador especializado em banco de dados.
Essa consulta pode ser expressa em SQL como dado a seguir, aonde se nota a
utilizao de dois predicados de juno :
SELECT DISTINCT Projeto.nome_proj
FROM Projeto, Tarefa, Pesquisador
WHERE Projeto.codproj = Tarefa.codproj and
Tarefa.codpesq = Pesquisador.codpesq and
Pesquisador.especializao = BD
39
atrib_c1
C2
atrib_c2
C3
atrib_c3
Referncias Multivaloradas
Considere a figura 4.2 e a seguinte consulta:
Selecionar os valores do atrib_c2 de um objeto x pertencente classe C1, que
satisfaz uma certa condio.
Como existe uma referncia multivalorada de C1 para C2, necessrio percorrer
cada elemento do atributo atrib_c1 para recuperar o valor correspondente de
atrib_c2 desse elemento.
C1
atrib_c1
C2
atrib_c2
42
Projeto
Busca_Proj
Cadastra_Projeto
cod_proj
objetivo
documento
coordenador
nome_proj
Documento
Mostra
cdigo_doc
nome
classificao
Mostra_Documentos
Elimina_Proj
tpicos
incio_validade
fim_validade
Relatrio_
Tcnico
Cadastra_RT
Mostra
Artigo
aut_princ
tipo_publ
local_publ
data_publ
Cadastra_Art
Mostra
Pesquisador
Busca_Pesq
Cadastra_Pesq
nome
especializao
salrio
bnus_produo
43
44
rt.fim_validade=fim_val;
Insira rt em Relatorio_Tecnico;
// Inserir o relatorio tecnico nos documentos do projeto dado
proj=Busca_proj(cod_proj);
Se projnulo ento
Insira rt em proj.documento;
}
4.4. Exerccios
1. Faa o mtodo Cadastra_Artigo.
Formule as consultas a seguir, com base no esquema da figura 3.6.
2. Recupere os documentos do projeto de nome Projeto A.
3. Supondo que os autores sejam modelados como uma lista de pesquisadores,
representando a ordem em que eles aparecem no artigo, formule a consulta:
a) Recupere o segundo autor do artigo cujo cdigo 520.
b) Recupere o nome do primeiro autor do artigo cujo cdigo 520
4.Recupere o nome dos coordenadores dos grupos que participam das tarefas que
iniciaram em 10/03/99.
5. Recupere o nome do coordenador de cada tarefa do projeto de nome Projeto A.
6. Recupere o nome do coordenador do grupo que participa de cada tarefa do projeto
de nome "Projeto A", bem como a descrio da respectiva tarefa.
Com base no esquema do Cadastro Imobilirio, expresse as consultas a seguir.
7. Recupere a localizao de cada imvel.
8. Recupere o bairro aonde est localizado o imvel de cdigo de inscrio 1000.
46
47
Gerenciamento de Verso:
O acesso a estados anteriores ou alternados de objetos uma parte inerente de
muitas aplicaes. Como exemplos de aplicaes que exigem acesso evoluo
de estados de objetos esto as aplicaes de projeto de engenharia por ex: desenho
auxiliado por computador e fabricao auxiliada por computador.
Nessas aplicaes, o mesmo objeto passa por muitas alteraes ou transies de
estado e desejvel acessar ou investigar estados prvios, ou verses, do objeto.
Por exemplo, considere os captulos dessa apostila. Cada captulo sofreu uma
evoluo. Para alguns captulos foram mantidas vrias verses, que diferiam em
organizao e contedo. Houve captulo em que a verso final foi uma integrao
49
O1:
50
verses alternativas
v3
v5
v6
V4
v7: verso final
Figura 5.1.- Conjunto de verses de O1
Gerenciamento de Transaes
Tradicionalmente, uma transao uma seqncia de aes que l ou grava
objetos persistentes e satisfaz as propriedades ACID (atomicidade, consistncia,
isolamento e durabilidade). Resumindo, atomicidade significa que a transao ou
executada inteiramente ou no executada. Consistncia significa que as
transaes mapeiam um banco de dados persistente de um estado coerente para
outro. Isolamento significa que as transaes no lem resultados intermedirios
de outras transaes no-efetivas. Durabilidade significa que, uma vez que uma
transao efetivada, fica garantido que seus efeitos (i.., atualizaes) sero
suportados apesar das falhas.
Enquanto as transaes em aplicaes mais tradicionais so relativamente curtas,
recuperando e/ou atualizando poucos registros do banco de dados, as transaes
de aplicaes mais avanadas podem demorar horas e at mesmo dias.
Considere, por exemplo, a elaborao de um documento eletrnico em um
ambiente de escritrio. Suponha quase trata de um documento que descreve o
plano diretor de 5 anos do departamento. Em certo sentido, a transao que cria
esse documento e que pode envolver muitos funcionrios se completa quando o
documento concludo.
O documento passa por muitas fases intermedirias e sua preparao pode levar
dias. Esse tipo de transao apresenta alguns desafios e problemas relacionados s
estratgias de gerenciamento de transao mais tradicionais.
51
53
54
55
6.1. SQL3
ANSI X3H2 um comit tcnico do American National Standards Institute
(ANSI), formado em 1978, para a definio de uma linguagem para bancos de dados
CODASYL ou redes. Em 1982, o modelo relacional estava adquirindo importncia, o
que levou o comit X3H2 a ser solicitado para desenvolver o padro SQL. A verso
corrente da SQL a SQL-92, que a culminao de trabalhos sobre vrias verses
anteriores. Ela baseada na SQL-89, que por sua vez foi baseada na SQL-86.
56
6.2. ODMG-93
ODMG (Object Database Management Group) um consrcio de vendedores
e grupos de interesse que trabalham na criao de padres para SGBDOOs. Ele foi
concebido em 1991 e a verso 1.0 da especificao do padro ODMG-93 (tambm
chamado ODMG 1.0) foi publicada em agosto de1993. Em 1995 o grupo terminou a
verso 1.2 do padro ODMG-93 e posteriormente foi revisado e chamado ODMG 2.0.
A linguagem de consulta a Objeto (OQL) do ODMG-93 baseada na poro
de consulta da SQL-92, porm com algumas variaes, pois a SQL-92 assume um
modelo relacional e a OQL assume um modelo de objeto.
A meta do ODMG tornar disponvel um conjunto de padres permitindo que
um cliente de SGBDOO escreva aplicaes portveis, isto , aplicaes que possam
ser executadas por diferentes SGBDOOs. Assim, os esquemas de dados, ligaes com
linguagens de programao; manipulao de dados e linguagens de consulta devem
ser portveis.
Segundo Cattell, em (Cattell 1996), as companhias que so membro do
ODMG (Cattell um dos membros do grupo), representando quase toda a indstria de
SGBDOO, esto suportando esse padro. A meta no a produo de SGBDOOs
57
correntemente disponveis.
O grupo define um SGBDOO como sendo um SGBD que integra capacidades
de banco de dados com capacidades de linguagem de programao orientada a
objetos. Um SGBDOO faz com que objetos do banco de dados apresentem-se como
objetos de linguagem de programao, em uma ou mais linguagens existentes. Os
SGBDOOs tm sido integrados com C++, C, Smalltalk e LISP.
Os principais componentes do OGMG-93 so:
-
um Modelo de Objetos
Ligao com a linguagem C++. Isso inclui uma verso da ODL que usa a sintaxe
de C++, um mecanismo para invocar OQL e procedimentos para operaes sobre
banco de dados e transaes.
Ligao com a linguagem Smalltalk e Java, com mesmos suportes acima para
C++.
Vrias das idias embutidas no modelo de objetos ODMG so baseadas em
7. Bibliografia
58
Barry, D.K. The Object Database Handbook. John Wiley & Sons, Inc. 1996.
Bertino, E.; Martino, L. (1993). Object-Oriented Database Systems: Concepts and
Architectures. Addison-Wesley, 1993.
Blaha, M.; Premerli, W. Object-Oriented Modeling and Design for Database
Applications. Prentice-Hall, 1998.
Cattel, R.G.G. Object-Oriented and Extended Relational Database Systems.
Addison-Wesley, 1994.
Cattell, R.G.G.; Barry, D.K. The Object Database Standard: ODMG-3.0. Morgan
Kaufmann Publishers, inc., 2000.
Elmasri, R.A.; Navathe, S.B. . Fundamentals of Database Systems. AddisonWesley, 2000 (third edition).
Hughes, J.G. Object-Oriented Databases. Prentice-Hall, 1991.
Khoshafian, S. Banco de Dados Orientado a Objeto. Livraria e Editora Infobook
S.A., 1994.
Vieira, M.T.P. (1991) Um modelo de Objetos para um Sistema de Gerncia de
Objetos em Ambiente de Desenvolvimento de Sistemas Interativos. Tese de
Doutorado, Departamento de Informtica, PUC-RJ, 1991.
Zand, M.; Collins, V.; Caviness, D. A Survey of Current Object-Oriented
Databases. In: DATA BASE Advances in Information Systems, Vol.26, No. 1,
February, 1995.
59