2015-05-05 6 views
0

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

Вот мой текущий дизайн базы данных: enter image description here

Как вы можете видеть, для обоих качеств и таблиц PressSettingsSet, есть много столбцов, которые жестко закодированы такие как BlownInsert, Blowout, температура1, Temperature2, и т. д.

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

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

+3

Звучит как * EAV, значение атрибута сущности * дизайн, возможно, лучше спрошен @ http://dba.stackexchange.com/ - http://dba.stackexchange.com/questions/93985/is-eav-an-appro-design-for-a-collection-of-coexisting-metadata-rich- факт –

+1

Да EAV - это то, что вы описываете. Он работает и невероятно мощный в правильных ситуациях. Возможно, вам стоит взглянуть на эту статью о системе, использующей эту структуру базы данных. https: //www.simple- talk.com/opinion/opinion-pieces/bad-carma/ –

+0

Более общий дизайн, тем меньше вероятность обеспечения целостности данных в базе данных. С вашей конструкцией легко сделать температуру1 обязательной. Или не допускать температурного re3, когда нет температуры2. Или запретить определенные комбинации, скажем, не разрешать Раковины вместе с BlownInsert или что-то еще. Вы потеряете это с помощью общего подхода. –

ответ

1

Было бы лучше создать таблицу только с полем имени и иметь отношение «один к одному» с другой таблицей со значением для поля и отношением к номеру задания?

Это было бы самое простое - вы могли бы расширить это, добавив эффективные данные или де-нормализовать его, поместив все это в одну таблицу (только с именем и значением поля).

Являются ли значения для параметров разными для каждого задания? Если да, то да «ключевая» таблица «с именем ans a one-to-» может быть связано со многими отношением к заданию на задание.

+0

Почти каждое задание будет иметь одинаковые имена настроек, но каждое задание будет иметь разные значения для каждой настройки. Я бы хотел, чтобы они могли добавлять новые имена настроек в будущем без необходимости изменения базы данных. Похоже, дизайн EAV - это именно то, что мне нужно. –

+0

@ LandonHammond Вот что я имел в виду и уточнил мой вопрос. Тогда да, соотношение между параметрами и заданиями «один ко многим» представляется подходящим. –