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

时间:2013-05-07 15:42:11

标签: mysql indexing foreign-keys

我正在为我的网站建立一个朋友系统。我想只制作2行,在每个行上添加一个索引,并将它们作为usersid列的外键。如果删除了其中一个用户,我希望删除它们。然后会有每个用户的记录。

user_id
friend_id
  1. 问题:您是否认为有任何理由要包含主键?

  2. 问题:将外键设置为级联时,外键是否会起作用?

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

    三江源!

1 个答案:

答案 0 :(得分:1)

绝对需要主键。在这种情况下,最好在两列上使用复合主键。没有它,你的查询将比它们应该慢很多,你将无法强制执行朋友对的唯一性。

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

关于级联删除,您需要确保在两个列上设置这样的级联,以便在users表中删除用户,它将删除该用户所在的关系表中的所有行无论是用户还是朋友。