この質問は、私の友人が使用しているいくつかのビジネス ソフトウェアの最近の更新に動機付けられています。彼らのアーキテクチャは、これまで Access データベースに基づいていたため、非常に低速でした。データセットを複数の mdb ファイル (sales.mdb、products.mdb、stock.mdb など) に分割していました。彼らは現在、SQL Server Express に移行しており、この構造を維持しています。これらのデータセットごとにテーブルを使用する代わりに、SQL Server 2008 Express の同じインスタンスに異なるデータベースを作成しました。
SQL Server に関する私の (確かに限られた) 理解からすると、これは賢明ではないように思えます。異なるテーブル間の JOIN を防ぎ、1 つではなく 2 つの DB 接続を維持するために販売と在庫のデータを必要とするプログラムが必要になるからです。
ソフトウェア ベンダーのコンサルタントの 1 人は、これにより SQL Express の RAM の制限である 1 GB の物理メモリを回避できると主張しました。彼は、これはデータベースごとであると述べていますが、MSDN から収集した情報によると、実際にはインスタンスごとであるため、ここでは何も得られません。
同じビジネス ドメインのデータをテーブルではなくデータベースに分割する正当な理由はありますか? (私が考えることができるのは、テーブルごとではなくデータベースごとにアクセスを制限できるということですが、これはこの特定のケースでは関係ありません。プログラムのすべてのモジュールがすべてのデータベースにアクセスできます。)