Здравствуйте, возник тут вопросик... Как лучше вариант БД подходит для каталога? Первый вариант правильный по теории: Есть таблица моделей, таблица комплектаций и связывающая их таблица, но в этом случае получается, что таблица, которая нужна для развязки много ко многим - будет очень большая... Например, если есть 2000 товаров и 20 возможных комплектаций, то связывающая таблица может доходить до 40000 записей... Ну второй вариант тупее в плане теории,но, вполне возможно, более быстрый: Есть таблица моделей, где описаны основные данные о модели, например, цена. Есть вторая таблица, связанная с моделями один-к-одному, где находятся менее важные данные о комплектации... И есть таблица, где хранятся название полей по русски (для нормального вывода в каталог), например, price-цена, color-цвет модели. Мне почему-то кажется, что второй вариант будет работать быстрее... Механизм добавления комплектации в первом варианте, конечно, легче и работа с ней удобнее, но второй вариант, на мой взгляд, удобнее тем, что легче делать мудреные фильтры, да и вообще, думаю, что время на обработку одного и того же запроса будет меньше... У кого-нить есть соображения по этому поводу? Может имеется другой вариант организации БД?
kagerr Мои 5 копеек - параметры (цена, цвет, прочее) должны быть разнесены по разным полям таблицы. Есть значение - есть параметр. Нет значения (NULL) - параметр не нужен. Понимаю, что таблица здорово растянется по горизонтали, и что при добавлении новых параметров придется менять структуру таблицы (добавлять поля), но... так правильнее Связей 1-1 точно следует избегать.
Правильнее (по теории) делать таблицу комплектации и развязывать связь много-ко-многим с таблицей товаров с помощью еще одной таблицы... Но правильнее в данном случае - не значит лучше... В каждом варианте есть минусы... Связь 1 к 1 нужна для того, чтобы таблица товаров не была тяжелой... Зачем увеличивать нагружать таблицу товаров, если в основном в каталоге выводится, например, только название и цена, а цвет выводится только в полном описание... Конечно, ради одного поля не надо создавать таблицу, но если таких полей штук 10-20, то, считаю, имеет смысл создать дополнительную таблицу...
Думал я тут думал и пока что придумал реализовывать с помощью первого варианта... Теперь стоит вопрос относительно связи 1 к 1... Насколько медленнее выполняется с 1 к 1, чем просто одна таблица?
Соглашусь на все сто процентов! Если делать по другому, то вся прелесть СТРУКТУРИРОВАННОГО хранения информации сходит на нет.
Прелесть такого хранения, заключается в основном в том, что легко делать фильтры... Универсален же каталог будет в случае, если будет таблица товаров и таблица комплектаций и таблица для развязывания много ко многим... Если бы не надо было делать фильтры, то, скорее всего, остановился на варианте с развязкой много ко многим... А при структуре "Есть значение - есть параметр." - добавление новый вариантов комплектаций - геморройный