Ver Mensaje Individual
  #11 (permalink)  
Antiguo 23/07/2010, 05:15
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: Optimizar datos

Si tienes dos tablas, Autor y Libro, y libros con muchos autores, lo que corresponde es una tercera tabla con la PK de ambos: Libro_Autor.
Eso es lo que corresponde según el modelo referencial porque la relación entre Libro y Autor es de cardinalidad M:N (muchos a muchos), y por definición, esa relación se transforma en una tabla al pasar al modelo físico.
Cualquier otra solución que implique campos multivaluados sería una violación al modelo y en el mejor de los casos te complicaría inmensamente las consultas.
Si usases como solución tener varios campos como FK de autor en la tabla Libro, lo que tendrías sería un doble problema:
- Por un lado no todos los libros tienen muchos autores, lo cual implica desperdiciar espacio de disco en campos vacíos y además que deberías determinar cuántos campos: ¿2?, ¿6?, ¿32?... Mira que las antologías pueden abarcar 100 autores sin problemas (tengo una con 172 autores).
- Por otro lado, la definición de esos campos como FK requeriría que se cumpliese la restricción de FK, la que es que no puede ser NULL, y que debe ser una PK válida en la tabla Autor, cosa que no se cumpliría si no llenases todos los campos...

Resumiendo:
Autor(id_autor, nombre, apellido)
Libro(id_libro, genero, titulo, resumen)
Libro_autor(id_autor, id_libro)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)