我想问一下,实现特色文章或特色文章的好方法是什么。在一些博客中,你根据自己的选择将帖子设置为特色,现有列表中的最后一个会被替换;我也希望这样做。
假设我有一个名为Posts的表,包含以下列:post_id、post_message、post_date、user_who_posted、category(即Art、Film(。
我在这两个想法之间做出选择,但它们可能不合适:
- 在同一个表上创建一个名为"Type"的列,其值为Null或特色
- 在同一个表上创建一列,标题为值为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"的操作都在这个额外的表中,并且只在这个额外表中。