Mapeo de Clases a Bases de Datos Relacionales: Estrategias y Ejemplos
Clasificado en Informática
Escrito el en español con un tamaño de 3,41 KB
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.