私は MongoDB を初めて使用するので、スキーマ設計に関して多くの質問があります。学習上の理由からリレーショナル スキーマを MongoDB スキーマに変換したいと考えており、スキーマから最大限の利益を得たいと考えています。
私の正規化されたリレーショナル データベースでは、モジュールとレクチャー タイプの間に多対多の関係があります。
- modules テーブルには name という 1 つの属性しかありません。
- Lecture_types テーブルには属性があります: description、default_group_size
- 結合テーブルには属性もあります: 時間
私の基本的なユースケースは次のとおりです: モジュール内でレクチャータイプをすぐに利用できるように、モジュールのコンテキストでレクチャータイプを確認したい。
しかし同時に、システム内のすべての Lecture_types のリストが必要です。たとえば、新しいモジュールを作成するためにビューにドロップダウン リストを実装して、利用可能なすべてのレクチャー タイプを表示したいと考えています。
基本的に講義タイプを含むモジュールにアクセスしたいので、次のようなモジュール ドキュメントの非常に非正規化されたスキーマ設計を考えました。
{
name: "...",
lecture_types: [
{
hours: 2,
lecture_type: { description: "...", default_group_size: 50 }
},
{
hours: 3,
lecture_type: { description: "...", default_group_size: 20 }
}
]
}
それは良い考えですか?説明とデフォルトのグループ サイズが変更されることはめったにありませんが、同じ情報を何度も何度も保存するのは快適ではありません。また、深くネストされた「エミュレートされた」結合テーブルについてもわかりません。代替手段はありますか?
前もって感謝します!