問題:
5人のクライアントがいるとしましょう。現時点では、各クライアントは独自のデータベースのコピーを持っています。これは、何百万もの行があり、あるクライアントのデータベースの負荷によって別のクライアントのデータベースのパフォーマンスが妨げられることを望まないためです。
次の理由により、これは最適な設計ではありません。
- クライアントごとに個別の接続を管理するのは柔軟ではありません。
- 変更を複数のデータベースに伝播する必要がある。
- 新しいクライアントごとに新しいデータベースを作成する必要があります。
質問:
このすべてのデータを 1 つのデータベースに含めて、複数のデータベースを持つ場合と同様に機能するように、クライアント データ間に何らかの形で物理的な分離を行うことは可能ですか?
この分離は、テーブル (またはスキーマ) レベルではなく、行レベルで行われます。たとえば、Employee
クライアントごとに個別のテーブル ( Employee_ClientA
、Employee_ClientB
、 などEmployee_ClientC
) を作成するのではなく、外部キーEmployee
を持つテーブルを作成します。ClientID
これは、テーブル内のデータを物理的に分離する必要があることを意味します。