mongodbでこのようなテーブルを設計するにはどうすればよいですか?
まず、いくつかの命名規則を明確にします。 MongoDBはcollections
を使用します 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はリレーショナルではありません。標準の「通常の形式」はありません。保存するデータと実行するクエリに適したデータベースをモデル化する必要があります。