Mongoの外部キー?質問する

Mongoの外部キー?質問する

ここに画像の説明を入力してください

MongoDB でこのようなスキームを設計するにはどうすればよいでしょうか? 外部キーはないと思います。

ベストアンサー1

MongoDB でこのようなテーブルを設計するにはどうすればよいでしょうか?

まず、命名規則を明確にします。MongoDBcollectionsでは の代わりにを使用しますtables

外部キーはないと思います!

次のモデルを考えてみましょう。

student
{ 
  _id: ObjectId(...),
  name: 'Jane',
  courses: [
    { course: 'bio101', mark: 85 },
    { course: 'chem101', mark: 89 }
  ]
}

course
{
  _id: 'bio101',
  name: 'Biology 101',
  description: 'Introduction to biology'
}

明らかにジェーンのコースリストは特定のコースを指しています。データベースはシステムに制約を適用しません(例: 外部キー制約) なので、「カスケード削除」や「カスケード更新」は発生しません。ただし、データベースには正しい情報が含まれています。

さらに、MongoDBにはDBRef 標準これは、これらの参照の作成を標準化するのに役立ちます。実際、そのリンクを見ると、同様の例があります。

このタスクを解決するにはどうすればよいですか?

誤解のないように言うと、MongoDB はリレーショナルではありません。標準の「正規形」はありません。保存するデータと実行するクエリに合わせてデータベースをモデル化する必要があります。

おすすめ記事