如何在MySQL单元中存储一组唯一数字/数组

时间:2018-03-04 07:56:03

标签: mysql

我试图在MySQL单元格中存储一个数组/一组唯一元素。它将类似于:

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

此处 likes_friends_id 是一个存储所有唯一ID的数组/集。

有没有办法实现它? 如何在强制执行唯一数组元素的同时实现对数组/集的推送。

2 个答案:

答案 0 :(得分:2)

不要在您的MySQL表格中存储CSV数据。与像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 :(得分:1)

也许您可以重新考虑您的架构,以检查您是否确实要将liked_friends_id存储在同一个表中。您可以将其拆分为另一个表,每个liked friends id作为主键user_id的外部约束。这样,您就可以通过MySQL本身强制实现唯一性。

另一种方法是序列化数组并将其存储为varchar如果您正在使用PHP / Java / ..来处理查询。在这种情况下,您必须通过编程语言强制执行唯一性。