在一个CMS/多个网站系统中管理数据库的最佳方法是什么?

本文关键字:数据库 管理 方法 是什么 系统 最佳 网站 一个 CMS | 更新日期: 2023-09-27 18:04:03

我正在开发内容管理系统。但这与其他CMS不同。我可以维护一个CMS和定义内容到多个网站。比如博客。但是有些网站有不同的表格。

我目前的CMS有一个数据库(MS SQL 2005)

数据库包含很多表:

主要表
    用户
  • <
  • 模块/gh>
  • 门户等等…

Web 1 tables

  • web1Post
  • web1CustomTable
  • web1Table2等等…

Web 2 tables

  • web2Customtable3
  • web2CustomTable4
  • web2Table4等等…

每个自定义表连接User, Portal和其他一些表。这是成功的工作。

但我想分开数据库MainDatabase, web1database, web2database等…

我正在尝试分离数据库。但问题是用户,门户和连接的表有问题

我正在使用EntityFramework, Asp.net MVC

解决这个问题的最好方法是什么?

在一个CMS/多个网站系统中管理数据库的最佳方法是什么?

没有解决这个问题的"最佳"方法。只需分离数据库,然后开始修复应用程序中的代码。

你需要

  • 创建实体框架映射
  • 更新代码并删除对现有数据库的引用
  • 添加包含新数据库引用的新代码

但是,我建议您不要分离数据库,而是在现有模式中进行更改以支持自定义。也许您可以使用xml列来存储自定义数据,甚至创建您的应用程序层,以便它可以动态更新数据库结构。这就是TFS和Dynamics CRM处理定制的方式——它们在数据库中有主模式,在元数据中存储定制信息。

下载并安装Kentico CMS,并探索它如何解决这个问题。如果您想拥有一个多租户数据库,请为每个租户/网站定义/复制不同的模式。

您无法解决来自不同数据库的相关表的问题。不要为单独的站点创建数据库,这样的SharePoint不会为子网站创建数据库。只需在subweb的每个表中创建一个外键,例如SubwebId。当您决定使用单独的数据库时,您必须创建用于生成子Web数据库的存储过程、用于在IIS下创建Web站点的方法(还需要将域绑定到子Web)、通过替换所有连接字符串从模板生成站点文件的方法。你真的想这么做吗?我觉得这不是个好主意。(抱歉我的英语不好)

从你的描述到目前为止,我觉得你有一个cms数据库和几个相关的网站。您可以使用schema来分隔不同站点的数据。因此,您可以对与所有站点相关的表使用[dbo]模式。然后是[website1],专门针对website1的表格,等等。

各个数据库应该在很大程度上相互独立。ACID并不总是跨数据库工作。单个数据库将具有单独的备份时间。每个数据库都可以移动到不同的服务器。每个数据库可能处于不同的状态。数据库之间不可能有干净可靠的外键关系。只要你需要[User]和其他表之间的依赖关系,这些其他表必须在同一个数据库中。