Esse artigo faz parte da revista Engenharia de Software 19 edição especial. Clique aqui para ler todos os artigos desta edição



Projeto

Usando banco de dados objeto-relacionais

Transição das classes para um modelo de dados objeto-relacional

De que trata o artigo:

Este artigo tem por objetivo apresentar um SGBD-OR (sistema gerenciador de banco de dados objeto-relacional), comparando-o com o modelo vigente em mercado, o SGBD-R (sistema gerenciador de banco de dados relacional). Além disso, será demonstrado como é feita a transição de um modelo de classes para um modelo objeto-relacional, usando como exemplos de implementação, o banco de dados Oracle.

Para que serve:

Fornecer aos desenvolvedores ou estudantes da área de sistemas exemplos práticos de como transpor um modelo de classes para o projeto de banco por meio de um modelo objeto-relacional implementado em um SGBDOR.

Em que situação o tema é útil:

Para entender como a ligação entre os modelos de classes e o modelo de dados pode ser mais transparente quando esse banco pertence ao mesmo paradigma; além de compreender como o Oracle trabalha como um banco de objetos.

 

Em tempos remotos, pensar em forma de armazenamento era pensar em dados organizados em coleções logicamente relacionadas compondo arquivos. Contudo, mesmo com a separação física de programas e dados, toda a gerência destes dados ainda ficava embutida no código-fonte dos programas.

A evolução ocorreu na década de 60 com o surgimento dos sistemas de bancos de dados, reunindo num só lugar todas as funções necessárias à localização e manipulação dos dados, tornando-se uma camada lógica entre a aplicação e os dados propriamente ditos.

Os bancos de dados trabalham com uma arquitetura que separa a parte física das aplicações por meio de três esquemas:

·         Esquema interno: descreve a estrutura física de armazenamento do banco de dados, sua organização de arquivos e os seus métodos de acesso;

·         Esquema conceitual: descreve a estrutura do banco de dados sob o ponto de vista do usuário, escondendo os detalhes de armazenamento e concentrando-se na descrição de entidades, atributos, relacionamentos, operações do usuário e restrições sobre os dados;

·         Esquema externo (ou visões do usuário): descreve as partes do banco de dados que são do interesse de um grupo de usuários, escondendo as demais.

 

Os esquemas são apenas camadas lógicas, pois o único nível que realmente existe armazenando os dados é o nível interno. A representação dos conceitos de cada nível é feita com o uso de modelos de dados.

No esquema interno são utilizados modelos físicos de dados, que são usados para descrever a organização dos arquivos e os métodos de acesso, tal como é definido no esquema.

Nos esquemas conceitual e externo existem duas categorias de modelos: o modelo conceitual, um modelo de alto nível que traz conceitos próximos da percepção que os usuários têm dos dados; e o modelo lógico, um modelo de nível intermediário que traz conceitos que podem ser entendidos pelos usuários finais, mas que não estão muito distantes do formato como os dados são organizados no computador.

O Modelo de Entidades-Relacionamentos (ER) é o modelo conceitual mais utilizado no projeto de banco de dados.

Os modelos de dados em rede, hierárquico, relacional e OO são conhecidos como modelos lógicos.

O modelo relacional foi introduzido por E. Codd em 1970, propondo o trabalho com tabelas, baseando-se em conceitos matemáticos da Álgebra Relacional. Nos últimos anos, novas demandas surgiram a partir das aplicações não-convencionais. Contudo, os requisitos necessários para se atender a essas demandas não eram encontrados nos modelos lógicos existentes. Este problema incitou o surgimento dos modelos relacionais estendidos ou objeto-relacionais, que trazem em sua essência a incorporação de características do paradigma orientado a objetos como extensões aos sistemas relacionais.

Os modelos de dados OO apresentam conceitos de: objetos (com encapsulamento), classes (com atributos e métodos), relacionamentos (herança, associação e agregação) e identidade de objetos.

Cada objeto encapsula os atributos e os métodos.

São características da identidade de objetos, conhecida como OID (object identifier):

  são gerados pelo sistema;

  não são visíveis aos usuários;

  são independentes do endereço de armazenamento;

  não sofrem mutações;

  é desejado que seja utilizado uma única vez (mesmo após a exclusão do objeto).

O modelo relacional trouxe a realidade de SGBD-Rs (Sistemas Gerenciadores de Bancos de Dados Relacionais) robustos e eficientes, que atenderam ao mercado por várias décadas. Contudo, com o surgimento e solidificação do paradigma da orientação a objetos, as limitações dos bancos relacionais tornaram-se mais evidentes, trazendo à discussão:

— o número reduzido de tipos de dados;

— os valores dos campos não serem atômicos;

— inapropriação para armazenamento e busca de novos tipos de dados como imagens, áudio e vídeo.

 

SGBD-OOs (Sistemas Gerenciadores de Bancos de Dados orientados a objeto) e SGBD-ORs (Sistemas Gerenciadores de Bancos de Dados Objetos Relacionais)

No início da década de 90, surgiram vários SGBD-OOs (sistemas gerenciadores de bancos de dados orientados a objetos), onde o centro da atenção deixou de ser a relação com a tabela e passou a ser com a classe.

Em 1991, um grupo de fabricantes de SGBDs e empresas que trabalham com padrões criaram o grupo ODMG (Object Database Management Group), responsável por padronizar as funcionalidades dos bancos de dados orientados a objetos. Esse grupo definiu não só o modelo de dados OO, mas também os padrões ODL (Object Definition Language) e OQL (Object Query Language).

Um SGBD-OO é um sistema com as características de SGBDs, acrescidos da manipulação de objetos contemplando:

— definição de objetos complexos, com estrutura aninhada, como conjuntos ou listas de objetos, além dos tipos de dados primitivos;

— implementação de encapsulamento, determinando que todo acesso aos objetos seja por meio da aplicação de um procedimento;

— identidade de objeto, fazendo com que os objetos sejam distinguidos por um identificador único, mesmo que os valores dos atributos sejam os mesmos.

Atualmente existem poucos bancos orientados a objetos. Podemos citar: Gemstone, ObjectStore, Versant, Jasmine, Poet, Objectivity e O2.

Os SGBD-ORs (sistemas gerenciadores de bancos de dados objetos-relacionais) surgiram como uma reação dos principais fabricantes de SGBD-R aos SGBD-OOs. Nos bancos de dados objeto-relacionais, o banco relacional tem uma parte transformada, além de receber a adição de novos recursos que permitam implementações orientadas a objetos.

Um SGBD-OR é um SGBD que suporta SQL-3. Leia no Box 1 sobre a evolução do SQL.

Alguns bancos objeto-relacionais atuais: Oracle, PostgreSQL, Informix, DB2, Cachê e SQLServer.

Veja na Tabela 1 as principais diferenças entre os SGBD-OOs e os SGBD-ORs.

 

...
Quer ler esse conteúdo completo? Tenha acesso completo