Cita: Me surgen dos dudas ahora en la relacion N:N con la tabla empleado_id y coche_id que no se pueden repetir, es decir, no puedo tener repetido un usuario con un mismo coche varias veces. Necesitaría restringir la tabla para que no permitiera añadir varias veces a un empleado con mismo coche no ?.
Eso se restringe en forma automática cuando declaras la PK como compuesta por las dos FK... Es decir, supongamos: (empleado_id, coche_id).
Por definición, una PK es UNICA...
Cita: Respecto al ejemplo 1-1 creo haber entendido que es necesario tener 2 tablas aparte de la dependencia donde tendría que pasar el id del coche al empleado, así si borro el empleado el coche sigue existiendo en su tabla. ¿ Es esto a lo que te referías con la dependencia ?, mientras que si lo hiciera al revés al borrar un empleado se me quedaría la tabla coches con un id de ese empleado que no pertenecería a nadie ya que la acabo de borrar. ¿ Es esto así ?.
Cuando se habla de "dependencia" en base de datos, estamos hablando a que existe una dependencia
funcional entre dos entidades. es decir, la EXISTENCIA de una entidad depende de la existencia de otra.
El caso más ejemplificador es el de las cargas sociales de un empleado. Los registros correspondientes a las cargas sociales (hijos, conyuges, etc), sólo existen en su tabla , si existe el empleado. De lo contrario no existen. ESO es
dependencia funcional.
Si los empleados de la empresa pueden existir como tales, aunque no se les asigne un vehículo, y los vehículos existen aunque no tengan empelados asignados, entonces NO EXISTE dependencia.
Ene se caso lo que existe es una RELACION entre ambas entidades que se representa por medio de una TABLA que la administra. Eso es un concepto diferente en el análisis del sistema.
Ahora bien, suponiendo que Empleado y Coche son tablas base (sus entidades representadas existen aún si no se las relaciona), hay un vínculo que podemos denominar "Tiene _asignado_un_coche", y esa relación determina la existencia de la tabla "Asignado_A", la cual a su vez sólo posee dos campos principales: Los de la PK que te mencionaba antes
Cita: TIENE_ASIGNADO(empelado_id, coche_id).
En ese diseño,
ni Empelado ni Coche requieren la fk de la otra tabla, ya que la relación la hace la tercera tabla.
Ahora bien, ¿como haces en ese diseño para que un mismo vehículo y un mismo empelado aparezcan una sola vez?
Fácil: declaras UNIQUE a cada campo...
ATENCION: Lo estoy escribiendo de memoria, este breve script puede contener errores porque no estoy mirando el manual de referencia.