mysql好友系统、索引、外键、主键

标签 mysql indexing foreign-keys

我正在为我的网站制作一个 friend 系统。我正在考虑只制作 2 行,在每行上添加一个索引,并将它们作为 usersid 列的外键。如果其中任何一个用户被删除,我希望将它们删除。然后每个用户都会有一条记录。

user_id
friend_id
  1. 问题:您认为有什么理由需要包含主键吗?

  2. 问题:将外键设置为级联时,外键是否会按上述方式发挥作用?

如果您有任何其他建议或专栏建议,我也想听听(:(我不需要知道友谊何时开始)

谢谢!

最佳答案

您绝对需要一个主键。在这种情况下,最好在两列上使用复合主键。如果没有它,您的查询将比应有的速度慢得多,并且您将无法强制好友对的唯一性。

您应该考虑的另一件事是 friend 关系是单向关系还是双向关系。换句话说,您是否需要能够在任一方向查找好友关系(从任一用户开始)。如果是这样,您可能需要为每个 friend 关系在该表中插入两行。

关于级联删除,您需要确保在两列上都设置了这样的级联,以便在用户表中删除用户时,它将删除该用户所在关系表中的所有行用户或 friend 。

关于mysql好友系统、索引、外键、主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16423199/

相关文章:

php - 如何在数组元素的最后一个实例之后输出小计

Python文件索引和搜索

Ruby - 带索引的数组

c# - 当我有外键和唯一约束时,如何在 LINQ to SQL 中插入?

mysql - CAKEPHP 外键约束 - 调试显示正确的值

mysql - 此查询获取消息的最佳索引

mysql - 检查日期列是否在某个时间段内,这取决于另一个日期列

mysql - 如何使用 SQL 将小时范围转换为总小时数?

python - 在 Python 中, Pandas 。如何通过 WOM - 'Week of the Month' 对数据框进行子集化?

mysql - sql : cannot drop foreign key due to auto-generated constraint