Ver Mensaje Individual
  #7 (permalink)  
Antiguo 02/06/2016, 13:42
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: diseño fisico bd

Bueno, desde el vamos, si eso te lo dio un profesor en la universidad, es una trampa cazabobos... cosa que no me extrañaría porque tuve dos en Base de Datos I de la UNIMOROn que hacían eso..
SI sólo te dieron el diagrama, sin las reglas de negocio, entonces tendrás que hacer algunas inferencias.

Por lo pronto, es IMPOSIBLE indicar una FK cuando no existe la tabla refernciada, y al moment de ejecutarse ese primer CREATE, las tablas Etapas y Recorridos AUN NO EXISTEN.

¿Queda claro eso?

En segundo lugar, en esa primera tabla intentas apuntar un sólo campo como FK de Recorridos, por ejemplo. Pero esa tabla tiene una PK COMPUESTA, la PK tiene DOS campos, y por ende la FK que apunte a ella debe si o si tener DOS campos también, del mismo tipo de dato y en el mismo orden.
Y no tienes los capos necesarios.

¿Se va entendiendo?

Finalmente, estás omitiendo lo principal: Dependencia de integridad referencial.

Una FK protege la itegridad referencial entre las tablas, lo que significa que cuando ingrese un registro en Caminos, los valores a asignar en"nombre" y el campo faltante tienen que existir previamente en Etapas y Recorridos.
Pero en esas tablas, como apuntan a Caminos, no se puede ingresar datos que no existan PREVIAMENTE en la primera tabla.

¿Queda claro?

Bueno, eso se denomina "dependencia circular", y es una condición de cumplimiento IMPOSIBLE en una base de datos relacional.

Para que ingrese A, debe existir B, y para que ingrese B, debe existir A.

No hay forma en que eso se pueda hacer. Cualquier ingreso te disparará un error de integridad referencial.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)