需要数据库设计建议

时间:2011-06-09 11:29:51

标签: php mysql facebook

我正在写一个Facebook应用程序。当用户添加应用程序时,我在user表中插入一条记录及其user_id和name。当用户删除此应用程序时,我删除我为该用户创建的行。这样我在我的用户表中有所有当前正在使用我的应用程序的用户。在应用程序页面的某处,我显示上次用户访问应用程序时订购的用户列表(我有一个更新的日期时间)

目前我显示按上次活动排序的所有用户。 我希望能够做的是显示按上次活动排序的此列表,但首先显示与当前用户成为朋友的用户,然后显示其余用户。

例如,如果我有3个用户:

user_id | name | last_activity
------------------------------------
1       | Foo  | 09.06.2011 09:12:00
------------------------------------
2       | Bar  | 09.06.2011 09:11:00
------------------------------------
3       | Dude | 09.06.2011 09:10:00

因此,如果当前用户ID为3且他是2的朋友,那么我希望我的列表是这样的(不包括当前用户):

- Bar
- Foo

因为即使Foo的活动比Bar更近,Bar也有优先权,因为它是当前用户的朋友。

所以任何想法我应该如何在用户之间存储这些友谊关系的最佳方式是什么,如何在新用户加入应用程序时更新它们(即用户4谁是3的朋友加入应用程序)然后热得到整个用户列表,但按此标准排序?

感谢。

1 个答案:

答案 0 :(得分:0)

将所有这些放在一个查询中会很困难,当然可以。

但我建议您选择所有朋友ID。

然后你选择每个用户OREDERed BY last_activity并在WHERE部分中加上一个约束来表示NOT IN([friends ids])。