0

私は 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 }
    }
  ]
}

それは良い考えですか?説明とデフォルトのグループ サイズが変更されることはめったにありませんが、同じ情報を何度も何度も保存するのは快適ではありません。また、深くネストされた「エミュレートされた」結合テーブルについてもわかりません。代替手段はありますか?

前もって感謝します!

4

1 に答える 1