БД вопрос для машины знающих - PullRequest
2 голосов
/ 07 марта 2011

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

  • Вот пример автомобиля модель : 2011 Nissan Sentra
  • Вот пример автомобиля отделка : 2011 Nissan Sentra 2.0

Заводскиетакие параметры, как "солнечная крыша", свойство "модель" или "отделка салона?"Кажется, что модель имеет конечный список возможных заводских опций, но обрезка определяется включением или исключением определенных заводских опций.

Я пытаюсь понять связь заводских опций с моделью и отделкой- с точки зрения моделирования данных.

Идеи?

Ответы [ 3 ]

1 голос
/ 07 марта 2011

Лично я бы подумал, что это свойство отделки салона.Ваша модель всегда будет "Nissan Sentra 2011".Тогда вы можете выбрать «Nissan Sentra Super Turbo Mode 2011», и тогда этот супер турбо-режим может включать или не включать свойство люка в крыше.

Или, может быть, нет, может иметь смысл поддержка модели солнечная крыша, и поэтому каждая отделка может иметь ее, если модель поддерживает ее.Но, как правило, солнечные крыши могут быть установлены на автомобили в любом случае.

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

0 голосов
/ 09 марта 2011

Из вашего описания, я думаю, вам может понадобиться как минимум 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 отношения выше).

НТН.

0 голосов
/ 07 марта 2011

Разве они не являются коллекцией Option на модели?

На мой взгляд, наличие некоторого набора параметров с моделью не указывает уровень трима, но для уровня трима всегда требуется модель. Это односторонняя связь, даже если вы можете сделать какой-то вывод, который можно применить к настройкам параметров. То есть: модель Sux 2000 LX всегда имеет 6-цилиндровый двигатель, а LE - нет. Можно предположить, что 6-цилиндровый двигатель является моделью LX, но это не подходит для всех автомобилей.

...