Como Establecer Relaciones en las Bases de Datos.

Cuando se trata de Bases de datos, a muchos les da miedito. La verdad es que hay razón justificada para ese medito: una mala decisión puede hacer la diferencia entre un sistema funcional y flexible y uno que simplemente no da para más.

Una de las principales áreas en las que hay que tener cuidado es al establecer las relaciones entre las diferentes tablas que conforman nuestra base de datos.

En RDBMS’s como lo es MySQL existen tres tipos de relaciones entre las bases de datos. Dos de ellos son muy sencillos, el tercero es un poco más complejo y puede tumbar de su silla a unos cuantos. En esta ocasión solo tomaré los dos sencillos, que son los conocidos como one to one y one to many.

Una relación one to one (1:1) o one to many (1:m) se logra agregando uno de los campos de la tabla padre (generalmente el que se usa como Primary Key) a la tabla hija. Por ejemplo, si tenemos una tabla usuarios y otra perfiles, entonces en nuestra tabla perfiles pondríamos un campo usuarioID, que correspondería con el campo usuarioID de la tabla usuarios. De este modo, cuando guardamos un perfil nuevo, dentro de Perfiles.usuarioID almacenamos el valor del id de usuario correspondiente al usuario cuyo perfil estamos almacenando. Este valor es le mismo que tenemos dentro de Usuarios.usuarioID. Al hacer esto podemos hacer algo como:

SELECT perfilNombre FROM perfiles WHERE usuarioID = 2

En este caso lo que obtendríamos es el nombre del perfil correspondiente al usuario cuyo id es 2.

Ahora, la pregunta viene, como decidimos que tabla es la tabla padre y que tabla es la tabla hija. En otras palabras, a que tabla le vamos a agregar el campo extra? La respuesta es muy sencilla. Todo basta con ver que tabla pertenece a cual. En nuestro ejemplo, un perfil pertenece a un usuario, pero no viceversa. Es decir, que un usuario no puede pertenecer a un perfil. Muchas veces ayuda si mentalmente creamos la sentencia SQL que usaríamos para recibir los datos de la tabla. En nuestro caso, es claro que si vamos a pedir un perfil, lo vamos a hacer basados en el id del usuario cuyo perfil queremos obtener. De esta forma podemos ver claramente que la tabla usuarios es Padre de la tabla perfiles ya que usuarios es un campo más amplio. Un usuario puede tener un perfil publico, un perfil privado, una dirección postal, un carrito de compras etc.

Como vez, determinar que tabla es padre y que tabla es hija es muy sencillo, pero muchas veces, si no tenemos este tip a la mano, puede ser un poco confuso, especialmente cuando estamos trabajando con muchas tablas cuyas relaciones son complejas. Siempre ayuda de mucho ver que tabla pertenece al grupo más grande. Por ejemplo, la tabla perfiles es un “sub-grupo” de la tabla usuarios.

Espero que les sirva este tip, y si tu tienes una forma favorita de definir tus relaciones en las bases de datos, por que no nos comentas un poco?

One thought on “Como Establecer Relaciones en las Bases de Datos.

Comments are closed.