最近,我被要求为网站管理员添加一些内容,以便他可以“展示”某些内容。
对于这个讨论,让我们说这是一篇“特色文章”。
很自然地,我们已经有了一个'文章'的数据库模型,它有大约20列,所以我真的不觉得它比它已经膨胀了。
我的选择:
搞定'特色'bool(或int)并意识到在任何给定时间只会出现一件事
创建一个新模型来保存此模型以及可能弹出的任何其他功能蠕变项。
我接受你的建议! ;)
在这个例子中你做了什么?我时不时地遇到这个问题,我只是讨厌不得不再添加一个专栏。这些信息需要坚持下去。
答案 0 :(得分:3)
我可能只是添加一个简单的双列表,它基本上是一个键值存储。然后添加一个新列,其值为(featured_article_id, 45)
或第一个特色ID。
编辑:正如rmeador的评论所指出的那样,应该注意的是,只要事情保持相对简单,这只是一个很好的解决方案。如果您需要存储更复杂的数据,请考虑找出更灵活的解决方案。
答案 1 :(得分:2)
如果一次只能展示一篇文章,那么添加bool色谱柱就是一种浪费。您应该上升一个级别并为FeaturedArticleID添加一列。你有Site_Settings表吗?
答案 2 :(得分:0)
您可以使用可扩展模型(如拥有属性表),然后使用链接表在文章和属性之间形成多对多关系。这样,这些功能不需要修改架构。
答案 3 :(得分:0)
有一些带有parameter_name和parameter_value列的global_settings表。在这里放置精选文章ID。
答案 4 :(得分:0)
对于像这样的快速和肮脏的东西,我喜欢包含某种设置表:
CREATE TABLE Settings (
SettingName NVARCHAR(250) NOT NULL,
SettingValue NVARCHAR(250)
)
如果您需要按用户或按客户设置而不是全局设置,则可以添加一列以向该特定用户/客户标识该设置。然后,您可以为“FeaturedArticle”添加一行,并从字符串中解析ID。它不是超级优化的,但明文非常灵活,听起来就像你需要的那样。