@DmItrENub

Как сделать массив int в таблице?

Три таблицы: товары, корзины и пользователе. В пользователе есть имя и айди, в товаре тоже самое, в корзине я предполагаю сделать массив айдишников товаров(массив int), и айди пользователя, владеющего этой корзиной. Как сделать такой массив?
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 3
NikFaraday
@NikFaraday
Student full-stack Developer
Лично я бы выкинул бы отсюда Корзину, поскольку она будет просто служить ненужным этапом при доступе с юзера к товару. Я бы просто сделал Юзер и у него массив Товаров

В таблице Корзина не будет отображаться массив в привычном для вас виде (Я так понимаю, вы работаете на C#), и вообще такая штука называется внешний ключ.
Так вот, у вас на каждом Товаре должен быть настроен внешний ключ с тем же Id, что и в корзины. Когда вы будете вытягивать Корзину вместе с товарами, вы сможеет выбрать товары, у которых внешний ключ равен тому Id, что у вашей корзины

А вообще, данная связь будет выглядеть типа так:
Юзер - Корзина -> Один к одному
Корзина - Товар -> Один ко Многим
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Массив можно сделать через JSON тип. По крайней мере MariaDb его поддерживает. Может и MySQL тоже имеет.

Хранить его в пользователе я-бы не советовал. Лучше создать отдельную таблицу типа sessions или какие-то юзерские активности и складывать туда связку session_id + user_id + JSON с корзинкой. Причем добавить обязательно TTL хотя-бы на неделю. Чтоб рассеянные пользователи не заполняли мусором таблицу.
Ответ написан
Комментировать
@alexalexes
товары, корзины и пользователи

Если вы задумываетесь, а не сделать ли из какого-либо поля массив в пределах сущности в реляционной базе данных, то вы скорее всего не видите еще одну сущность, которая раскрывает содержание той сущности, в которую вы пытаетесь вставить массив.
По-хорошему, вам нужна таблица "Позиция товара в корзине":
ID - код позиции в корзине,
ADD_DATE - дата и время добавления позиции (чтобы сортировать позиции, или потом очищать старые добавления в корзину),
CART_ID - код корзины (через таблицу корзины можно выйти на USER_ID),
GOOD_ID - код товара,
QUANTITY - Количество единиц выбранного товара (если у вас разнородные размерности шт., кг, литры - то можно сделать веществ. тип).
Если сама корзина не содержит собственных свойств, то таблица корзины напрямую будет содержать ее позиции, тогда вместо CART_ID используйте USER_ID.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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