【发布时间】:2012-08-13 17:46:25
【问题描述】:
我一直在做一个社交网站。这里一个用户请求另一个用户成为他的朋友(朋友请求)。我想到了一个“朋友”表,看起来像
Table Name: Friends
Coloumns :
User1 - Int - FK
User2 - Int - FK
Request - Enum('0','1')
Time - DateTime
PK - (User1, User2)
在请求字段中,当用户 1 向用户 2 提出请求时,存储“0”,当用户 2 批准请求时,存储“1”。
当我想检索用户的所有朋友时,就会出现问题。我每次都必须检查请求字段是“0”还是“1”。还有其他方法吗?如果我有另一个存储 Friend 请求的所有详细信息的表会更好吗?
【问题讨论】:
-
为什么会出现这个问题?只要您将请求字段编入索引,就不应如此。像
SELECT * FROM friends WHERE User1 = XX and Request = 1这样的查询应该没问题。 -
@MikeBrant 如果 User1 是 User2 的朋友,那么 User2 也是 User1 的朋友。因此查询将变为
SELECT * FROM friends WHERE (User1 = XX or User2 = XX ) and Request = 1。会不会很复杂?