在 sql 中存储技术

storing technique in sql

我有一个群组,其中有用户, 我应该如何将它们存储在数据库中?

  1. 我想到的一种方法是将所有组存储在一个主 table 中,将用户存储在包含所有组用户的次要 table 中,但缺点是我需要为每个组打开一个table。

  2. 另一种方法是使用类似 json 的格式将用户存储在主组 table 的用户列中。

  3. 另一种方法是使用 2 tables 一个用于组,另一个用于保存列:组、用户。但在这种格式中,我担心会有很多重复的数据,我想提高效率。

例如:

用户[用户 1、用户 2、用户 3]

组[组 1、组 2、组 3]

在 group1 中,user1 和 user2 是成员。

感谢您的阅读和帮助!

您需要三个 table:
1) table 为您的小组
2) table 为您的用户
3) table 与两列的 n:m 关系:group_id 和 user_id

规范的、正确的SQL方式是您的第三个建议,用户和组之间的n:m映射table。这并没有什么低效的,而且你不会在那里有重复的数据。 (只需确保在 (group_id, user_id) 元组上设置唯一约束。)

拥有 table 也将使查询变得微不足道,例如用户所属的所有组,或组列表中的所有用户等。