Ya que vimos los tipos de relaciones que pueden existir entre registros almacenados en distintas tablas, es necesario contar con alguna manera de distinguir un registro o un grupo de registros. Para eso podemos utilizar los siguientes identificadores: Llave Primaria, Llave Foránea, Llave Compuesta – también se les conoce como Clave Primaria, Clave Foránea y Clave Compuesta respectivamente -.
Llave Primaria – P.K.
En las bases de datos relacionales es necesario asegurar que cada registro represente una entidad distinta.
Para especificar esto tenemos que definir una columna donde el valor que se almacene no se pueda repetir.
En lugar de seleccionar una columna existente puede resultar más práctico crear una columna cuyo valor sea independiente de los datos que queremos almacenar. En esta columna vamos a almacenar un número secuencial – 1, 2, 3 – que va a aumentar de manera automática cada que se agregue un registro. El nombre de la columna se va a llamar id.
Esta columna – que distingue cada registro – se le conoce como Llave Primaria – P.K. Primary Key -.
Relación 1:1
En una relación 1:1 se relaciona un registro de una tabla (1) únicamente con un registro de una tabla (2). Ej.
Si vamos a relacionar un registro de una tabla – usuarios – únicamente con un registro de otra tabla – perfiles – puede quedar expresado como:
“Un usuario únicamente puede tener un perfil y un perfil únicamente pertenece a un usuario”.
Revisamos los atributos de las tablas:
usuarios (id, correo, pwd)
perfiles (id, usuario_id, nombre, avatar)
Si consideramos que ambas tablas hacen referencia a la misma entidad – en este caso los datos del usuario y los datos del perfil hacen referencia a una persona – agregamos los atributos en una tabla únicamente.
En el caso de que hagan referencia a una entidad distinta – o que nos interese mantener cierta independencia entre los datos – es necesario utilizar las modificaciones para las relaciones 1:M
Llave Foránea – F.K. – Relación 1:M
En una relación 1:M se relaciona un registro de una tabla (1) con muchos registros de una tabla (2) pero un registro de la tabla (2) únicamente puede estar relacionado con un registro de la tabla (1).
Al crear una relación 1:M entre dos tablas necesitamos agregar una columna a la tabla dependiente*.
En esta columna vamos a guardar el valor de la llave primaria de la tabla independiente *.
Esta columna se le conoce como llave foránea – F.K. – porque el valor que contiene identifica un registro que se encuentra en otra tabla. El valor de la llave foránea si se puede repetir
* vamos a ver estos conceptos más adelante.
Para distinguir la columna de las llaves foráneas la nombro de la siguiente manera:
tabla_columna
tabla: Nombre de la tabla (en singular porque únicamente se guarda un valor en esta columna).
columna: Nombre de la columna de la cuál se obtiene el valor que se utiliza.
usuario_id
Llave Compuesta – C.K. – Relación M:M
En una relación M:M se relaciona un registro de una tabla (1) con muchos registros de una tabla (2) y un registro de la tabla (2) puede estar relacionado con muchos registros de la tabla (1).
Para crear una relación M:M es necesario crear una tabla adicional.
En esta tabla van a estar las llaves foráneas de las tablas relacionadas.
Es probable que se repita el valor en cada una de las columnas – F.K. –
Para asegurar que no se repite ninguna relación se crea una llave compuesta – C.K. -.
Una llave compuesta puede utilizar dos o más columnas – dependiendo de la cantidad de tablas que se encuentren relacionadas – y se busca que cada combinación de valores sea única.
La tabla que contiene llaves compuestas se le conoce como tabla de unión o JOIN TABLE.
En este caso:
Tenemos tres usuarios, tenemos tres imágenes y hay algunos usuarios etiquetados en las imágenes.
La imagen 1 pertenece al usuario con el id 3.
Las imágenes 2 y 3 pertenecen al usuario con el id 1.
El usuario 1 aparece etiquetado en la imagen 3 y en la imagen 1.
El usuario 2 aparece etiquetado en la imagen 3.
El usuario con id 2 no tiene ninguna imagen asociada.
El usuario con id 3 no está etiquetado en ninguna imágen.
Ya que conoces los tipos de relaciones, los identificadores y las tareas generales vamos a revisar diferentes formas para filtrar los registros y algunas funciones de MySQL.