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 はリレーショナルではありません。標準の「正規形」はありません。保存するデータと実行するクエリに合わせてデータベースをモデル化する必要があります。