Я думаю, что загнал себя в довольно тупой угол, здесь. Позвольте мне показать вам схему. У меня уже есть много вещей, но я внезапно осознал большую проблему.
Units
- UnitId
Rings
- RingId
Keys
- RingId (FK)
- KeyId (PK)
- KeyLiteral (FK)
- KeyValue
Literals
- LiteralId
- LiteralValue
Это было хорошо на некоторое время. В основном, Единицы создаются и затем получают KeyRing. К этому кольцу добавляются ключи, и каждый ключ может иметь значение и идентификатор литерала (для предотвращения дублирования).
Это было замечательно, здорово. Работал отлично. Может добавить новые свойства для элементов без заминки, больше нет жестко закодированных таблиц для него. Возгласы ликования.
Затем я понял, что некоторые элементы должны быть значением из списка возможных элементов. Ладно, нет проблем.
Lists
- ListId
ListItems
- ListId (FK)
- ListItemId (PK)
- ListItemValue
Ах да, теперь у меня есть способ составлять списки. Но .......
Это не очень помогает, если это просто строковое значение в моем KeyValue, которое возвращается из списка. Если ListItemValue изменяется, мы ничего не решаем. Поэтому я мог бы использовать ListItemId в KeyValue.
Но затем я должен выяснить, как получить ListItemValue из таблицы ListItems при вызове ключа только по его буквальному имени. Кроме того, не все ключи будут связаны со списком.
Есть идеи?