4

私は Raven DB が初めてで、No SQL DB の概念も初めてです。私は、RDB に付随するいくつかの概念を取り除こうとしています。ある概念では、レコードがどこかで外部キーとして使用されている場合、RDB ではマスター レコードを削除できません。

カテゴリを削除したくなく、そのカテゴリの ID が一部の製品で使用されている場合、RDB ではそのレコードを削除できません。誤ってレコードを削除する心配がないので、これは非常に便利です。同じ概念を Raven DB に適用するにはどうすればよいですか? Raven DB をいくつかの RDB と組み合わせて使用​​する予定なので、RDB のような正規化された構造を使用したいと考えています。新しいコンセプトの実験で混乱するような事態にならないように、万が一に備えて安全を確保したいです。

私が理にかなっているといいのですが、

どんな助けでも大歓迎です!

4

1 に答える 1

4

RavenDB には外部キー制約のような概念はありません。本当に、外部キーはありません。ドキュメントにあるのは、別のドキュメントを取得するために使用できる文字列だけです。私たちはそれを関係と呼んでいますが、それは大まかな用語です。内部では、これらのドキュメントをリンクして削除を防止することは何も行われていません。

あなたが説明したシナリオでは、製品をロードすることができます。ただし、その製品のカテゴリ ID を使用してカテゴリを読み込もうとすると、null が返されます。

これらの関係を自分で維持する必要があります。利用できる唯一のヘルパーはCascade Delete Bundleですが、カスケードのために各エンティティを接続する必要があります。SQL外部キーベースのカスケード削除のように自動的には行われません。

于 2013-01-11T16:05:49.377 に答える