Mapeo de clases a bases de datos relacionales: estrategias y ejemplos

InformáticaActualizado el 3,41 KB

Resumen

El documento explica cómo transformar un modelo orientado a objetos en un modelo relacional. Describe el mapeo de clases a tablas, de asociaciones (uno a uno, uno a muchos y muchos a muchos) y tres estrategias para representar la herencia. También analiza el problema de impedancia entre objetos y bases de datos relacionales.

Puntos clave

  • Cada clase se asigna a una tabla, cada atributo primitivo a una columna y cada instancia a una fila con clave primaria.
  • La integridad relacional exige un atributo identificador único y no nulo en cada tabla.
  • En una relación uno a muchos, la clave foránea se coloca en la tabla del lado de muchos.
  • En una relación muchos a muchos se crea una tabla intermedia con las claves foráneas de ambas clases.
  • La herencia puede simularse con tablas por clase, eliminar la superclase o eliminar las subclases.
  • El problema de impedancia se debe a que las BD relacionales no almacenan comportamiento ni tipos de datos complejos definidos por el usuario.

Ponte a prueba

Objetos en las tablas:

  • Asignar una tabla para cada clase.
  • Cada atributo (primitivo) se transformará en una columna en la tabla. Si el atributo es complejo, se agrega una tabla adicional para el atributo o se divide el atributo en varias columnas.
  • La columna de la clave primaria será el identificador único de la instancia.
  • Cada instancia de la clase será representada ahora por una fila en la tabla.
  • Integridad relacional: toda tabla debe tener un atributo identificatorio. Ese atributo debe ser único y no nulo.
  • Integridad referencial: la llave foránea debe apuntar a una PK de la otra tabla. Debe existir (vínculo lógico).

Mapeo de relaciones a un modelo relacional

  • Asociación - composición – agregación: se mapean todas de la misma forma, ya que la agregación y composición son casos específicos de asociaciones.
  • Uno a uno: una clase pasará a formar atributo de la otra.
  • Uno o cero a muchos y viceversa: se crea una tabla por cada clase persistente de la relación, cada una con clave primaria, y colocando una clave foránea en la tabla del lado de muchos. En el caso de uno/cero a muchos, el puntero cambia de tabla, mientras que de muchos a uno o cero queda como está.
  • Muchos a muchos: Además de una tabla por cada clase persistente, se crea una tabla “asociativa” denominada intermedia, en donde están las claves foráneas. Su clave primaria puede formarse con las dos claves foráneas o crearse una nueva clave única.

Herencia (Generalización)

Hay 3 formas de mapear herencia:

  • Simular la herencia (jerarquía supertipo-subtipo): se crean tablas para todas las clases, cada una con su clave primaria, y se coloca una clave foránea en las tablas de las subclases que referencian a la tabla de la superclase. Es la forma que mejor usa el espacio disponible. Menos redundancia (recomendable para tablas grandes o que tienen un gran crecimiento).
  • Eliminar al padre: se colocan los atributos comunes en cada una de las tablas hijas, genera tablas más grandes pero evita los joins.
  • Eliminar a los hijos: se colocan los atributos de las subclases en una sola tabla junto con modificadores para saber el tipo del registro. No es cohesivo (no se recomienda).

El Problema de Impedancia en el Mapeo Objeto-Relacional

Los objetos persistentes son aquellos que necesitan almacenarse en un medio persistente. Por lo general, son las clases que tienen que ver con el dominio (clases entidad). El problema surge debido a que los lenguajes de programación utilizan objetos como estructuras de datos y, en una base de datos relacional, la información se almacena en tablas, los tipos de datos usados son mayormente primitivos.

El problema de impedancia consiste en dos cuestiones:

  • La base de datos relacional no permite el almacenamiento del comportamiento de los objetos, solo sus datos pueden guardarse, es decir, su estado.
  • La base de datos relacional no soporta tipos de datos complejos definidos por el usuario, solo los primitivos.

Además, se crea un fuerte acoplamiento entre los lenguajes de programación y las BD. Es difícil almacenar las relaciones entre las clases, principalmente la herencia. Se necesita transformar la estructura de la información de un objeto a una estructura orientada a tablas. SIGUE PREGUNTA 99.

Descargar

PDF Word HTML

Preguntas frecuentes

¿Qué es el problema de impedancia en el mapeo objeto-relacional?

Es la diferencia entre la estructura de objetos usada por los lenguajes de programación y la de tablas de una base de datos relacional. Las BD relacionales solo almacenan el estado de los objetos y tipos de datos primitivos, no su comportamiento ni tipos complejos.

¿Cómo se mapea una relación muchos a muchos en una base de datos relacional?

Se crea una tabla por cada clase persistente y una tabla asociativa intermedia que contiene las claves foráneas. Su clave primaria puede formarse con las dos claves foráneas o con una nueva clave única.

Ponte a prueba

Tarjetas de repaso

Pulsa una tarjeta para ver la respuesta.

Test

1. ¿Qué se asigna a cada clase en el mapeo a tablas?
2. ¿Dónde se coloca la clave foránea en una relación uno a muchos?
3. ¿Qué estrategia de herencia genera tablas más grandes pero evita los joins?
4. ¿Qué estrategia de herencia se considera menos cohesiva y no se recomienda?
5. ¿Qué requisito cumple el atributo identificatorio de una tabla?

Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.