
15/12/2012, 09:40
|
 | 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: Formalización Tablas AutLibro tiene que tener definida como PK una clave de dos campos que es (idLibro, idAutor).
Con sólo esas tablas puedes responder:
1) Que autores tiene un libro.
Es un INNER JOIN entre las tres tablas (Autor -> AutorLibro <- Libro).
2) Qué libros corresponden a un autor
Es un INNER JOIN entre las tres tablas (Libro -> AutorLibro <- Autor).
3) Autores que figuren sin libros registrados.
Se hace un LEFT JOIN entre Autor y AutorLibro, donde Autor devuelve NULL en AutorLibro.idLibro (Autor -> AutorLibro). La tercera tabla no es necesaria porque no devolvería nada en ese caso.
4) Qué libros están registrados sin autor.
Se hace un LEFT JOIN entre Libro y AutorLibro, donde Autor devuelve NULL en AutorLibro.idAutor (Libro -> AutorLibro). La tercera tabla no es necesaria porque no devolvería nada en ese caso.
..y todo el resto de las consultas posibles basadas en el resto de los atributos de cada una de las dos tablas base.
¿Se va entendiendo la idea?
El LEFT JOIN se escribe diferente de acuerdo a qué DBMS y que versión del mismo se use. Oracle 8i y Oracle 11g, tienen escritura distinta, y SQL Server tiene la suya propia (LEFT OUTER JOIN), mientras que MySQL lo hace de una forma más ANSI SL (LEFT JOIN).
Te recomiendo leer el manual de referencia del DBMS que uses antes de meterte a redactar las sentencias para asegurarte la sintaxis correcta.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |