El argumento a favor de las bases de datos objeto-relacionales sostiene que permite realizar una migración gradual de sistemas relacionales a los orientados a objetos y, en algunas circunstancias, coexistir ambos tipos de aplicaciones durante algún tiempo.
El problema de este enfoque es que no es fácil lograr la coexistencia de dos modelos de datos diferentes como son la orientación a objetos y el modelo relacional. Es necesario equilibrar de alguna manera los conceptos de uno y otro modelo sin que entren en conflicto.
Uno de los conceptos fundamentales en la orientación a objetos es el concepto de clase. Existen dos enfoques para asociar el concepto de clase con el modelo relacional:
1.er enfoque: las clases definen tipos de tablas
2.º enfoque: las clases definen tipos de columnas
Dado que en el modelo relacional las columnas están definidas por tipos de datos, lo más natural es hacer corresponder las columnas con las clases.
1.er enfoque | 2.o enfoque | |
Los objetos son | valores | tuplas |
Las clases son | dominios | tablas |
Los mecanismos de extensión |
No es habitual que el usuario utilice los mecanismos de extensión pues se consideran mecanismos avanzados. |
PostgreSQL implementa los objetos como tuplas y las clases como tablas. Aunque también es posible definir nuevos tipos de datos mediante los mecanismos de extensión.
Dado que las tablas son clases, pueden definirse como herencia de otras. Las tablas derivadas son polimorfas y heredan todos los atributos (columnas) de la tabla padre (incluida su clave primaria). Si no se manejan con precaución, las tablas polimorfas pueden conducir a errores de integridad al duplicar claves primarias.
Veremos estos conceptos más en detalle en el subapartado 4.2 de esta unidad didáctica. |
PostgreSQL soporta algunas extensiones del lenguaje SQL para crear y gestionar este tipo de tablas.