Нужно ли отделять записи в таблице "Товары в Корзине", если да то как лучше это сделать?
Из-за неопытности не знаю как поступить, я пока на этапе проектрировки базы данных.
Есть база данных Магазин, в ней есть 6 таблиц:
- Поставщик
- Товар
- Клиент
- Сотрудник
- Товар
- Товар в корзине
- Заказ

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

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