5

我想创建一个朋友系统(类似于 facebook)。

我想在MySql中保存关系数据,但不知道哪种方式更好:

  1. 将每一个关系保存为一个条目,例如:

    id | people1 | people2
    1  | john    | maria
    2  | john    | fred
    3  | maria   | fred
    

    (我宣布这三个人之间的关系)

  2. 要保存每个人的姓名并列出他的朋友:

    id | people | friends
    1  | fred   | mary, john
    2  | mary   | john, fred
    3  | john   | fred, mary
    

或者也许有更好的方法?

4

2 回答 2

11

不亲爱的,

你只需要一张桌子来建立朋友关系。结构如下我用过

id(主键) | my_id( 整数登录用户 id ) | friend_id (另一个用户的整数用户ID,他将收到来自登录用户的好友请求)

就像我们的用户表中有两个用户,那么我们有两个条目供两个用户相互建立关系

id | name | age
1  | vipan | 12
2  | karan | 12

那么条目应该是

id | my_id | friend_id
 1     1        2
 2     2        1

请不要在任何情况下投反对票,但我在我的网站中使用了这个表结构,这与 joomsocial 中使用的结构相同,这是我认为最好的表结构,所以我使用它,请不要在表中使用逗号分隔值他们在某些情况下会导致连接和关系出现问题

请参阅以下帖子链接中的 4 号评论

从 mysql 表中分隔逗号分隔值

于 2012-10-22T12:46:05.447 回答
4

第一个无疑是最好的,因为第二个不会尊重第一个范式

您必须避免在同一列中有多个值,因为编辑起来会很痛苦

是关于数据库规范化的链接。大多数时候,我们尊重第三范式,因为它是规范化和性能之间的良好折衷。

此外,就像 Randy 所说,您必须使用 ID,然后才能将它们与外键链接。

于 2012-10-22T12:46:40.447 回答