Azure DocumentDbの新機能で、コレクション内のデータをモデル化する最良の方法について質問があります。コレクションでは、すべてのドキュメントが同じスキーマを持つ必要はありません。非常に単純な例では、教師と学生に関する文書を含む学校のコレクションがあるとします。 jsonプロパティのいくつかは、例えば 'lastName'のように同じであるかもしれません。私は先生と生徒を区別し、すべての生徒に姓が "スミス"であるようにクエリを実行する必要があります。私の質問は、 "教師"に比べて "学生"である文書を定義する最良の方法は何ですか。私はこのような「タイプ」プロパティを追加する例を見てきました:Azure DocumentDbフラットとネストのモデリング
//Student document
{
"id": "035cbc59-76ba-4255-9abf-fa57cdcf81f4",
"lastName": "Smith",
"grade": 10,
"type": "student"
}
//Teacher document
{
"id": "035cbc59-76ba-4255-9abf-fa57cdcf81f4",
"lastName": "Smith",
"subjectTaught": "Algebra I",
"type": "teacher"
}
その後、あなたは、このような問い合わせができます
:SELECT * from c where c.lastName = "Smith" and c.type ="student"
私もオブジェクト型がネストされている別のアプローチを見てきました
//Student document
{
"student": {
"lastName": "Smith",
"grade": 10
},
"id": "7d2c5595-21b1-4598-8a70-196a3feeeab0"
}
//Teacher document
{
"teacher": {
"lastName": "Smith",
"subjectTaught": "Algebra I",
},
"id": "7d2c5595-21b1-4598-8a70-196a3feeeab0"
}
次に、あなたのクエリは次のようになります。
SELECT c.student from c where c.student.lastName = "Smith"
データモデリングのベストプラクティスの観点からは、どちらのアプローチが優れているのが好奇妙です。明らかに、これは非常に単純な例であり、現実世界のコレクションはより複雑な文書を持つでしょう。
モデルには「最良の」方法はありません。それはあなたのアプリのニーズとクエリパターンに依存します。 –