Ключи, Списки, Значения - PullRequest
       9

Ключи, Списки, Значения

0 голосов
/ 17 сентября 2009

Я думаю, что загнал себя в довольно тупой угол, здесь. Позвольте мне показать вам схему. У меня уже есть много вещей, но я внезапно осознал большую проблему.

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 при вызове ключа только по его буквальному имени. Кроме того, не все ключи будут связаны со списком.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 18 сентября 2009

"Определите свои сущности и создайте таблицы для их поддержки."

"Это невозможно для этого проекта."

Если это действительно так, то не пытайтесь использовать технологию реляционных баз данных. Реляционная модель была задумана как универсальная модель управления данными, в которой требования к данным / информации считались очень стабильными.

Если ваш пользователь меняет требования быстрее, чем он меняет свои трусы, то реляционная технология не является подходящим вариантом для удовлетворения его требований.

0 голосов
/ 17 сентября 2009

Является ли это очередным переизобретением универсальной пары имя-значение? Я не совсем понимаю, что такое кольцо / юниты / ключи, но это напоминает мне о попытках, которые я видел в прошлом, чтобы создать ультрагибкие пары имя-значение, которые в итоге оказываются незапрашиваемыми и плохо работают.

Определите ваши сущности и создайте таблицы для их поддержки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...