Database design 一种在大表中标记特殊行的方法
上下文:SQL Server 2008,ASP.NET MVC 2.0 我有一个表,列出了论坛的主题Database design 一种在大表中标记特殊行的方法,database-design,Database Design,上下文:SQL Server 2008,ASP.NET MVC 2.0 我有一个表,列出了论坛的主题 |TopicId|Subject|Author|Views|LastUpdate| 我有一个特别的论坛主题,我用它作为主页新闻列表。这样,来自该论坛主题的消息被列为新闻 现在我需要指出哪个论坛主题是新闻 以下是一些选项: 添加另一个名为| IsNewsForumTopic |的专栏,但这感觉有些过分,因为其他10000个论坛主题总是将其设置为false 将新闻论坛主题存储在web.config
|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中?还是在存储过程中。?或者我也可以用主题新闻机器人创建一个特别的论坛主题…除了索引主题不如索引作者姓名。所以你也许有一个观点。