Я пытаюсь сохранить массив/набор уникальных элементов в ячейке MySQL. Это будет выглядеть следующим образом:
user_id liked_friends_id
1 [3,6,4]
2 [1,2,4]
Здесь loved_friends_id - это массив/набор, в котором хранятся все уникальные идентификаторы.
Есть ли способ его реализовать? Как я могу реализовать нажатие на массив/набор при одновременном применении уникальных элементов массива.
Не храните данные CSV в таблице MySQL. В отличие от базы данных, такой как Postgres, MySQL не имеет типа массива. Вместо этого сохраните каждое отношение "пользователь-друг" в одной записи:
user_id liked_friends_id
1 3
1 6
1 4
2 1
2 2
2 4
Исходя из этого, ваша база данных относительно нормализована. Если вы хотите, чтобы вы не сохраняли дублированные отношения между пользователями и друзьями, добавьте уникальное ограничение для этих двух столбцов:
ALTER TABLE friends ADD UNIQUE unq_idx (user_id, liked_friends_id)
Возможно, вы могли бы подумать над своей схемой, чтобы проверить, действительно ли вы хотите сохранить liked_friends_id
в той же таблице. Вы можете разбить его на другую таблицу с каждым liked friends id
как внешним ограничением на первичный ключ user_id
. Таким образом, вы можете обеспечить уникальность через MySQL.
Другой способ сделать это - сериализовать массив и сохранить его как varchar
если вы используете PHP/Java/.. для обработки запросов. В этом случае вам нужно будет обеспечить уникальность с помощью языка программирования.