Давайте возьмем в качестве товара платье. Этот товар может иметь такую характеристику как цвет. Выгодно ли помещать ее в отдельную таблице? Нет. При этом платье может иметь и сложный цвет, который не указать. Это означает, что данная характеристика необязательна к заполнению по сравнению к примеру характеристики "цена", которая обязательна. Следовательно поле в основной таблице содержащее значение этой характеристики по умолчанию принимает как "нет"/NULL.
В тоже время любой такой товар может обладать индивидуальными характеристиками. При этом если характеристики цена, размер, цвет, тип материала, и т.п. явно ожидаемые, и описываются основной таблицей, то индивидуальные характеристики нельзя предугадать. Таблица же не может динамически изменяться "вширь", вот тогда и появляется необходимость в связанной таблице индивидуальных характеристик, обеспечивающей связь "многое к одному".
Но если к примеру пусть описывать цвет отдельной таблицей, то выгоднее такие описания иметь как готовый набор: красный, черный, зеленый... в таблице описывающей различные значения характеристик. При этом таблица связей их с товаром, это связи идентификаторов товара с идентификаторами характеристик и их значений. Форма при этом имеет списки из которых можно выбрать значение той или иной характеристики, если она присуща товару. Добавление же новой характеристики допускается только тогда, когда ее описания нет в базе.
|