Tipos de relaciones

Lo importante de una relación es cómo contribuye cada entidad implicada en la relación. Hay varios tipos de relaciones y para identificar qué tipo corresponde a cada relación, hay que pensar en los datos que albergarán esas entidades y pensar cuántos habrá de cada entidad en la relación.

Una entidad puede relacionarse consigo misma, no es necesario que sean dos o más entidades diferentes. Por ejemplo, una tabla de empleados puede tener una relación consigo misma para determinar qué empleado supervisa a ese empleado. No hay ningún tipo de restricción en este tipo de relaciones, solamente presentará peculiaridades a la hora de crear las tablas de la base de datos.

 

Los tipos de relación son los siguientes:

Relación de uno a muchos (1: N): un registro de la entidad 1 se relaciona con múltiples registros de la entidad 2. Ejemplo: una entidad “equipo” que se relaciona con la entidad “jugador”. De un equipo formarán parte muchos jugadores.

Esto se representa gráficamente mediante una línea acabada en una pata de gallo. El extremo con la pata de gallo estará unido a la entidad que contendrá múltiples registros. El extremo recto irá a la tabla que contendrá solo uno.

Ejemplo de relación de uno a muchos representada gráficamente:

 

Dentro de este apartado entrarían también las relaciones cero a muchos, en las que existe una relación sin que sea obligatorio que haya al menos un registro. Por ejemplo, dos entidades de “noticia” y “comentario” pueden relacionarse de cero a muchos, puesto que una noticia puede no tener comentarios.

Relación uno a uno (1:1): en esta, un registro de la entidad 1 se relaciona solo con un registro de la entidad 2. Dentro de este apartado entrarían las relaciones de cero a uno, en las que un registro puede relacionarse con otro de la entidad 2 o no. Se representan mediante una línea con ambos extremos rectos, como en la relación de uno a muchos.

Se utilizan para separar dos conceptos estrechamente ligados en dos entidades diferentes. Un ejemplo puede ser una entidad de “usuario” y otra de “perfil de Twitter”. En este caso la aplicación no permite que un usuario pueda tener más de uno.

También son útiles las relaciones cero a uno si quiere gestionarse, por ejemplo, el director de un departamento y la restricción es que solo un empleado puede ser el director y que un empleado solo pueda ser director de un departamento.

Relación de muchos a muchos (N: M): en esta relación múltiples registros de la entidad 1 se relacionan con múltiples registros de la entidad 2. Un ejemplo de relación de muchos a muchos pueden ser las entidades “libro” y “autor”. Un libro puede tener varios autores y un autor puede haber escrito muchos libros. Se representan mediante las patas de gallo en cada extremo.

Al igual que los dos tipos anteriores, es posible que uno o los dos extremos permitan no relacionarse con la otra entidad. Sería el caso de un autor que aún no haya escrito ningún libro, por ejemplo.

 

La diferencia entre las relaciones 1: N y las relaciones N: M es que en las relaciones 1: N un registro de la entidad 1 se relaciona con muchos registros de la entidad 2, pero esto no sucede en el sentido contrario. Cuando varios registros de varias entidades se relacionen habrá que usar una relación de tipo N: M.

Ejemplos:

Una relación entre productos y marcas: un producto pertenece a una sola marca y una marca tiene muchos productos. Relación 1: N.

Una relación entre productos y categorías: un producto pertenece a varias categorías y en cada categoría hay muchos productos. Relación N: M.

 

Una relación entre productos e imágenes: un producto puede tener varias imágenes pero una imagen solo pertenece a un producto. Relación 1: N.

Relación entre productos y pedidos: un producto puede aparecer en muchos pedidos y en un pedido pueden aparecer muchos productos. Relación N: M.

Relaciones reflexivas: Estas relaciones generan tablas dependiendo de la cardinalidad, con cardinalidad 1:1  o 1:N no generan tabla.

Si la relación es N:N si que necesitamos crear una tabla.

Cardinalidad

Ya se ha avanzado bastante en cuanto a la cardinalidad explicando los tipos, pero aquí se profundizará sobre ello. La cardinalidad es el número de registros de cada extremo de la relación que se pueden relacionar con los de la otra entidad. Cada extremo de la relación tiene una cardinalidad.

Según el número de registros, puede ser: cardinalidad (0,1), cardinalidad (0, N), cardinalidad (1, 1), cardinalidad (1, N) y cardinalidad (N, M).

Cardinalidad (0, 1)

Un registro de una tabla se relaciona con otro de forma opcional. Se representa mediante un círculo seguido de una línea vertical en el extremo de la relación que contenga el elemento opcional. La notación representa el 0 y el 1 de forma sencilla. En el siguiente ejemplo, un perfil de una red social puede tener una foto principal o no (si el usuario aún no la ha puesto). Solo puede tener una foto principal.

Tanto este tipo de entidades como las (1, 1) suelen combinarse en una sola entidad que englobe ambas, por lo que es normal que los ejemplos sea vean un poco forzados.

Cardinalidad (0, N)

Un registro de una tabla se relaciona con muchos de la otra o con ninguna. La notación es un círculo seguido de una pata de gallo. El círculo representa un cero y las patas representan que puede haber muchos registros en esa entidad. En el ejemplo siguiente, un producto de una tienda online puede que tenga muchas imágenes, una o ninguna.

Cardinalidad (1, 1)

Un registro de la entidad 1 se relaciona con un registro de la entidad 2. Este tipo de entidades se suele combinar en una sola entidad que tenga los atributos de ambas, pero a veces puede ser conveniente separarlas para evitar complejidades en el modelo de datos. Se dibuja mediante dos líneas verticales, imitando dos números uno.

El ejemplo siguiente podría tratarse de una entidad que guarde datos de un cliente (nombre, dirección, teléfono) y otra que guarde los datos específicos de su tarjeta sanitaria (número, fecha de caducidad, etc.). Un cliente solo tendrá una tarjeta y será obligatoria en este ejemplo.

Cardinalidad (1, N)

Un registro de la entidad 1 se relaciona con varios registros de la entidad 2. Siempre se relacionará con, al menos, uno. Se dibuja mediante una línea vertical seguida de las patas de gallo. Esto denota el uno y el hecho de que pueden ser muchos los registros involucrados.