2012-08-13 79 views
1

我有一个通知系统,其中有各种类型的“评论”,“product_added”等,也有许多用户。全球通知数据库设计

基于用户的朋友会看到通过用户或他/她的朋友进行的操作发出的通知。事情是,我要保持它的朋友已经阅读通知或没有记录,我已经在我已经存储了一个表:

notification_id,  
type_id , 
item_id , 
user_id , 
owner_user_id , 
is_seen, 
time_stamp, 
title_html, 
title_text, 
body_html, 
body_text, 
href, 
icon_url 

我应该使用数组来存储所有的朋友的ID谁看到is_seen中的通知,还是应该创建一个名为notification_seen的新表,其中我保留了每个看到该通知的朋友的记录?

所有通知将持续长达30天,并且还必须记住,如果用户拥有多于200个朋友,则将200个ID保存在一个数组中,然后检索它并打破数组,然后显示它们(插入一个长根据我的程序)。

那么,任何人都可以建议哪一个是更好的方式或更好的方式,我不知道?

+1

您可以使用每x天运行一次的cron作业(PHP脚本)删除大于30天的通知。 – 2012-08-13 09:22:42

+0

cron工作的任何gud tuts?从未使用过 – 2012-08-13 09:38:49

+1

Cron作业是针对linux的,对于windows而言,它被称为任务调度。有关cron的更多信息:http://www.unixsurgeon.com/kb/cron-job-tutorial.html,关于windows schedular的更多信息:http://superuser.com/questions/80291/run-script-on-windows -every-n-minutes – 2012-08-13 09:46:18

回答

5

使用单独的表格。关系数据库中的数组总是一个坏主意,因为如果没有用户定义的函数或查询中的复杂表达式,就无法将数据库操作和查询应用于单个数组元素。而且它也不符合规范化范式。

+0

感谢@ALEX我以同样的方式思考。数组会导致遵守标准化范例 – 2012-08-13 09:39:55