diezel2005,
попробую суммировать:
Просто перечислить свойства через запятую + знать порядок свойств.
Некоторые продукты будут иметь свои уникальные свойства, которых другие продукты не будут иметь.
Поэтому в базе сделать таблицу, где порядок будет описан для каждого продукта (естественно индексами), например:
Код:
визитная карточка - бумага, размер, цвета, лакировка
бланк - бумага, цвета
Порядок свойств не критичен для нахождения цены - потому что цена все равно будет искаться по уникальной комбинации цыфр.
Но логика заложенная в упорядочивании свойств - ускорит просчет при удалении свойства и добавления новых. Плюс удобно просматривать БД.
Теперь надо подумать о целостности БД и возможных ошибках.
Например ошибка, где продукт имеет такие свойства:
Код:
a, b, x - 1 (одна цена)
a, x, b - 2 (другая цена)
С точки зрения уникальности - эти две строки уникальны. Значит при поиске цены - надо будет тоже учитывать прорядок свойств (на всякий случай).
Чем мне нравится моя схема, это:
- порядок свойств не важен и такая ошибка в принцине не возможна.
- каждое свойство (в COL1) присоединено внешним ключем к таблице всех свойств (что уже не возможно при использования хешей).
Но чем мне нравится твоя схема:
- скорость нахождения цены
- компактность таблицы (вариантов)
- легкое чтение неворуженным глазом (даже такие ошибки легко выявить простой сортировкой
)
А что бы проверять целостность, пару триггеров можно написать.