0

我正在尝试为我的网站制作通知系统:

这是表结构

notification
-----------------
id (pk)
userid
notification_type (for complexity like notifications for pictures, videos, apps etc.)
notification
time


notificationsRead
--------------------
id (pk) (i dont think this field is required, anyways)
lasttime_read
userid

现在我的理解是,当添加通知时,我们需要找到用户朋友并将所有这些行插入notification表中,对吗?如果这是正确的,那么实现这一目标的最佳方法是什么?

  1. 触发器?
  2. 写T-SQL(服务器端的sql查询)选择所有朋友然后使用SQL批量复制?
4

1 回答 1

0

一个好的关系方法是设置您的表,以便您有一个人员表。每个人都有一个唯一标识他们的主键。然后另一个表将 peoplekeys 链接在一起作为朋友。有几种方法可以解决这个问题,但作为一个粗略的例子:

People
---------------------------------------
PeopleKey | Name | <other profile data>

然后你有一个表,将人们作为朋友相互关联。

Friendships
----------------------------------------------------------------------
PeopleKey |  FriendKey (fk to peoplekey) |  <details about friendship>

然后你有你的通知表,上面写着一个人做了某事。

Notification
-----------------------------------------------------------
NotificationKey | PeopleKey | Date | <notification details>

通过查询和您的友谊关系,您可以获得一个人所有朋友的所有通知:

select notification.* from notification inner join 
friendships on friendships.peoplekey = notification.peoplekey
where date = @importantdate 

这种关系可以揭示很多,而无需存储重复数据。还有 1000 种其他方法可以加入、查询或将表链接到友谊和事件。例如,您可以说显示 peoplekey 是我的朋友之一的所有事件。显示 peoplekey 只是我的一个朋友等的所有事件等等等等。

于 2013-04-03T22:15:26.507 回答