Я пытаюсь выяснить, какой лучший способ создать эту базу данных. В настоящее время у меня есть работы, но это требует от меня значений жесткого кода, в которых я хотел бы, чтобы он был динамичным в будущем.Попытка сделать мою базу данных более динамичной
Вот мой текущий дизайн базы данных:
Как вы можете видеть, для обоих качеств и таблиц PressSettingsSet, есть много столбцов, которые жестко закодированы такие как BlownInsert, Blowout, температура1, Temperature2, и т. д.
То, что я пытаюсь сделать, - иметь динамические характеристики. Каждое задание будет иметь такие же настройки, но я бы хотел, чтобы пользователи определяли эти параметры. Было бы лучше создать таблицу только с полем имени и иметь отношение «один к одному» с другой таблицей со значением для поля и отношением к номеру задания?
Я надеюсь, что это имеет смысл, любая помощь приветствуется. Я могу составить диаграмму базы данных о том, как я думаю, что она должна работать, если это более полезно для того, что я пытаюсь передать. Я думаю, что то, что я имею в виду, будет работать, но похоже, что это создаст много дополнительных строк в базе данных, поэтому я хотел посмотреть, есть ли лучший способ.
Звучит как * EAV, значение атрибута сущности * дизайн, возможно, лучше спрошен @ http://dba.stackexchange.com/ - http://dba.stackexchange.com/questions/93985/is-eav-an-appro-design-for-a-collection-of-coexisting-metadata-rich- факт –
Да EAV - это то, что вы описываете. Он работает и невероятно мощный в правильных ситуациях. Возможно, вам стоит взглянуть на эту статью о системе, использующей эту структуру базы данных. https: //www.simple- talk.com/opinion/opinion-pieces/bad-carma/ –
Более общий дизайн, тем меньше вероятность обеспечения целостности данных в базе данных. С вашей конструкцией легко сделать температуру1 обязательной. Или не допускать температурного re3, когда нет температуры2. Или запретить определенные комбинации, скажем, не разрешать Раковины вместе с BlownInsert или что-то еще. Вы потеряете это с помощью общего подхода. –