【问题标题】:When designing a new CMS database, what would be the most important features to add?在设计新的 CMS 数据库时,要添加的最重要的功能是什么?
【发布时间】:2026-01-14 12:00:01
【问题描述】:

虽然this question 也问过类似的问题,但我从另一个角度对此感兴趣。我对 GUI 部分不感兴趣,但对数据库/域部分不感兴趣。

我的偏好是带有 C#/ASP.NET 的 SQL Server,但这个 Q 应该与语言无关。

在设计 CMS 系统时,数据需要存储在表中,并且业务层需要提供对这些数据的访问。首先,当然是具有用户角色的用户数据库。每个用户的私人消息邮箱会很好。允许用户使用图像和吸引眼球的方式设置自己的个人资料会使其更加有趣,但我们不要专注于用户。

CMS 系统的数据库中还应该有什么?它应该如何与其他表相关联?


我的重点是获得一个清晰的域模型,以用作任何 CMS 系统的基础。他们都有共同点。我只对设计感兴趣,所以我可以稍后使用首选域模型评估几个现有系统,看看哪一个与最理想的情况相匹配。

【问题讨论】:

  • 为什么有人认为它是重复的?是否有任何其他 Q 要求为 CMS 系统设计数据库?如果有,在哪里?

标签: language-agnostic database-design content-management-system


【解决方案1】:

您需要确定您的应用程序需要哪些功能,以及您希望在应用程序中拥有哪些功能。从那里您可以计算出需要进入数据库的内容。你倒着想这个。 数据库支持应用程序,而不是相反(除非您正在编写 phpMyAdmin 或类似的东西!)。

【讨论】:

  • 很好,但是 CMS 系统将拥有的最通用的功能呢?所有 CMS 系统都共享一些特定功能,通常是博客或论坛和画廊。
  • 再一次,这完全取决于你想做什么。您可能想要博客、论坛和画廊,但我可能想要一种方法来编辑简单的页面,并添加一个链接列表,就像我的网站上一样。
  • 事实上,我的网站,顾名思义是一个内容管理系统,因为它管理并允许我编辑我的内容,这与我想象的你定义的 CMS 完全不同。除了单个管理员用户,我的 CMS 没有用户的概念。
【解决方案2】:

如果它是用于 [我假设] 动态维护网站的 CMS,那么首要的功能应该使用户能够:

  • 添加/编辑/删除页面(又名节点) - 网站的结构
  • 添加/编辑/删除菜单、链接 - 网站导航
  • 添加编辑媒体(照片、视频等) - 网站内容

然后你可以想到其他特定于网站的管理功能,例如:

  • 如果要管理电子商务网站,则管理产品/客户
  • 各种交互功能——评论/联系表格等

CMS 是一个需要解决的大项目,特别是如果您想让它便携和/或可重复使用、可扩展。我已经使用了我自己的 CMS 的三个版本——前两个版本是 PHP,最新一个是 .NET。

【讨论】:

  • 所以,一个 Pages 表,一个 Menus 表,一个通用的 Media 表。当然链接到创建/上传它们的用户,以及用于修订的附加数据。 :-) 我们正在慢慢到达那里!还有更多吗?
  • 哦,表格...域...在更大的模型中,页面域、菜单域和媒体域作为三个通用域。
【解决方案3】:

在为CMS设计数据库时,必须关注产品/内容数据表、注册用户数据表和UI相关变更数据表。

UI相关数据不过是一个主题,皮肤是最重要的。

大部分 CMS 应用程序都是根据需求开发的。所以大多数时候需要打破表格中的关系和规范化规则。

但是如果我们注意一些基本的数据库结构,即内容页面或内容数据表、产品表、用户权限表(如果使用 aspnet 表则更好)、订单管理表(用于电子商务网站)等。

当 CMS 项目发生一些重大变化时,业务层也扮演着最重要的角色。

有时表格有很大的变化,对页面没有影响,需要在业务层进行更改。

【讨论】:

    【解决方案4】:

    您要问的是技术问题,与 CMS 本身的功能无关。我的建议和方法是使用 ORM。原因是当您开始设计数据库时,您会陷入 DB 概念的细分市场。 CMS 的目的是提供一种简单的方式来管理内容。

    在这方面,可扩展性远比您的数据库设计重要,用户将无法看到数据库设计。简而言之,从 API 开始,或者如果这太多了 - 只需从您需要向最顶层公开的内容开始。然后以某种方式将其映射到数据库而不考虑结构本身。通过这种方式,您将专注于您正在解决的问题,而不是解决它可能需要的技术。这样感觉更自然。

    【讨论】:

    • 不,更多的是设计问题。我专注于域模型,它应该位于数据库模型和 GUI 之间。将其视为一个逻辑数据模型。
    最近更新 更多