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

对于本次讨论,我们假设这是一篇“专题文章”。

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

我的选择:

  1. 附加一个“特色”布尔值(或整数)并意识到在任何给定时间只有一件事会被特色化

  2. 创建一个新模型来容纳此模型以及可能弹出的任何其他特征蠕变项目。

  3. 我接受你的建议!;)

在这种情况下你会做什么?我时不时地会遇到这种情况,我只是讨厌在某件事上再增加一个专栏。该信息确实需要保留。

有帮助吗?

解决方案

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

其他提示

我可能只是添加一个简单的两列表,它基本上是一个键值存储。然后添加一个新列,其值如下 (featured_article_id, 45) 或者无论第一个特色 ID 是什么。

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

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

拥有某种带有parameter_name 和parameter_value 列的global_settings 表。在此输入特色文章 ID。

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top