Indices únicos y ciclos referenciales

Hola y ante todo gracias por leer mi pregunta. Vamos al lio:
Tengo dos tablas alojamientos(nombre -cp-, ciudad y personacontacto) y personal (código -cp-, nombre, alojamiento). Entre ellas existen dos relaciones:
1. Alojamiento-personal. Una persona trabaja en un alojamiento (1:N). El campo alojamiento de personal es clave externa que referencia a un alojamiento.
2. Personal-alojamiento. El campo personacontacto de alojamiento es clave externa que referencia a una persona. Una persona solo puede ser contacto de un alojamiento (1:1).
Para implementar esta relación cree un índice único para el campo personacontacto. Pero al existir un ciclo referencial debo romperlo de alguna forma, se me ocurrió permitir nulos en ese campo personacontacto que es índice único, con lo que sólo puedo meter nulo una vez. ¿Cómo soluciono el problema? En Access puedo meter todos los nulos que quiera.
Leí en un libro ( A fondo Microsoft SQL server 2000 de McGraw-hill) tres soluciones a este problema pero no me parecen correctas cuando un usuario normal y corriente deba meter datos. Las soluciones son:
1. Crear las tablas sin restricciones, meter datos y luego crear las restricciones.
2. Meter datos con BCP o BULK INSERT
3. Desactivar las restricc, meter datos y activar las restricc.
¿No existe otro modo de hacerlo?
Se me ocurrió crear un disparador que controlara la unicidad de datos --sin crear el indice único par personacontacto--.
¿Qué te parece todo este rollo?
Gracias de nuevo y hasta pronto

Añade tu respuesta

Haz clic para o