Desajuste de impedancia relacional de objeto


El desajuste de impedancia relacional-objeto es un conjunto de dificultades conceptuales y técnicas que a menudo se encuentran cuando un sistema de administración de bases de datos relacionales (RDBMS) está siendo servido por un programa de aplicación (o múltiples programas de aplicación) escrito en un lenguaje o estilo de programación orientado a objetos. , particularmente porque los objetos o las definiciones de clases deben asignarse a tablas de base de datos definidas por un esquema relacional.

El término desajuste de impedancia relacional de objeto se deriva del término emparejamiento de impedancia de ingeniería eléctrica .

Los objetos (instancias) se referencian entre sí y, por lo tanto, forman un gráfico en el sentido matemático (una red que incluye bucles y ciclos). Los esquemas relacionales son, por el contrario, tabulares y se basan en el álgebra relacional , que define tuplas heterogéneas vinculadas (agrupaciones de campos de datos en una "fila" con diferentes tipos para cada campo).

Los programas orientados a objetos están diseñados con técnicas que dan como resultado objetos encapsulados cuya representación interna se puede ocultar. En un marco orientado a objetos, se espera que las propiedades subyacentes de un objeto dado no estén expuestas a ninguna interfaz fuera de la implementada junto con el objeto. Sin embargo, la mayoría de los enfoques de mapeo relacional de objetos exponen el contenido subyacente de un objeto para interactuar con una interfaz que la implementación del objeto no puede especificar. Por lo tanto, este mapeo relacional de objetos viola la encapsulación del objeto, ya que muchos mapeadores relacionales de objetos generan automáticamente campos públicos correspondientes a las columnas de la base de datos. En su lugar, algunos marcos utilizan técnicas de metaprogramación, evitando así violar la encapsulación.

En el pensamiento relacional, el acceso "privado" versus el "público" es relativo a la necesidad. En el modelo orientado a objetos (OO) es una característica absoluta del estado de los datos. Los modelos relacional y OO a menudo tienen conflictos sobre la relatividad versus el absolutismo de clasificaciones y características.

Bajo un paradigma orientado a objetos, los objetos tienen interfaces que en conjunto proporcionan el único acceso a las partes internas de ese objeto. El modelo relacional, por otro lado, utiliza variables de relación derivadas ( vistas ) para proporcionar diferentes perspectivas y restricciones para asegurar la integridad. De manera similar, los conceptos básicos de programación orientada a objetos para clases de objetos, herencia y polimorfismo , no son compatibles con los sistemas de bases de datos relacionales.