固定帖子建模:在“帖子”表中具有固定标志列VS具有pinned_posts表

时间:2019-05-06 03:37:47

标签: mysql ruby-on-rails database database-performance

上下文

我已经在Rails中实现了一个基本的发布系统,因此,我有一个带有以下列的“发布”表:id,user_id,body,created_at,updated_at。

我想使用户能够固定他们的帖子(一次只能发送一个帖子,因此具有has_one关系)

问题

我看到两种实现方法:

  • 在“帖子”表内添加“固定”布尔列
  • 添加带有以下列的“ pinned_posts”表:id,user_id,post_id,created_at,updated_at

以上两种方式的优缺点是什么?

1 个答案:

答案 0 :(得分:0)

由于您限制每个用户发表一篇帖子,因此可以在post_id表中填写NULL或在Users表中填写Users

这将强制执行“每用户1条”规则,并且(可能)将开销降至最低。

您还没有说固定帖子会发生什么;可能还有其他问题。您是否需要查找所有固定的帖子(需要对Int64Index: 125 entries, 0 to 124 Data columns (total 5 columns): Player 125 non-null object PTS 125 non-null int64 Value 125 non-null object FG 125 non-null int64 dtypes: int64(2), object(3) 进行昂贵的扫描)?显示用户信息时是否要标记特定帖子? (那将非常有效率。)

我可以建议您学习一些数据库基础知识;第三方软件(在这种情况下为“ R”)不能真正使程序员脱离数据库概念。