应用运行于:ruby 2.0
、rails 4
和 postgresql
1.多表的故事 - 现在如何运作:
一个项目
有很多用户
,作为成员
。
此外 project
有许多 posts
,当创建一个 post
时,为每个 创建一个
。 notification
>项目用户
假设如果项目 A 有 100 个用户,我们将在数据库中有 100 个通知,这将加载数据库很多重复项。
但是用户可以删除自己的通知,可以查看它,我们可以用用户特定的数据更新他的通知。我们将使用 rake 任务 删除比特定时间间隔早的通知。
<强>2。多个数据库查询 - 我们想要做什么:
有一个想法,即为一个事件创建一个通知,并使用一个名为notifications_users
的表,我们在其中使用多对多关系如果当前用户阅读了通知,如果该用户从他的通知选项卡中删除了该通知等,则会保留有关通知的信息。
我认为这样做的缺点是多个数据库查询,因为当我们需要查找有关通知和用户的信息时,我们将不得不查找 notification_users
表以获取需要的信息。
另外,通过这种方式建立关系,将更难从旧通知中清理数据库,因为我们不知道该通知是否已被某些用户读取。
谢谢。
最佳答案
选项 (1.) 似乎很合理,如果您可以保持通知模型精简 — 例如 user_id、activity_id、时间戳,以及可能还有几个标志,那么就不会期望不合理的性能损失,因为它看起来像非常普通的关系模型,我希望数据库能够轻松处理它。
如果您让通知过期时间紧迫,这意味着通知不应增长,或者如果它增长,例如当用户刚刚放弃帐户时,我会寻找针对问题的具体解决方案,如出现的那样。
在 Assembla.com我们通过电子邮件进行通知,这对我们来说效果很好,我想说。因此,也许在某个时候,您可能也想考虑这个选项。
在我看来,(2.) 不能满足业务需求,如果您不考虑它们,那么可能也不值得考虑这个选项。
关于ruby-on-rails - 表中的多个数据库记录与数据库查询?什么是最好的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17789134/