Как сохранить набор / массив уникальных чисел в ячейке MySQL

0

Я пытаюсь сохранить массив/набор уникальных элементов в ячейке MySQL. Это будет выглядеть следующим образом:

user_id     liked_friends_id
  1            [3,6,4]
  2            [1,2,4] 

Здесь loved_friends_id - это массив/набор, в котором хранятся все уникальные идентификаторы.

Есть ли способ его реализовать? Как я могу реализовать нажатие на массив/набор при одновременном применении уникальных элементов массива.

Теги:

2 ответа

2

Не храните данные 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)
1

Возможно, вы могли бы подумать над своей схемой, чтобы проверить, действительно ли вы хотите сохранить liked_friends_id в той же таблице. Вы можете разбить его на другую таблицу с каждым liked friends id как внешним ограничением на первичный ключ user_id. Таким образом, вы можете обеспечить уникальность через MySQL.

Другой способ сделать это - сериализовать массив и сохранить его как varchar если вы используете PHP/Java/.. для обработки запросов. В этом случае вам нужно будет обеспечить уникальность с помощью языка программирования.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню