专题帖子/专题文章等的表格结构



我想问一下,实现特色文章或特色文章的好方法是什么。在一些博客中,你根据自己的选择将帖子设置为特色,现有列表中的最后一个会被替换;我也希望这样做。

假设我有一个名为Posts的表,包含以下列:post_id、post_message、post_date、user_who_posted、category(即Art、Film(。

我在这两个想法之间做出选择,但它们可能不合适:

  1. 在同一个表上创建一个名为"Type"的列,其值为Null或特色
  2. 在同一个表上创建一列,标题为值为1或0的"特色">

如果上面两篇文章中的一篇合适,它会有点进退两难,因为在这种情况下,我可能希望一篇旧的文章比新的文章位于特色列表的第一位。如果是这样的话,当我将它们设置为特色时,创建另一个列来跟踪日期和时间是否有意义?会发生的事情是,我只会把旧的文章放在列表的顶部,或者放在最后。

不推荐使用这两种方法。

如果创建一个名为Type的列,它将是不明确的,并且值很难跟踪
如果创建一个名为Featured的列,则该列具有定义明确的含义,但值不是很有用。为什么选择0或1?

在这种需求中,最好的选择是创建一个类型为Datetime的名为Featured的列,并使其可以为null。如果该值为NULL,那么您就知道该帖子没有特色。如果有多个帖子,则只能显示最近发布的帖子。如果你需要把一个旧的特色帖子放在上面,只需给它一个新的日期。

"适当"是主观的,但如果您想要一种快速简单的方法,您可以在posts表中有另一个名为featured_order的属性,它将是一个整数,然后您可以根据post是否为featured进行查询,并按featured_order属性排序。

类似于:

SELECT * FROM `posts` WHERE `featured` = 1 ORDER BY `featured_order` ASC;

请注意,featured_order应该可以为null。

然后,您可以将较旧的帖子设置为featured_order低于新帖子,后者也具有功能,但具有较高的featured_order值。

希望这是有道理的。

对于这种类型的功能,我更喜欢整数的原因是(对我们人类来说(与DATETIME属性相比,更容易确定顺序中哪个更高/更低,并且设置顺序也更容易。

两者都不——制作另一个表。

这张表将有一个链接到特色文章,加上订购信息,但没有太多其他信息。

这样,所有对"featured"的操作都在这个额外的表中,并且只在这个额外表中。

最新更新