Как лучше спроектировать БД (условия ниже)?

Тема в разделе "Базы данных", создана пользователем dandandan, 2 май 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    991
    Симпатии:
    267
    Необходимо сделать cms для сайта - магазина. Сейчас используется трехуровневое меню и следующий, четвертый уровень это описание конкретного товара
    Код:
    ВАЗ
        2108
        2109
        21099
        2110
              Бампер передний
              Капот
        2111
        2112
    ГАЗ
    
    Проблема в том, что некоторые товары принадлежат сразу нескольким позициям сайта: НАпример есть Бампер передний. Он может сразу принадлежать ваз 2108 и 2109 и 21099. Как лучше всего сделать привязку сразу к трем товарам, чтобы не хранить в БД излишки данных. Можно конечно тупо создать три разных странички. Что скажете?:)
     
  2. MadWizard

    MadWizard Постоялец

    Регистр.:
    24 мар 2009
    Сообщения:
    145
    Симпатии:
    20
    Создать промежуточную таблицу, в ней хранить соответствия многие-ко-многим.
    Например, таблицу PartToCars, в ней поля
    id
    idCar - идентификатор модели
    idPart - идентификатор запчасти

    Соответственно, для бампера из описания будут 3 строки.
     
    dandandan нравится это.
  3. worldx

    worldx Создатель

    Регистр.:
    12 май 2008
    Сообщения:
    20
    Симпатии:
    2
    Я обычно делаю поле типа char или text, и через запятую.
     
  4. SiMM

    SiMM Создатель

    Регистр.:
    8 фев 2009
    Сообщения:
    41
    Симпатии:
    6
    С учётом того, что пара idCar-idPart уникальна - id нафиг ненужен.
     
  5. MadWizard

    MadWizard Постоялец

    Регистр.:
    24 мар 2009
    Сообщения:
    145
    Симпатии:
    20
    Возможно и так, зависит от функционала. Я бы оставил, к примеру, на этот id могут ссылаться из других таблиц, если база более-менее большая.
     
  6. ToleaNus

    ToleaNus Писатель

    Регистр.:
    19 авг 2008
    Сообщения:
    4
    Симпатии:
    0
    я также далаю и потом запросы не лехкие получаются
     
  7. Acden

    Acden

    Регистр.:
    12 янв 2008
    Сообщения:
    200
    Симпатии:
    12
    В MsSQL такое решалось просто.
    А вот с MySQL столкнулся с такой задачей первый раз. Решил тоже через промежуточную таблицу. И тоже убрал id, т.к. он избыточен, данные итак уникальны.
     
    dandandan нравится это.
  8. kr0lik1

    kr0lik1 Создатель

    Регистр.:
    13 июн 2007
    Сообщения:
    28
    Симпатии:
    3
    Я бы не ограничивал количество уровней. И сделал в таблице с разделами столбец "Id родителя" т.е. тот раздел в который входит данный. И тогда меню будет без ограничений по вложенности.
     
  9. newd

    newd Создатель

    Регистр.:
    13 ноя 2007
    Сообщения:
    46
    Симпатии:
    4
    могу посоветовать удобную софтину для проектирования - DBDesigner 4 hxxp://www.fabforce.net/dbdesigner4/
    Я в ней уже пару лет рисую базы
     
    dandandan нравится это.
  10. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    991
    Симпатии:
    267
    Мне тоже первоначально показалось, что id избыточен. И я делал ссылки в других таблица на уникальные данные, но не на id. В результате при обновлении какого-нибудь меню, пришлось обновлять все подменюшки. Переделал на работу с id.
     
Статус темы:
Закрыта.