在设计新的CMS数据库时,要添加的最重要的功能是什么?

时间:2009-10-12 10:26:29

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

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

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

在设计CMS系统时,数据需要存储在表中,业务层需要提供对此数据的访问。首先,当然是具有用户角色的用户数据库。每个用户的私人邮件邮箱会很好。允许用户使用图像设置他们自己的配置文件并且让人眼花缭乱会让它变得更有趣,但不要只关注用户。

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

<小时/> 我的重点是获得一个清晰的域模型,以用作任何CMS系统的基础。他们共同拥有的东西。我只对设计感兴趣,所以我稍后可以使用首选域模型评估几个现有系统,看看哪个系统符合最理想的情况。

4 个答案:

答案 0 :(得分:5)

您需要确定应用程序需要哪些功能,以及您希望在应用程序中具有哪些功能。从那里,您可以找出数据库中需要的内容。你正在考虑倒退。 数据库支持应用程序,而不是相反(除非您正在编写phpMyAdmin或类似内容!)。

答案 1 :(得分:3)

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

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

然后您可以考虑其他特定于网站的管理功能,例如:

  • 管理产品/客户(如果要管理电子商务网站)
  • 各种互动功能 - 评论/联系表格等

CMS是一个需要解决的大项目,特别是如果您想使其可移植和/或可重复使用,可扩展。我已经通过我自己的CMS的三个版本 - 前两个PHP版本和最新版本的.NET。

答案 2 :(得分:2)

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

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

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

但是如果我们小心一些基本的数据库结构,即内容页面或内容数据表,产品表,用户权限表(如果使用aspnet表,那么它更好),订单管理表(用于电子商务网站)等< / p>

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

有些时候表有很大的变化,不会对页面产生影响,需要在业务层中进行更改。

答案 3 :(得分:1)

您所询问的是一个技术问题,与CMS本身的功能无关。我的建议和我接近它的方式是使用ORM。原因是当你开始设计数据库时,你会陷入数据库概念的利基。 CMS的目的是提供一种管理内容的简便方法。

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