Modelo relacional

Las interrelaciones son las relaciones que existen entre varias tablas del sistema (Clientes y Pedidos, por ejemplo). Existen tres formas de interrelaciones dependiendo de la cardinalidad con la que se combinan los elementos de ambas tablas.

.Interrelaciones uno a uno

Una interrelacin es de uno a uno entre la tabla A y la tabla B cuando a cada elemento de la clave de A se le asigna un nico elemento de la tabla B y para cada elemento de la clave de la tabla B contiene un nico elemento en la tabla A. Un ejemplo de interrelacin de este tipo es la formada por las tablas Datos Generales de Clientes y Datos Contables de Clientes. En esta relacin cada cliente tiene una nica direccin y una direccin en cada una de las tablas. Representamos la relacin como A 1: 1 B.

Ante la presencia de este tipo de relacin nos podemos plantear el caso de unificar todos los datos en nica tabla pues no es necesario mantener ambas tablas a la misma vez.

Este tipo de relacin se genera cuando aparecen tablas muy grandes, con gran cantidad de campos, disgregando la tabla principal en dos para evitar tener una tabla muy grande. Tambin surge cuando los diferentes grupos de usuario cumplimentan una informacin diferente para un mismo registros; en este caso se crean tantas tablas como registros, evitando as tener que acceder a informacin que el usuario del grupo actual no necesita.

.Interrelaciones uno a varios

Una interrelacin es de uno a varios entre las tablas A y B cuando una clave de la tabla A posee varios elementos relacionados en la tabla B y cuando una clave de la tabla B posee un nico elemento relacionado en la tabla A.

Estudiemos la relacin entre la tabla de clientes y la tabla de pedidos. Un cliente puede realizar varios pedidos pero un pedido pertenece a un nico cliente, por tanto se trata de una relacin uno a varios y la representamos A 1: n B.

Estas relaciones suelen surgir de aplicar la 1NF a una tabla.

.Interrelaciones varios a varios

Una interrelacin es de varios a varios entre las tablas A y B cuando una clave de la tabla A posee varios elementos relacionados en la tabla B y cuando una clave de la tabla B posee varios elementos relacionados en la tabla A.

Un caso muy caracterstico de esta interrelacin es la que surge entre las tablas de Puestos de Trabajo y Empleados de una empresa. Un Empleado puede desempear realizar varias funciones dentro de una empresa (desempear varios puestos de trabajo), y un puesto de trabajo puede estar ocupado por varios empleados a la misma vez. Esta interrelacin la representamos como A n: n B.

No se deben definir relaciones de este tipo en un sistema de bases de datos, debido a su complejidad a la hora de su mantenimiento, por este motivo se debe transformar este tipo de relacin es dos interrelaciones de tipo 1: n, empleando para ello una tabla que denominaremos puente y que estar formada por las claves de ambas tablas. Esta tabla puente debe contener una nica clave compuesta formada por los campos clave de las tablas primeras.

Empleados
Cdigo Empleado Empleado
103Juan
105Luisa
251Martn
736Ana Mara

Puestos
Cdigo Puesto Puesto
52Comercial
73Administrativo

Tabla Puente
Cdigo Empleado Cdigo Puesto
10352
10373
10573
25152
73652
73673

Ahora existe una relacin 1: n entre Empleados y Tabla Puente y otra relacin 1: n entre Puestos y Tabla Puente ya que un empleado posee varios cdigos de empleado en la tabla puente pero cada elemento de la tabla puente pertenece a un nico empleado.

Por otro la un puesto de trabajo posee varios elementos relacionados en la tabla puente, pero cada elemento de la tabla puente est relacionado con un nico elemento de la tabla puestos.

.Problemas con las interrelaciones

A la hora de establecer las interrelaciones existentes en un sistema de bases de datos nos podemos encontrar dos problemas:

  1. Interrelaciones recursivas: un elemento se relaciona consigo mismo directamente.
  2. Interrelaciones circulares o cclicas: A se relaciona con B, B se relaciona con C y C se relaciona con A.

Ambos casos pueden suponer un grabe problema si definimos una relacin con integridad referencial y decimos eliminar en cascada (al eliminar una clave de la tabla A se eliminan los elementos relacionados en la tabla B). Supongamos la relacin recursiva existen en la relacin Empleado y Supervisor (ambos son empleados de la empresa). Est claro que un empleado est supervisado por otro empleado. Veamos la forma de solucionarlo:

Empleados
CdigoNombreSupervisor
102JuanNO
105LuisSI
821MaraNO
956MartnSI

Para solucionar la relacin debemos crear una tabla formada por dos campos. Ambos campos deben ser el cdigo del empleado pero como no podemos tener dos campos con el mismo nombre a uno de ellos le llamaremos cdigo supervisor.

Tabla Puente
Cdigo EmpleadoCdigo Supervisor
102105
105956
821105
956105

Para terminar de resolver la interrelacin recursiva basta con definir dos interrelaciones entre la tabla empleados y la tabla puente de tipo 1: n. La primera relacin se crea utilizando las claves Empleados[Cdigo] y Tabla Puente[Cdigo Empleado]. La segunda entre Empleados[Cdigo] y Tabla Puente [Cdigo Supervisor].

Las interrelaciones cclicas o circulares no son muy frecuentes y no existe una metodologa estndar para su eliminacin, normalmente son debidas a errores de diseo en la base de datos, principalmente en el diseo conceptual del sistema de datos. Por tanto si llegamos a este punto hay que volver a replantearse todo el diseo de la base de datos.

.Atributos de las interrelaciones

En la mayora de las interrelaciones definidas ser conveniente exigir integridad relacional entre las claves. Exigiendo la integridad referencial se consigue que en una relacin de tipo 1: n o de tipo 1: 1, no se puede aadir ningn valor en la tabla destino si no existe en la tabla origen. Dicho con un ejemplo: en la relacin Clientes y Pedidos la tabla Pedidos contiene un campo que se corresponde con el cdigo del Cliente, si se exige la integridad referencia no se podr escribir un cdigo de cliente en la tabla Pedidos que no exista en la tabla Clientes; de no exigir la integridad referencial se podrn crear pedidos con cdigos de clientes que no existen, generando incongruencia de datos en la base de datos.

Definida la integridad referencial (siempre necesaria) podemos exigir la actualizacin en cascada (siempre necesaria); esta actualizacin implica que si cambiamos el cdigo a un cliente, debemos actualizar dicho cdigo en la tabla de pedidos, de no ser as, al cambiar el cdigo a un cliente, perderemos los pedidos que tena realizados.

Para concluir debemos hablar de la eliminacin en cascada (NO siempre necesaria), la eliminacin en cascada consiste en eliminar todos los datos dependientes de una clave. En nuestro ejemplo implica que al borrar un cliente hay que eliminar todos los pendidos que ha realizado. En muchas ocasiones no interesa realizar esta operacin de eliminacin en cascada por motivos diversos. Si en el caso de clientes y pedidos no se exige eliminacin en cascada no se podr borrar ningn cliente en tanto en cuanto tenga realizado algn pedido (de lo contrario tendramos incongruencia de datos).

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
ARTÍCULO ANTERIOR

¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.