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