【发布时间】:2010-11-07 12:08:25
【问题描述】:
如果您想提醒用户某事(关于新功能、即将举行的活动、特别优惠等的一次性笔记),最好的方法是什么?
我主要关心数据表示,但如果还有更多需要考虑的问题,请指出。这是我第一次处理这个特殊问题。
到目前为止我的想法......
您可以有一个用户、一条消息和一个已查看/已确认消息表。当用户确认消息时,我们在 seen 表中有一个新条目,其中包含用户 ID 和消息 ID 对。
但是,seen 表会随着用户和消息数量的增加而迅速增长。在某些时候,这会变得笨拙(任何洞察力何时适用于单个服务器上的单个 mysql 数据库?)。
最好只为每条消息创建 1 个可见的表,然后以 20-30 个这样的额外表开始?真的不是问题。它只是带来了每次有新消息时都必须创建一个新表的额外麻烦(当然,这将在代码中自动执行 - 仍然需要更多编码)。
这是一个拥有 2-3K 当前用户的项目,但希望在明年将其增长到 10K,当然,我们也在考虑超越这一点......
编辑: 我对目前投票最多的方法一点也不感兴趣。 该提议似乎是预填充消息表并删除看到的消息。这似乎是更多的工作。每次添加新消息时,您不仅需要添加整个用户列表。每次添加新用户时,您还必须为新用户添加所有消息 - 单独的逻辑。
除此之外,消息被“看到”的记录实际上是没有记录。这似乎不对。另外,如果您以后决定使用简单的时间戳来跟踪何时看到消息。您必须重写大量代码,而其他代码变得无法使用。
最后,有人能告诉我为什么将新表添加到数据库中是如此可怕吗?添加新功能时,这不是一直发生吗?以任何 CMS 为例:Joomla 或 Wordpress。添加新插件时,您正在动态创建表。因此,它必须比“不这样做”更加细致入微和上下文。有哪些陷阱,在哪些情况下不做或可以做?
我知道您可能会说:在生产服务器上创建新表时要小心。确保它已经过很好的测试,但最终你只是添加了一个空表。
这可能需要和扩展答案,所以如果有人知道任何文章,请发布它们。
编辑: Gabriel Sosa 给出了他的消息表的一个很好的刷新示例,我将简单地创建一个类似于我最初发布的可见表,尽管也带有时间戳列。谢谢!
【问题讨论】: