我是新Azure的DocumentDb並有一個關於一個集合中的數據進行建模的最佳方式問題。在集合中,並非所有文檔都必須具有相同的模式。舉一個非常簡單的例子,假設我有一個包含教師和學生文檔的學校集合。幾個json屬性可能是相同的,例如'lastName'。我需要區分教師和學生,並運行一個查詢,給我所有的學生姓「史密斯」。我的問題與「教師」相比,定義「學生」文檔的最佳方式是什麼?我已經看到,添加一個「類型」屬性像這樣的例子:天青DocumentDb建模平VS嵌套
//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"
從數據建模最佳實踐的角度來看,我很好奇,哪種方法更好。顯然,這是一個非常簡單的例子,現實世界的收藏將會有更復雜的文檔。
真的沒有「最好」的方式來建模。這將取決於您的應用程序的需求和查詢模式。 –