2013-03-04 80 views
0

我正在开发一个类似Facebook的社交网站。我很困惑如何创建通知表的结构。是否应该为每个用户单独使用还是为所有用户使用一个巨大的 - 哪些地方经常添加和删除记录?用于社交网站的表格等通知的数据库表结构

+0

我已经建立信息和个人资料和照片等,桌到现在。但我对通知感到困惑。看到我认为它有两种方式 - 1.每个用户的小通知表和一张存放所有通知的巨大表格。例如。 Not_a11(id,notf_id)。通知_master(notf_id,memid,notif_text,dttime)。这样我就会一直更新两张表。每当用户登录他的桌子时都会被引用,并显示通知。你说什么 – phpDevlpr 2013-03-04 04:52:45

+0

有人回复? – phpDevlpr 2013-03-04 10:38:46

回答

2

我有同样的问题,因为你和经研究发现这个(found this)这里给出的表结构是:

id    
user_id  (int) 
activity_type (tinyint) 
source_id  (int) 
parent_id  (int) 
parent_type (tinyint) 
time   (datetime but a smaller type like int would be better) 

其中:

ACTIVITY_TYPE告诉我活动的类型,SOURCE_ID告诉我活动相关的记录。所以如果活动类型的意思是“添加最喜欢的”,那么我知道source_id是指最喜欢记录的ID。

parent_id/parent_type对我的应用程序很有用 - 他们告诉我该活动与什么有关。如果一本书收藏,然后PARENT_ID/PARENT_TYPE会告诉我该活动涉及到一本书(型)具有给定主键(id)

I指数在(USER_ID,时间)和查询活动是user_id IN(...朋友...)和时间>一些截点。开出id并选择不同的聚集索引可能是一个好主意 - 我还没有尝试过。

很基本的东西,但它的工作原理很简单,而且随着需求的变化很容易处理。另外,如果你不使用MySQL,你可能可以做更好的索引。

它还建议那里使用Redis更快地访问最近的活动。 随着Redis的中拌匀,它可能工作是这样的:

  • 创建你的MySQL活动记录
  • 对于用户的每一个朋友,谁创建活动,推动ID到在Redis的他们的活动列表。
  • 调整每个列表中的最后一个X项目

Redis的是快速和跨越一个连接提供了一种管道命令 - 所以推的活动了1000个朋友需要毫秒。

对于什么,我说什么,看到Redis的Twitter的例子更详细的解释:http://code.google.com/p/redis/wiki/TwitterAlikeExample

我希望这可以帮助你也

+0

仅给出链接参考作为答案并不好。如果链接被更改/更新/编辑/删除,答案将自动失效。所以总是试着解释答案,然后给出一个参考。 – Sankumarsingh 2013-08-20 09:59:15

+0

谢谢,将编辑这一个 – YXN 2013-08-20 10:01:44