Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

¿Para que sirven las relaciones en las Bases de Datos?

Estas en el tema de ¿Para que sirven las relaciones en las Bases de Datos? en el foro de Mysql en Foros del Web. Buenas Sé cual es la definición de relación, y se como se crean en MySQL y en alguna otra base de datos, pero... Aunque la ...
  #1 (permalink)  
Antiguo 30/10/2013, 10:05
 
Fecha de Ingreso: enero-2008
Mensajes: 136
Antigüedad: 16 años, 10 meses
Puntos: 1
¿Para que sirven las relaciones en las Bases de Datos?

Buenas

Sé cual es la definición de relación, y se como se crean en MySQL y en alguna otra base de datos, pero...

Aunque la pregunta suene tonta, además de para indicarle al usuario que existe una relación entre campos... ¿Para qué se usan las relaciones en las bases de datos?


Por ejemplo para hacer JOINS no necesito relaciones, simplemente indicando los campos es suficiente.

¿Podríais darme algún ejemplo de uso de las relaciones, en el que sea necesario las relaciones?

Gracias
  #2 (permalink)  
Antiguo 30/10/2013, 10:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ¿Para que sirven las relaciones en las Bases de Datos?

Es una pregunta algo asombrosa, ya que estás preguntando el por qué de algo que es el fundamento de las bases de datos relacionales, sin lo cual todo lo que puedas conocer sobre BBDD no tiene ningún sentido. Es decir: Es el cimiento de todo...

Hay dos conceptos que sin duda te están faltando: Consistencia de Datos e Integridad Referencial. Son temas largos, con muchas cosas para explicar, pero te lo daré en un ejemplo simple:

Supongamos que tienes una base de datos que administra los recursos humanos de una empresa, y que en esa base de datos existe una tabla donde se registran las Cargas Sociales de los empleados, entendiendo por tales a los familiares o personas que ellos tienen a cargo, y por los cuales reciben (por ley) ciertas bonificaciones.

¿Cómo haces para saber a qué empleado pertenecen ciertas personas registradas allí?

Obviamente hay una relación 1:N entre el empleado y las posibles cargas familiares que tenga.
Bueno, entonces, ¿como haces para asegurarte que no exista ninguna posibilidad de que algún programador inútil e incapaz, deje una carga social sin asociarla efectivamente al empleado correspondiente?

...

Simple: FOREIGN KEY entre la carga y el empleado...

¿Se entiende?

Lo que también es evidente es que no has entendido el concepto de JOIN. No es simplemente "juntar" campos. Esos campos deben estar relacionados, si o sí. Si no lo están tienes una bolsa de datos basura, pero no tienes una base de datos.
Eso desde el punto de vista conceptual. Desde el punto de vista de los DBMS, la existencia de una FK genera un índice que administra la relación declarada, y que se usa internamente cuando realizas un INNER JOIN entre dos tablas relacionadas por FK, lo que evidentemente facilita la optimización de las consultas.

Consejo: Ponte a leer en profundidad los fundamentos del modelo E-R y de las bases de datos relacionales, porque este conocimientos es crítico para hacer desarrollos que realmente sirvan.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 30/10/2013, 14:53
 
Fecha de Ingreso: enero-2008
Mensajes: 136
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: ¿Para que sirven las relaciones en las Bases de Datos?

Hola

Estas diciendo que las relaciones son necesarias para la integridad referencial, ¿para qué más?.
La teoría me la leí hace tiempo y ahora le estaba dando vueltas a algunos detalles. Aunque ahora estoy estudiando bases de datos NOSQL y las cosas cambian un poco.

Ya sé que el "JOIN" no es simplemente juntar campos, y que hay INNER JOINS, LEFT JOINS, OUTER JOINS, etc..., lo que digo es que al hacer el join puedes especificar los campos con los que aplicar la condición de igualdad con el ON aunque no haya relaciones definidas.
  #4 (permalink)  
Antiguo 30/10/2013, 20:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ¿Para que sirven las relaciones en las Bases de Datos?

Cita:
Estas diciendo que las relaciones son necesarias para la integridad referencial, ¿para qué más?.
¿Y te parece poco la integridad referencial y la consistencia de datos?
Trata de imaginarte un sitema bancario donde no haya integridad referencial y consistencia. ¿Te parece lo mismo deberle al banco $ 15.000, que tener acreencias con el mismo banco por $ 17.000?
¿Es igual que una cuenta de un cliente pertenezca a X persona, que esa X persona no esté referenicada y por tanto sea una cuenta de la que no se conoce deudor? ¿A quién se le imputaría?
¿Cómo te cubriría el sistema médico, si no sabe a quién se imputa tu ateción médica? ¿Y tu jubilación?

Creo que no estás viendo la perpectiva de un sistema crítico, o bien lo que estás acostumbrado a ver son busquedas semántcas, y no búsquedas por precisión. Son modos diferentes de analizar las cosas, y depende de qué es lo que neceistas lograr. En estos casos que te menciono, la cosnistencia e integridad referencial son màs que críticos: Son fundamentales.

Cita:
Aunque ahora estoy estudiando bases de datos NOSQL y las cosas cambian un poco.
Si tu pregunta apunta a hacer una comparación entre NoSQL y Bases de Datos Relacionales, vas mal encaminado: Son paradigmas distintos e incompatibles.
En esencia estamos hablando de modelos diferentes, basados en principios diferentes.
En las bases de datos orientadas a NoSQL, la consistencia no es un factor, como tampoco lo es la redundancia, ni la integridad referencial, todos elementos básicos del modelo relacional.
No es que NoSQL sea una "evolución" del MR. Es otro modelo.
Entonces, si has estudiado los fundamentos del modelo relacional, deberías desempolvar los apuntes, y volverlos a leer. Pero no trates de encontrar un marco comparativo entre ambos, porque es como intentar comparar el Análisis Estructurado de Yourdon, con el Análisis Orientado a Objetos... No son la misma cosa.
Y no porque uno sea mejor que otro.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 01/11/2013 a las 10:16

Etiquetas: bases, campo, join, relaciones, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:18.