全球通知的数据库设计

时间:2012-08-13 09:10:32

标签: php mysql

我有一个通知系统,其中有各种类型的“评论”,“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

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

所有通知都会持续30天,还要记住,如果用户有超过200个朋友,那么在数组中存储200个ID,然后检索它并打破阵列然后显示它们(注意一个长程序)根据我)。

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

1 个答案:

答案 0 :(得分:5)

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