@fillflip
Кодер

Как четко спроектировать БД?

Привет народ.
При проектирование своего интернет магазина, столкнулся с проблемой.
С формы записываю данные в БД (название, описание, цена). Проблема в том что этим товарам нужен цвет, а у каждого товара будет разное количество цветов и сами цвета, я создал отдельную таблицу цветов, но не знаю четкого количества столбцов(так как не знаю сколько будет цветов у товара), если столбцы прибавлять по средствам ALTER, то буду ячейки с NULL, также хочу связать таблицы цветов и товаров со связью "Многие ко Многим" и получить результат в 3-ий таблице, но опять же все упирается в то что не могу создать четко таблицу, не имея точного количества цветов.
Что предложите делать ?
Заранее Спасибо.
  • Вопрос задан
  • 216 просмотров
Пригласить эксперта
Ответы на вопрос 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
EAV

Пляшем от 5-ой нормальной формы а дальше уже оптимизации по мере необходимости.
Ответ написан
Комментировать
soshnikov
@soshnikov
Вопрос номер раз: вам необходима выборка типа "все товары красного цвета"? Если нет, тогда тупо можно пихать массив цветов конкретного товара в одно поле.
Если необходимо, тогда имеем три таблички:
Товар / ТоварИД, ЦветИД/ Цвет
Вообще, "четко" в БД бывает только когда просто, в натуре. А когда сложнее, четкость - ацтой. Приходится думать головой от задачи.
Зуб даю.
Ответ написан
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Товары
ab7c19e6cb7b431781a0f633f4422470.png
Список опций товара
5c844c4ea8b44842ae01b81c04a4f5d0.png
Связующая таблица
1147088f1d9345bbbf3585546c0bc126.png

Лично я в данный момент разрабатываю интернет магазин на Laravel, связи до банальности простые (парочка belongsToMany для опций и категорий соответственно).
Если пишите на чистом PHP / MySQL (это конечно то еще удовольствие), вот вам полученные SQL запросы:
91aceef4c49d48b89c1f313c1048fab8.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы