Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/09/2012, 12:45
minombreesmm
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: Para que son las relaciones de las tablas?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
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.
Bueno de hecho asi es como dices.
sera que no he hecho programas que requieran altas relaciones, talvez.
pero bueno, ya vez que el usuario mete un dato mal y todo colapsa.
bueno como yo bloqueo los datos que el usuario no pueda meter entonces no hay problema.
solo dejo que el usuario capture los datos necesarios.

aunque tienes mucha razon, ahora que lo veo, el programa que estoy haciendo tiene un codigo de barras que puede ser modificado por el usuario y viendolo bien que si modifican ese codigo de barras tambien se deberia modificar el codigo de barras ese en todas las tablas donde exista. oO
cielos y eso nunca lo hice. bueno no creo que haya problema, muy dificil mente modifican un codigo de barras XD.
pero intentare hacer una relacion, aunque nose si despues me permita borrar, talvez sea un poco novato en eso de las relaciones y pues me ha tocado que relaciono y ya no puedo borrar por que ya hay datos en otro lado, no me deja mmm. pero lo probare
gracias