Вариант 1. Вы правы.
Если вы используете вариант 2, вы пожалеете.Это денормализовано .Обновление этих разделенных запятыми списков значений itemID невероятно сложно.Вам придется использовать транзакции, чтобы прочитать строку значения, изменить ее и записать обратно.
Кроме того, вариант 1 может использовать индексы базы данных для гораздо более эффективного поиска.Спросите своего друга, как вы найдете всех пользователей с itemId = 15. Попросите его написать этот запрос для вас.С опцией 1 вы можете использовать
SELECT UserId
FROM tbl
WHERE ItemId = 15
. Вы можете использовать запрос для генерации опции 2 для отображения.Дисплей - это все, для чего он хорош.
SELECT UserId, GROUP_CONCAT(DISTINCT ItemId ORDER BY ItemID) ItemId
FROM linktable
GROUP BY UserId