3.6. Transformacion de interrelaciones

3.6. Transformacion de interrelaciones Dataprix 30 Septiembre, 2009 - 14:43

Las transformaciones de las interrelaciones recursivas son similares a las que hemos visto para el resto de las interrelaciones.

De este modo, si una interrelación recursiva tiene conectividad 1:1 o 1:N, da lugar a una clave foránea, y si tiene conectividad M:N o es n-aria, origina una nueva relación.

Mostraremos la transformación de algunos ejemplos concretos de interrelaciones recursivas para ilustrar los detalles de la afirmación anterior.

Ejemplo de transformación de una interrelación recursiva binaria 1:1

                                                        

La interrelación de la figura anterior es recursiva, binaria y tiene conectividad 1:1. Las interrelaciones 1:1 originan una clave foránea que se pone en la relación correspondiente a una de las entidades interrelacionadas. En nuestro ejemplo, sólo hay una entidad interrelacionada, la entidad persona. Entonces, la clave foránea deberá estar en la relación PERSONA. Esta clave foránea deberá referenciar a la misma relación para que refleje una interrelación entre una ocurrencia de persona y otra ocurrencia de persona. Así, obtendremos:

PERSONA (código-per, ..., código-conyuge)
  donde {código-conyuge} referencia PERSONA
  y código-conyuge admite valores nulos

La clave foránea {código-conyuge} referencia la relación PERSONA a la que pertenece.

Conviene tener en cuenta que, en casos como éste, los atributos de la clave foránea no pueden tener los mismos nombres que los atributos de la clave primaria que referencian porque, según la teoría relacional, una relación no puede tener nombres de atributos repetidos.

Ejemplo de transformación de una interrelación recursiva M:N

Veamos a continuación un ejemplo en el que interviene una interrelación recursiva y con conectividad M:N.
               
Las interrelaciones M:N se traducen en nuevas relaciones que tienen como clave primaria las claves de las entidades interrelacionadas.

En nuestro ejemplo, la interrelación vincula ocurrencias de persona con otras ocurrencias de persona. En este caso, la clave primaria de la nueva relación estará formada por la clave de la entidad persona dos veces. Convendrá dar nombres diferentes a todos los atributos de la nueva relación. De este modo, la traducción del ejemplo anterior será:

PERSONA (código-per, ...)
AMISTAD (código-per, código-per-amiga)
  donde {código-per} referencia PERSONA
  y {código-per-amiga} referencia PERSONA

Ejemplo de transformación de una interrelación recursiva n-aria N:1:1

Finalmente, analizaremos un ejemplo en el que la interrelación recursiva es n-aria:

                               

La anterior interrelación boda es recursiva, ternaria y tiene conectividad N:1:1. Las interrelaciones N:1:1 originan siempre una nueva relación que contiene, además de los atributos  de la interrelación, todos los  atributos que  forman la clave  primaria de las  tres entidades interrelacionadas.

En nuestro ejemplo, la interrelación asocia ocurrencias de persona con otras ocurrencias de persona y con ocurrencias de fecha. Entonces, la clave de persona tendrá que figurar dos veces en la nueva relación, y la clave de fecha, solo una.

La clave primaria de la relación que se obtiene para interrelaciones N:1:1 está formada por la clave de la entidad del lado N y por la clave de una de las entidades de los lados 1.

En nuestro ejemplo, en los dos lados 1 de la interrelación tenemos la misma entidad: persona. La clave primaria estará formada por la clave de la entidad fecha y por la clave de la entidad persona.

Según todo esto, la transformación será la siguiente:

PERSONA(código-per, ...)
FECHA(fecha-bod, ...)
BODA (fecha-bod, código-per, código-conyuge)
  donde {fecha-bod} referencia FECHA,
  {código-per} referencia PERSONA
  y {código-conyuge} referencia PERSONA