Из вашего описания, я думаю, вам может понадобиться как минимум 3 отношения:
- R1: Model-TrimLevel. Определяет, какие уровни отделки салона доступны для каких моделей. Многие: многие (то есть каждый уровень TrimLevel доступен на многих моделях, каждая модель доступна на многих уровнях TrimLevel)
- R2: TrimLevel-Option. Определяет, какие параметры включены в каждый уровень отделки салона. Опять много: много (каждый TrimLevel включает в себя множество опций, каждый опцион включен во многие TrimLevels)
- R3: модель-опция. Определяет, какие опции доступны для каких моделей. Многие: Многие (каждая модель доступна с несколькими опциями, каждая опция доступна на многих моделях).
Предполагая, что я понимаю ваш вопрос, я подозреваю, что оба R2 и R3 необходимы, а не / или:
- R2 охватывает случай, когда опции включаются автоматически путем выбора заданного уровня обрезки
- R3 позволяет выбирать опции вне уровня обрезки.
Например: возьмите Ford Fiesta (модель) GL (TrimLevel). Это стандартно для литых дисков (R2), но не включает кожаный салон. Однако покупатель может, если они того пожелают, добавить вариант кожи. При условии, конечно, кожа является доступной опцией для Fiesta (R3).
Откуда вы пойдете, будет зависеть от ваших требований. Вероятно, вам понадобятся некоторые запросы к отношениям (например, что произойдет, если кто-то выберет вариант, который уже включен в выбранный ими уровень обрезки?).
Вам также может понадобиться ввести атрибуты в отношения. Например, кожа, как правило, вариант стоимости. На Fiesta это может быть 1000 фунтов стерлингов. На S-max это 1200 фунтов. Это означает, что вам нужно зафиксировать цену как дополнительный атрибут на R3. Точно так же, включение опции в TrimLevel может быть бесплатным или со скидкой. Это означает, что атрибут на R2.
В общем, сложность отношений будет зависеть от того, сколько вы должны представлять. Это интересная проблема и может быть довольно сложной. Если вам интересно, вы можете взглянуть на Feature Modeling . Он охватывает именно такой вопрос конфигурации в гораздо более широком смысле. (Ото, стоит сказать, что вам, вероятно, не нужно ничего больше, чем простые 3 отношения выше).
НТН.