Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/12/2009, 21:57
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: 17 años, 3 meses
Puntos: 2658
Respuesta: Duda al referenciar tablas

Vamos por partes:
1. Una FOREIGN KEY es una parte del modelo relaciona y se trata de un nivel de restricciones: Restricción de dominio de campo.
2. Una FK es una clave foránea, ajena o externa. Esto significa que es un campo de una tabla que debe llevar un valor que se corresponda con la PRIMARY KEY de otra tabla, a la que se hace referencia.
3. La sentencia en cuestión lo que hace es establecer una relación en la base de datos entre ambas tablas, indicando al DBMS cuáles campos y cuales tablas están relacionadas, de qué forma y con qué condiciones.
4. Para que se pueda usar una FK, el motor de tablas del DBMS debe ser capaz de interpretar esa relación. En el caso de MySQL, el tipo de tablas MyISAM no soporta relaciones de FK, por lo que la sentencia no causa efectos. Sí son soportadas por el motor InnoDB.
5. Una FK determina, en esencia, que para que un registro pueda ser ingresado en una tabla, el valor del campo designado como FK debe existir previamente en la tabla referida.
6. El objetivo central de una FK es mantener la consistencia de datos, que en tu base debe ser mantenida a través de programación, ya que ni siquiera conocías lo que eran las FK...
7. En el caso de tus consultas, no se verían afectadas, aunque sí permitirían mayor seguridad a la hora de obtener datos, ya que tal y como planteaste el modelo, sería factible poner un disco como creado por diferentes autores... lo que se denomina inconsistencia de datos.
8. Toda tabla que contenga claves de otras tablas (como la de favoritos, que mencionas), debe tener las definiciones de FK correspondiente, para poder administrar correctamente las inserciones.

¿Se va comprendiendo un poco la idea?

Mi sugerencia es que vuelvas a revisar el tema de base relacional de datos, ya que si no conocías el tema, pueden también faltarte otros detalles. Sin ofender...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)