Нужно ли отделять записи в таблице "Товары в Корзине", если да то как лучше это сделать?

Из-за неопытности не знаю как поступить, я пока на этапе проектрировки базы данных.
Есть база данных Магазин, в ней есть 6 таблиц:

  • Поставщик
  • Товар
  • Клиент
  • Сотрудник
  • Товар
  • Товар в корзине
  • Заказ

    1

Я думаю что при такой модели базы записи в таблице Товары в корзине будут смешиватся из разных заказов что будет не очень лицеприятно, а именно:
2

В данном случае в таблице две корзины 1 и 2, а также то что они находятся в одной таблице это нормально?
Или же можно сделать куда грамотнее?


Ответы (1 шт):

Автор решения: Faraday

Товар и корзину можно сконфигурировать как связь много-ко-многим. В таком случае, у вас сохранится таблица Товары в Корзине, но придётся сделать ещё таблицу Корзина, которую нужно будет прикрепить к Клиенту как один-к-одному, так что сразу опустим это. В итоге у вас получится примерно вот такая связь: Товар -> Товары в Корзине -> Клиент. Таблица Товары в Корзине будет иметь Внешний ключ на две другие таблицы (Аналогично связи один-ко-многим относительны других таблиц), а первичный ключ таблицы Товары в Корзине будет представлен уникальной комбинацией Внешних ключей на две другие таблиц.

Чем это надо? Это больше вопрос бизнес-логики вашего приложения, как стоит кнфигурировать связь между корзиной и товаром, считается ли его количество, или у вас каждый товар это отдельная запись в БД? Но в этом случае, логика будет такая, что один товар сможет находиться во многих корзинах И в одной корзине может быть много товаров, НО вы не сможете положить один и тот же товар в одну корзину. Это обусловлено тем, что первичный ключ этой связи будет учитывать, какой товар у вас уже был положен в указанную корзину, значит, у вас не может быть двух одинаковых первичных ключей

→ Ссылка