Herança no PostgreSQL

Artigo publicado Revista SQL Magazine 57.

Esse artigo faz parte da revista SQL Magazine edição 57. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse editorial em PDF

PostgreSQL

Herança no PostgreSQL

Conceitos, Exemplos e Limitações

 

No âmbito das linguagens de programação OO, a herança é uma técnica bastante utilizada, principalmente se falarmos de linguagens como o Java ou C++ que são fortemente orientadas a objetos.

Saindo do mundo das linguagens e entrando no mundo dos bancos de dados, nos deparamos com uma realidade totalmente diferente, onde estes conceitos são diluídos e utilizadas idéias similares, como a especialização, que tem um pouco de semelhança com a herança de objetos.

Mas aí podemos pensar “Como era bom trabalhar com objetos” ou “Será que o banco que trabalho tem suporte à OO?”. Alguns bancos objeto-relacionais comerciais, como o Oracle, e de código aberto, como o PostgreSQL, possuem módulos nativos para se trabalhar com orientação a objetos.

Este artigo apresentará como o PostgreSQL implementa a herança de tabelas, um dos conceitos da orientação à objetos. Para tanto, serão discutidos os conceitos gerais de herança de objetos e como estes conceitos se enquadram dentro do PostgreSQL. Serão mostrados também pequenos exemplos de implementação para demonstrar o uso da herança e mostradas algumas dicas e limitações no uso da mesma. A versão do PostgreSQL utilizada neste artigo foi a 8.2.6.

 

Conceitos gerais sobre herança

A herança é muito utilizada nas linguagens de programação orientadas a objetos. É um conceito que permite alto grau de reutilização de código, quando bem utilizado.

Com esta técnica, as características comuns a diversos objetos podem ser concentradas em um objeto pai, criado por uma superclasse. A partir desse objeto, outros podem ser derivados, onde a classe que cria os mesmos, ou subclasse, herda as características da superclasse. Cada um desses objetos derivados apresenta as características (estrutura e métodos) do objeto pai e acrescenta a eles o que for particular ou específico de cada um. A idéia é fornecer um mecanismo simples, mas eficiente, para que se definam novos objetos a partir de um já criado.

A Tabela 1 mostra alguns exemplos onde se pode utilizar o mecanismo de herança. Mas, independentemente do exemplo dado, é preciso ter em mente que o objeto pai tem características gerais e o objeto derivado tem características especificas.

 

Superclasse

Subclasse

Membro

Presidente, Diretor, Empregado, Associado

Empregado

Servente, Secretária

FormaGeométrica

Círculo, Quadrado, Triangulo

Tabela 1. Exemplos de herança

 

Conceitos de herança no PostgreSQL

Seguindo os conceitos da herança de objetos, o PostgreSQL implementa a herança de tabelas, que pode ser uma ferramenta útil para os administradores de dados.

A partir do padrão SQL:1999 foram definidas características de herança de tipos e tabelas que diferem em alguns aspectos das características implementadas pelo PostgreSQL, como a herança múltipla, exemplificada mais adiante.

Para ficar mais fácil o entendimento, vamos trabalhar em cima de um exemplo simples de um modelo de dados para um sistema acadêmico. Neste exemplo, temos turmas com alunos matriculados que podem trabalhar como monitores, ou seja, tiram dúvidas e ajudam outros alunos da turma. Suponhamos que quiséssemos saber quais os alunos são monitores de cada turma. Poderíamos resolver esta pergunta de três maneiras clássicas. Criando duas tabelas, uma específica para alunos e outra para monitores, como na Figura 1, ou ter apenas a tabela de alunos com um campo dizendo se é ou não monitor (utilizando o campo in_monitor), como na Figura 2, ou especializando a tabela de alunos, como na Figura 3.

 

" [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados