За последние 24 часа нас посетили 17428 программистов и 1255 роботов. Сейчас ищут 1652 программиста ...

БД каталога

Тема в разделе "PHP и базы данных", создана пользователем kagerr, 10 июл 2008.

  1. kagerr

    kagerr Активный пользователь

    С нами с:
    20 май 2008
    Сообщения:
    17
    Симпатии:
    0
    Здравствуйте, возник тут вопросик... Как лучше вариант БД подходит для каталога?
    Первый вариант правильный по теории:
    Есть таблица моделей, таблица комплектаций и связывающая их таблица, но в этом случае получается, что таблица, которая нужна для развязки много ко многим - будет очень большая... Например, если есть 2000 товаров и 20 возможных комплектаций, то связывающая таблица может доходить до 40000 записей...
    Ну второй вариант тупее в плане теории,но, вполне возможно, более быстрый:
    Есть таблица моделей, где описаны основные данные о модели, например, цена. Есть вторая таблица, связанная с моделями один-к-одному, где находятся менее важные данные о комплектации... И есть таблица, где хранятся название полей по русски (для нормального вывода в каталог), например, price-цена, color-цвет модели.
    Мне почему-то кажется, что второй вариант будет работать быстрее... Механизм добавления комплектации в первом варианте, конечно, легче и работа с ней удобнее, но второй вариант, на мой взгляд, удобнее тем, что легче делать мудреные фильтры, да и вообще, думаю, что время на обработку одного и того же запроса будет меньше...
    У кого-нить есть соображения по этому поводу? Может имеется другой вариант организации БД?
     
  2. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    kagerr
    Мои 5 копеек - параметры (цена, цвет, прочее) должны быть разнесены по разным полям таблицы. Есть значение - есть параметр. Нет значения (NULL) - параметр не нужен. Понимаю, что таблица здорово растянется по горизонтали, и что при добавлении новых параметров придется менять структуру таблицы (добавлять поля), но... так правильнее :)

    Связей 1-1 точно следует избегать.
     
  3. kagerr

    kagerr Активный пользователь

    С нами с:
    20 май 2008
    Сообщения:
    17
    Симпатии:
    0
    Правильнее (по теории) делать таблицу комплектации и развязывать связь много-ко-многим с таблицей товаров с помощью еще одной таблицы...
    Но правильнее в данном случае - не значит лучше...
    В каждом варианте есть минусы...
    Связь 1 к 1 нужна для того, чтобы таблица товаров не была тяжелой...
    Зачем увеличивать нагружать таблицу товаров, если в основном в каталоге выводится, например, только название и цена, а цвет выводится только в полном описание... Конечно, ради одного поля не надо создавать таблицу, но если таких полей штук 10-20, то, считаю, имеет смысл создать дополнительную таблицу...
     
  4. kagerr

    kagerr Активный пользователь

    С нами с:
    20 май 2008
    Сообщения:
    17
    Симпатии:
    0
    Думал я тут думал и пока что придумал реализовывать с помощью первого варианта... Теперь стоит вопрос относительно связи 1 к 1... Насколько медленнее выполняется с 1 к 1, чем просто одна таблица?
     
  5. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    kagerr
    Намного.
     
  6. Cron

    Cron Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    Соглашусь на все сто процентов! Если делать по другому, то вся прелесть СТРУКТУРИРОВАННОГО хранения информации сходит на нет.
     
  7. kagerr

    kagerr Активный пользователь

    С нами с:
    20 май 2008
    Сообщения:
    17
    Симпатии:
    0
    Прелесть такого хранения, заключается в основном в том, что легко делать фильтры...
    Универсален же каталог будет в случае, если будет таблица товаров и таблица комплектаций и таблица для развязывания много ко многим...
    Если бы не надо было делать фильтры, то, скорее всего, остановился на варианте с развязкой много ко многим...
    А при структуре "Есть значение - есть параметр." - добавление новый вариантов комплектаций - геморройный