Por ponerlo gráficamente:
Cita: Diseño 1:
Inventario
Id (clave primaria)
Lugar
Elemento 1
Id (clave foránea)
Elemento 2
Id (clave foránea) Cita: Diseño 2.1:
Elemento 1
Id (clave primaria)
Lugar
Elemento 2
Id (clave primaria)
Lugar Cita: Diseño 2.2:
Relación_elemento_lugar
Id (clave primaria compuesta)
Nombre_tabla (clave primaria compuesta)
Lugar
Elemento 1
Id (clave primaria)
Elemento 2
Id (clave primaria) Nota: En el diseño 2.2., la Id y el Nombre_tabla conformarían la clave primaria. Como se ve, el problema es que Nombre_tabla no puede referenciarse a nada, y el sistema no puede por tanto hacer comprobación de errores. Si se pudiera, sería perfecto, pues éste es el modelo que más me gusta.