3

コンテンツ管理システム (CMS) を開発しています。しかし、これは他の CMS とは異なります。1 つの CMS を維持し、コンテンツを複数の Web サイトに定義できます。ブログのように。ただし、一部の Web サイトには異なるテーブルがあります。

現在使用している CMS には 1 つのデータベースがあります (MS SQL 2005)

データベースには多くのテーブルが含まれています:

メインテーブル

  • ユーザー
  • ページ
  • モジュール
  • ポータル
    など...

ウェブ 1 テーブル

  • web1ポスト
  • web1CustomTable
  • web1Table2 など...

ウェブ 2 テーブル

  • web2Customtable3
  • web2CustomTable4
  • web2Table4 など...

すべてのカスタム テーブルは、ユーザー、ポータル、およびその他のいくつかのテーブルに結合されています。これは正常に動作します。

しかし、データベースをMainDatabase、web1database、web2databaseなどに分けたい...

データベースを分離しようとしています。しかし、問題はユーザー、ポータル、および接続されたテーブルに問題があります

私はEntityFramework、Asp.net MVCを使用しています

これを解決する最良の方法は何ですか?

4

4 に答える 4

3

これを解決する「最善の」方法はありません。データベースを分離してから、アプリケーションのコードを修正する作業を開始してください。

あなたがする必要があります

  • 新しいデータベースのエンティティ フレームワーク マッピングを作成する
  • コードを更新し、既存のデータベースへの参照を削除します
  • 新しいデータベースへの参照を含む新しいコードを追加する

ただし、データベースを分離するのではなく、カスタマイズをサポートするために既存のスキーマを変更することをお勧めします。xml 列を使用してカスタム データを保存したり、データベース構造を動的に更新できるようにアプリケーション層を作成したりすることもできます。これは、TFS と Dynamics CRM がカスタマイズを処理する方法です。データベースにはメイン スキーマがあり、カスタマイズに関する情報を格納するメタデータ スキーマがあります。

于 2013-03-15T12:06:25.343 に答える
2

Kentico CMS をダウンロードしてインストールし、この問題にどのように対処するかを調べてください。マルチテナント データベースが必要な場合は、テナント/Web サイトごとに異なるスキーマを定義/複製します。

于 2013-03-19T14:40:20.067 に答える
1

異なるデータベースからの関連テーブルの問題を解決することはできません。個々のサイトのデータベースを作成しないでください。SharePoint はサブ Web のデータベースを作成しません。SubwebId など、サブ Web の各テーブルに外部キーを作成するだけです。別のデータベースを持つことにした場合は、サブ Web データベースを生成するためのストアド プロシージャ、IIS で Web サイトを作成する方法 (ドメインをサブ Web にバインドする必要もあります)、テンプレートからサイト ファイルを生成する方法を作成する必要があります。すべての接続文字列を置き換えることによって。本当にやりたいですか?これは良い考えではないと思います。(下手な英語でごめんなさい)

于 2013-03-14T08:49:19.283 に答える
0

これまでの説明から、1つのCMSデータベースといくつかの関連するWebサイトがあるように感じます。SCHEMAを使用して、個別のサイトのデータを分離できます。したがって、すべてのサイトに関連するテーブルに[dbo]スキーマを使用できます。次に、website1などに固有のテーブルの[website1]。

個々のデータベースは、ほとんどが互いに独立している必要があります。ACIDは、データベース間で常に機能するとは限りません。個々のデータベースには個別のバックアップ時間があります。各データベースは、異なるサーバーに移動できます。各データベースは異なる状態になる可能性があります。データベース間で、クリーンで信頼性の高い外部キー関係を構築することはできません。[User]と他のテーブルの間に依存関係が必要な限り、それらの他のテーブルは同じデータベースに存在する必要があります。

于 2013-03-21T16:47:09.737 に答える