私はすべてのテナントデータベースにTenantIDを持つ完全なマルチテナントデータベースを持っています。これはすべてうまくいきますが、テナントデータベースが共有データに「リンク」することができるようにする必要があります。たとえば、ユーザーは独自の「銀行」レコードを作成してアカウントをリンクすることができますが、アカウントをすべてのテナントで共有される「グローバル」銀行レコードにリンクすることもできます。いくつかの共有データを持つマルチテナントデータベース
私は私がこれまでに出ている
方法参照整合性を保つエレガントなソリューションが必要です。すべての共有データは、おそらく "で、各テナントにコピーされます
- コピーをシステム "フラグ。共有データの変更には、すべてのテナントに大きな更新が必要です。 おそらく最も簡単な解決策が、私は、データの重複を好きではない
- 特別IDの:共有データへのすべてのリンクが特殊なIDの(例えば、負のID番号)を使用します。これらは、テナントIDが関係で使用されないことを示します。 FKを使用してこれを適切に実施することはできません。また、FKをお持ちの場合は、テナント内でIDを再利用することはできません。整合性のために使用できるのはトリガーだけです。
- 個別IDの:共有データにリンクできるすべてのテーブルには2つのFKがあります。 1つはテナントIDとローカルデータへのリンクを使用し、もう1つはテナントIDと共有データへのリンクを使用しません。制約は、どちらか一方が使用されることを示し、両方が使用されないことを示します。 これはおそらく最も純粋なアプローチですが、ちょうど...醜いかもしれませんが、他の人ほど醜いとは限りません。
だから、私の質問は2つの部分である:
- は、私が考慮されていない任意のオプションがありますか?
- 誰もがこれらのオプションの経験があり、長所/短所に関するフィードバックがありますか?