2012-04-01 9 views
1

私は2つのエンティティノートブックとノートを持つ単純なアプリケーションを設計しようとしています。したがって、ノートブックには複数のNotesを含めることができます.RDBMSでは、2つのテーブルを持ち、1対多の関係を持つことができます。 私はMongoDBで二重収集 のアプローチを取るべきではないか、Notebookコレクションにノートを埋め込むべきかどうかはわかりません。何をお勧めしますか?MongoDBスキーマ設計 - 2つのコレクションアプローチまたは埋め込みドキュメントを選択

答えて

3

ノートブックと呼ばれる単一のコレクションを使用するのは完全に合理的な状況のようであり、各ノートブックドキュメントには埋め込まれたノートが含まれています。埋め込みドキュメントのインデックスを簡単に作成できます。

ノートブック文書では、「ノート」キーを持って、その値はノートのリストである場合:

{ 
    "notes": [ 
     {"created_on": Date(1343592000000), text: "A note."} 
    ] 
} 

# create index 
db.notebook.ensureIndex({"notes.created_on" : -1}) 

私の意見は試してみて、できるだけ多くを埋め込み、その後を介して別のコレクションを参照するように選択することです参照が、共有され、変更されるより一般的なデータのセットになる必要がある場合の第2のオプションとしてのid。例えば、多くの他のコレクションが参照するカテゴリ文書の集合。カテゴリは時間とともに更新されます。しかし、あなたのケースでは、ノートは常にノートブックに属している必要があります

0

あなたはそれに実行する必要がどのような種類の質問をする必要があります。 「デフォルトで」アプローチはそれらを組み込むことですが、よりリレーショナルなアプローチが適用できるケース(ケースをどのように使用するかによって異なります)があります。だから簡単な答えは "おそらく、あなたはおそらくそれについて考えなければなりません" :)

関連する問題