【问题标题】:Multiple values in the same column in SQLSQL中同一列中的多个值
【发布时间】:2013-01-18 19:27:58
【问题描述】:

我对 PHP 和 SQL 还很陌生。我今天花了很多时间编写一个朋友系统(几乎与 Facebook 的相同),但我不确定如何在同一列中拥有多个朋友。因此,假设用户 'admin' 有一个名为 'john' 的朋友 admin 发送测试请求并且 john 接受,他们都进入了彼此的朋友列。但是假设另一个管理员朋友向他发送了一个请求,他接受它只会用新名称覆盖“john”,因此列中只有一个值而不是 john、另一个朋友等。怎么可能不覆盖,而是继续添加到列中。

我希望这是有道理的,并在此先感谢!

【问题讨论】:

  • 多个好友在同一栏目。这不是 Facebook 的做法。请阅读normalization
  • FB 是一对多的关系。他们有一个users 表,然后,比如说,一个有两列的user_friends 表:user1id |用户 ID。非常粗略的例子。但它肯定不会将所有朋友存储在 users 表的单个列中。
  • 好的,感谢您的阅读。 Eli,我该怎么做?!谢谢

标签: php sql system friend


【解决方案1】:

您需要的是“一对多”关系。一个“人”可以与许多其他“人”成为朋友。

您将有一张名为 person 的表:

person_id | person_name
-----------------------
1 | John
2 | Frank
3 | Mary
4 | Oscar

你会有一个名为friends的一对多表:

person_id1 | person_id2
-----------------------------------
 1 | 2
 1 | 3
 2 | 3

所以,现在通过查看我们的朋友表。我们的第一个关系是约翰和弗兰克之间,他们是朋友。约翰和玛丽,弗兰克和玛丽也是如此。奥斯卡没有朋友。

【讨论】:

  • friend_id 是不必要的。您创建person_id1person_id2 的复合主键以防止重复的“友谊”
猜你喜欢
  • 2011-05-17
  • 2016-09-06
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
相关资源
最近更新 更多