0

最近,有人要求我为网站管理员添加一些东西,他可以在其中“展示”一些东西。

对于本次讨论,假设它是“特色文章”。

所以很自然地,我们已经有了一个“文章”的数据库模型,它有大约 20 列,所以我真的不想再让它膨胀了。

我的选择:

  1. 添加一个“特色”布尔(或整数),并意识到在任何给定时间只会展示一件事

  2. 创建一个新模型来保存这个和任何其他可能弹出的特征蠕变项目。

  3. 我采纳你的建议!;)

在这种情况下你会怎么做?我时不时地遇到这个问题,我只是讨厌不得不再增加一个专栏。确实需要保留此信息。

4

5 回答 5

3

我可能只是添加一个简单的两列表,它基本上是一个键值存储。然后添加一个新列,其值类似于(featured_article_id, 45)或任何第一个特色 ID。

编辑:正如 rmeador 在评论中指出的那样,应该注意的是,只要事情保持相对简单,这只是一个很好的解决方案。如果您需要存储更复杂的数据,请考虑找出更灵活的解决方案。

于 2009-04-03T17:27:19.013 回答
2

如果一次只能展示一篇文章,那么添加布尔列是一种浪费。您应该上一级并为 FeaturedArticleID 添加一列。您有 Site_Settings 表吗?

于 2009-04-03T17:28:23.737 回答
0

您可以使用可扩展模型,例如拥有一个属性表,然后是一个链接表,以在文章和属性之间形成多对多关系。这样,这些类型的功能不需要修改架构。

于 2009-04-03T17:26:31.120 回答
0

有某种带有 parameter_name 和 parameter_value 列的 global_settings 表。将特色文章 ID 放在这里。

于 2009-04-03T17:32:26.317 回答
0

对于像这样的快速和肮脏的东西,我喜欢包含某种设置表:

CREATE TABLE Settings (
    SettingName NVARCHAR(250) NOT NULL,
    SettingValue NVARCHAR(250)
)

如果您需要每个用户或每个客户的设置,而不是全局设置,您可以添加一列以将其标识给该特定用户/客户。然后,您可以为“FeaturedArticle”添加一行并从字符串中解析 ID。它不是超级优化的,但纯文本非常灵活,这听起来正是您所需要的。

于 2009-04-03T17:34:09.403 回答