Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 特色帖子/特色文章等的表格结构_Mysql_Database_Database Design - Fatal编程技术网

Mysql 特色帖子/特色文章等的表格结构

Mysql 特色帖子/特色文章等的表格结构,mysql,database,database-design,Mysql,Database,Database Design,我想问一下,实现一篇特色文章或特色文章的体面方式是什么。在一些博客中,你根据自己的选择将一篇文章设置为特色文章,现有列表中的最后一篇被替换;我也希望这样做 假设我有一个名为Posts的表,表中有以下列:post_id、post_message、post_date、发布的用户、类别,即艺术、电影 我在这两个想法中进行选择,但它们可能不合适: 在同一个表上创建一列,标题为Type,值为 空的或有特征的。 在同一个表上创建一列,标题为 以值1或0为特征。 如果上面两个选项中的一个合适的话,它会带来一点

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

假设我有一个名为Posts的表,表中有以下列:post_id、post_message、post_date、发布的用户、类别,即艺术、电影

我在这两个想法中进行选择,但它们可能不合适:

在同一个表上创建一列,标题为Type,值为 空的或有特征的。 在同一个表上创建一列,标题为 以值1或0为特征。
如果上面两个选项中的一个合适的话,它会带来一点进退两难的情况,因为可能会有这样一种情况:我希望旧文章在特色列表中占据第一位,而不是新文章。如果是这样,当我将它们设置为特色时,创建另一列来跟踪日期和时间是否有意义?接下来,我只会将旧文章再次精选或最后精选放在列表的顶部。

这两种方法都不推荐

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


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

适当是主观的,但如果您想快速简便地做到这一点,您可以在posts表中使用另一个名为featured_order的属性,该属性将是一个整数,然后您可以根据post是否为featured_order属性进行查询,并按featured_order属性进行排序

比如:

从'posts'中选择*,其中'featured`=1,由'featured_ORDER'ASC排序

请注意,您的订单应该可以为空

然后,您可以将较旧的帖子设置为较低的精选顺序,而较新的帖子也具有精选顺序,但具有较高的精选顺序值

希望这是有道理的


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

两者都不-制作另一个表

此表将有一个到特色文章的链接,加上订购信息,但没有其他内容

这样,所有的特征操作都在这个额外的表中,并且只在这个额外的表中