Tengo que agregar funcionalidad a una aplicación existente y me encontré con una situación de datos que no estoy seguro de cómo modelar. Estoy restringido a la creación de nuevas tablas y códigos. Si necesito modificar la estructura existente, creo que mi cliente puede rechazar la propuesta ... aunque si es la única manera de hacerlo bien, esto es lo que tendré que hacer.Cómo modelar una relación mutuamente excluyente en SQL Server
Tengo una tabla de elementos que me permite vincular a cualquier número de tablas, y estas tablas pueden aumentar con el tiempo. El elemento solo puede vincularme a otra tabla, pero el registro en la otra tabla puede tener muchos elementos vinculados a ella.
Ejemplos de las tablas/entidades que se unen a son Person
, Vehicle
, Building
, Office
. Estas son todas tablas separadas.
Ejemplo de artículos son Pen
, Stapler
, Cushion
, Tyre
, A4 Paper
, Plastic Bag
, Poster
, Decoration"
Por ejemplo, un Poster
se pueden asignar a un Person
o Office
o Building
. En el futuro, si agregan una tabla Conference Room
, también se puede agregar a eso.
Mis pensamientos intital son:
Item
{
ID,
Name
}
LinkedItem
{
ItemID,
LinkedToTableName,
LinkedToID
}
El campo LinkedToTableName
permitirá entonces me identifico a la tabla correcta establecer el vínculo en mi código.
No estoy demasiado feliz con esta solución, pero no puedo pensar en otra cosa. ¡Por favor ayuda! :)
Gracias!
Sería de gran ayuda si han explicado un poco más sobre qué tipo de información almacena, y por qué; por ejemplo, ¿están los artículos entradas de blog, personas o artículos en un supermercado, etc.? ¿Qué representan las tablas de objetivos? Creo que su abstracción está rota, pero es casi imposible decir por qué, o sugerir un enfoque diferente sin conocer el problema que está tratando de resolver con él. –
Gracias Rowland. Intenté agregar a mi pregunta. Vea Editado Q. Voy a editar nuevamente si todavía no hay suficiente información :) – littlechris