database-design - 好友列表 : Relational Database Table Design

标签 database-design relational-database join

所以,好友列表的现代概念:
假设我们有一个名为 Person 的表。现在,那个 Person 需要有很多伙伴(其中每个伙伴也在 person 类中)。构建关系的最明显方法是通过连接表。 即

buddyID   person1_id   person2_id
0         1            2
1         3            6

但是,当用户想要查看他们的好友列表时,程序必须检查“person1_id”和“person2_id”列以找到他们所有的好友。

这是实现这种表的合适方法吗,还是将记录添加两次会更好......即

buddyID   person1_id   person2_id
0         1            2
1         2            1

因此只需搜索一列。

提前致谢。

最佳答案

这里有几种可能的情况。

首先你需要确定好友关系是否可以是单向的。如果 B 不是 A 的好友,A 可以成为 B 的好友吗?我假设不会,但值得明确说明。

常识会建议您查询多于更新关系。因此,为此优化您的数据。创建好友关系时,创建两个记录:A 到 B 和 B 到 A。这将使查询变得微不足道。所以是的,按照您已经考虑的那样使用这两个记录。

关于database-design - 好友列表 : Relational Database Table Design,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3058281/

相关文章:

Mysql order by on column with unicode characters

mysql - 完全外连接 mySQL - 缺少行

mysql - 我的表需要更多规范化吗?

mysql - 根据条件连接两个表以及第二个表中的记录数

linq - LINQ Lambda Join错误-无法从使用情况推断出

mysql - 按日、周、月、年保存统计数据的数据库结构

mysql - "Invalid Default Value"mssql 到 MySql 迁移工具

mysql - 连接两个表并计算每个学生的分数总和

sql - 包含 View 的模式可视化工具(适用于 Oracle)

mysql - 同一表的主键列表以逗号分隔,如何管理这样的m​​ysql表?