在 sql 中存储技术
storing technique in sql
我有一个群组,其中有用户,
我应该如何将它们存储在数据库中?
我想到的一种方法是将所有组存储在一个主 table 中,将用户存储在包含所有组用户的次要 table 中,但缺点是我需要为每个组打开一个table。
另一种方法是使用类似 json 的格式将用户存储在主组 table 的用户列中。
另一种方法是使用 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 也将使查询变得微不足道,例如用户所属的所有组,或组列表中的所有用户等。
我有一个群组,其中有用户, 我应该如何将它们存储在数据库中?
我想到的一种方法是将所有组存储在一个主 table 中,将用户存储在包含所有组用户的次要 table 中,但缺点是我需要为每个组打开一个table。
另一种方法是使用类似 json 的格式将用户存储在主组 table 的用户列中。
另一种方法是使用 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 也将使查询变得微不足道,例如用户所属的所有组,或组列表中的所有用户等。