Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/09/2012, 09:16
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Para que son las relaciones de las tablas?

Es una pregunta algo inesperada, y un poco asombrosa...
¿Crees que si el único motivo de relacionar tablas fuese hacer cascadas de borrados o actualizaciones, tendría algún sentido?
No.
La razón de la existencia de las relaciones no es sólo para eso. De hecho, eso es una consecuencia de las relaciones definidas en las bases de datos y no el origen de ellas.
Explicar el cómo y por qué se llegó a la definición de relaciones entre tablas es algo largo y mucho de la teoría necesita de buenos conocimientos de sistemas, pero una síntesis elemental se puede decir así: Consistencia de Datos, Integridad Referencial, Eliminación de Redundancias innecesarias y Normalización.

Una parte fundamental de la razón de la existencia de relaciones está en el aseguramiento de consistencia datos.
Sin las relaciones, un error de programación puede resultar en información basura por pérdida de consistencia, que es el caso que tienes diseñado: Manejar las relaciones programáticamente conlleva el riesgo de que un dato mal ingresado (que los hay) termine en un desastre contable.
Y con ello, tu puesto de trabajo.

Yo he visto suceder que un error de un proceso que no actualizó debidamente un campo en una tabla, generó la pérdida de dos años de datos de pagos en una empresa de seguros médicos. Y llevó catorce meses recuperar los datos reingresando manualmente otra vez todos los pagos. Meses perdidos.
Si hubiesen definido correctamente la relación, la primera vez que intentara acceder a ese campo con ese valor malo, simplemente el DBMS no le hubiera dejado hacerlo. El error hubiera sido evidente, y no habría estado sin detectarse hasta que hicieron la consolidación de datos.¿Te parece realmente que no sirven o son superfluas?

Uno de los problemas que tenemos quienes nos dedicamos al tema de las BBDD, es hacer que los desarrolladores (programadores) entiendan claramente la importancia de la arquitectura de datos. En general (y ese parece ser tu caso) no lo ven, porque ellos ven procesos, y nosotros vemos datos. Son lógicas distintas, por extraño que te parezca.
Siempre suelo comentar que cuando mis profesores de BBDD me decían eso, me parecía una exageración, pero los años me han mostrado que estaban en lo cierto.

Es posible que más que otra cosa, te convenga estudiar un poco de los fundamentos de las bases de datos, para lo cual te recomendaría una mirada al libro de Codd llamado, precisamente, "Fundamentos de las Bases de Datos".
Es algo técnico, pero puede que te abra un poco la visión a los problemas que causan.
Hay otros libros, más accesibles, si te resulta complejo ese.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)