Извините за плохой заголовок, но я понятия не имею, как это выразить. Проблема заключается в следующем:
У меня есть общий элемент, представляющий группу, назовем его Автомобиль . Теперь этот Автомобиль имеет атрибуты, которые находятся в определенных пределах, скажем, например, скорость составляет от 0 до 180 для обычного Автомобиля . Представьте здесь еще несколько атрибутов с диапазонами, например, цвет может быть от 0 до 255, независимо от того, что может означать это значение.
Итак, в моей таблице GenericItems У меня есть:
ID Name
1 Car
А в моих Атрибутах У меня есть:
ID Name Min_Value Max Value
1 Speed 0 180
2 Color 0 255
Соотношение между Car и Attributes, таким образом, равно 1: n.
Теперь у меня появляются очень специфические экземпляры моего автомобиля , например, FordMustang, A FerrariF40 и DodgeViper.
Это конкретные экземпляры, и теперь я хочу дать им конкретные значения для их атрибутов.
Итак, в моей таблице SpecificItem У меня есть:
ID Name GenericItem_ID
1 FordMustang 1
2 DodgeViper 1
3 FerrariF40 1
Теперь мне нужна третья таблица SpecificAttributes2SpecificItems , чтобы сопоставить атрибуты с SpecificItems :
ID SpecificItem_ID Attribute_ID Value
1 1 1 120 ;Ford Mustang goes 120 only
2 1 2 123 ;Ford Mustang is red
3 2 1 150 ;Dodge Viper goes 150
4 2 2 255 ;Dodge Viper is white
5 3 1 180 ;FerrariF40 goes 180
6 3 2 0 ;FerrariF40 is black
Проблема с этим дизайном, как вы можете видеть, заключается в том, что я в основном всегда копирую все строки атрибутов, и я чувствую, что это плохой дизайн, противоречивый и т. Д. Как я могу добиться этой логики в правильной, нормализованной способ
Я хочу иметь возможность иметь несколько общих элементов с несколькими атрибутами с минимальными / максимальными значениями в качестве интервала, которые могут быть "созданы" с конкретными значениями