モジュラーアプリケーションデータベースの構造
-
06-07-2019 - |
質問
モジュラーアプリケーションを構築しています。設定により、これらのアプリケーションモジュールのオンとオフを切り替えることができます。各モジュールのデータを保持するテーブルに使用するデータベース構造(mssql2005)を決定しようとしています。私が考えた2つのオプションは次のとおりです。
- すべてのテーブルを1つの大きなデータベースに入れ、モジュールに従ってテーブルにプレフィックスを付けます。
- 各モジュールのテーブルを異なるデータベースに分離します。
すべてのモジュールに共通するデータがあるため、ソリューション2を使用する場合、その共通データ(ユーザーなど)の管理方法がわかりません。
-
1つのことを明確にするために、これらのモジュールは個別に販売される可能性があり、構成設定はクライアントによって制御されないものです。これが、それらを別のテーブルに分割することを検討している理由です。
解決
あなたが提案したものに代わる私の推奨事項は、SQL Server 2005で利用可能なスキーマ機能です。
詳細については、このリンクをお読みください...
http://searchsqlserver.techtarget.com/tip/0 、289483、sid87_gci1184503,00.html
他のヒント
私なら、最初にアプリケーションを完全に正規化します。共有テーブル内にすべての共通データを配置し、特定のモジュールテーブル内の各モジュールに固有のデータのみを残す構造を開発します。
共有テーブルのデータがすべてのモジュールに本当に共通しており、これらの「共通」テーブルにまとめようとしているエッジケースがない場合、1つのモジュールをオンまたはオフにしても機能に影響はありません他のモジュールを使用すると、データの重複はほとんどありません(存在する場合)。
1つのデータベースがあります。これにより、ソリューションの管理が大幅に簡素化されます。
その後、データを正規化します。これにより、データの整合性の問題が単純化されます。
次に、必要に応じて各データベースのテーブルをベースデータベースに追加します。このベースデータベースを配布しますが、未使用のモジュールのデータは配布しません。各モジュールは、インストール時に独自のデータを配布します(おそらく、モジュール自体に組み込まれるのではなく、インストーラーによって)。
テーブルの接頭辞はどちらかといえば重要ではありません。データベースを共有することの良い点は、任意のモジュールから各テーブルにアクセスし、共有構成ファイルなどを持つことができることです。
テーブル全体にクエリが必要な場合は、それらを1つのデータベースに入れることをお勧めします。それ以外の場合は違いはありません。ただし、1つのデータベースを維持する方がはるかに簡単です。
複数のデータベースの要件がない限り、1つだけを使用することをお勧めします。