Database design 一种在大表中标记特殊行的方法

Database design 一种在大表中标记特殊行的方法,database-design,Database Design,上下文:SQL Server 2008,ASP.NET MVC 2.0 我有一个表,列出了论坛的主题 |TopicId|Subject|Author|Views|LastUpdate| 我有一个特别的论坛主题,我用它作为主页新闻列表。这样,来自该论坛主题的消息被列为新闻 现在我需要指出哪个论坛主题是新闻 以下是一些选项: 添加另一个名为| IsNewsForumTopic |的专栏,但这感觉有些过分,因为其他10000个论坛主题总是将其设置为false 将新闻论坛主题存储在web.config

上下文:SQL Server 2008,ASP.NET MVC 2.0

我有一个表,列出了论坛的主题

|TopicId|Subject|Author|Views|LastUpdate|
我有一个特别的论坛主题,我用它作为主页新闻列表。这样,来自该论坛主题的消息被列为新闻

现在我需要指出哪个论坛主题是新闻

以下是一些选项:

添加另一个名为| IsNewsForumTopic |的专栏,但这感觉有些过分,因为其他10000个论坛主题总是将其设置为false

将新闻论坛主题存储在web.config中,并根据您不喜欢的方法进行选择

以storproc的形式使用数据库全局变量,并对NewsForumTopicId进行硬编码

创建NewsForumTopics表并在其中手动添加单个记录:

|NewsForumTopicId|
| 1174           |
我最喜欢这种方法

它不会从数据库中取出特定于数据库的信息。 不影响大ForumTopics表。 稍后我可以添加另一个专栏| SpecialType | enum专栏,为新闻、更新和bug修复提供单独的论坛主题。
请批评和/或建议。

在这种情况下,无论您如何看待它,系统中都需要硬编码值。这里的关键问题是:

它随时间变化的可能性有多大? 如果它以某种方式设置错误,情况有多糟?配置不好,否则你会被黑客攻击 我通常按照NewsForumTopics表将这些值存储在数据库中,但对于永远不会更改的数据,我不会这样做。如果是这样的话,要么将其硬编码到存储过程中,要么将其隐藏在应用程序配置文件中似乎是最明智的


还有一个问题是如何防止某个小丑删除某个特殊条目,但这是您下一个SO问题中要问的安全问题。

呃,一个特殊作者如何?AuthorId=-1或AuthorName='news\u bot'。没有涉及架构更改

如果项目还不算太晚,您还可以考虑:


您应该使用这种方法,因为它也是我选择的方法,在初始安装后不太可能更改。如果它被错误地配置了,错误的新闻会被显示出来-不会造成损害。这难道不会转移我如何将论坛主题标记为特殊的问题吗?如何将作者标记为特殊的?@user93422,每个作者都有自己的特殊名称。无论如何,我似乎不完全理解这里的问题。当我在问题的上下文中说“特别”时,它意味着与新闻页面内容相对应的问题。所以,若我确实使用magic Author来查找新闻论坛主题,那个么问题是我如何决定使用哪个作者?我是否在代码中硬编码“新闻机器人”?在web.config中?还是在存储过程中。?或者我也可以用主题新闻机器人创建一个特别的论坛主题…除了索引主题不如索引作者姓名。所以你也许有一个观点。