簡単な例を挙げましょう。注文とショッピング カートがあります。これを永続化する方法の 1 つは、Order ドキュメントと Cart ドキュメントを保存することです。Order ドキュメントには、関連するカート ドキュメントの UUID を値とする「shopping-cart」というフィールドを含めることができます。これを行うもう 1 つの方法は、カート全体の連想配列を含む「ショッピング カート」フィールドを含む注文ドキュメントを保存することです。つまり、カートを独立したドキュメントとして明示的に保存する代わりに、カート ドキュメントを注文ドキュメントに埋め込みます。
Cart を永続化する必要があると後で決定した場合はどうなるでしょうか。両方の方法を組み合わせて、カートが不完全な間は別々に保ち、確定/購入されたときに注文ドキュメントに埋め込むことができると思います。
CouchDB に外部キー制約がないことを心配していますが、どちらの方法も機能します。最初の方法では、カート ドキュメントが削除され、破損したデータ セットが残る可能性があります。
どの方法を使用するかをどのように決定しますか? これらの方法の 1 つは、CouchDB にとってより慣用的なものですか? 私が見逃した方法はありますか?
私はCouchDBを初めて使用するので、多かれ少なかれ正規化された構造を持つことの利点/欠点を理解するのは困難です。