为我的沙发数据库设计两种不同的结构,我想知道哪一种最适合我。
当然文档:
{
"_id": "e11b862c9939f9d0de39f3aa28036c96",
"_rev": "4-e1245399d2f074ef5710d6bcbb0aa7f7",
"nombre": "JavaScript",
"descripcion": "curso basico de javascript",
"horas": 50,
"costo": 500000,
"modalidades": [
{
"nombre": "online",
"descripcion": "cursos en linea",
"descuentos": [
{
"descuento": 0.2,
"fecha caducidad": "2017-11-20"
},
{
"descuento": 0.1,
"fecha caducidad": "2017 - 12 - 30 "
}
]
},
{
"nombre": "privada",
"descripcion": "cursos privados",
"descuentos": [
{
"descuento": 0.2,
"fecha caducidad": "2017-11-20"
}
]
}
]
我制作了一份独特的文件,其中我保留课程,课程费用以及每门课程的折扣取决于模式,我想知道这两种形式中的哪一种对管理更有用
{
"_id": "e11b862c9939f9d0de39f3aa28034b9e",
"_rev": "3-87278a7404c9f458be9beec1808aafb7",
"cursos": [
{
"nombre": "Javascript",
"descripcion": "curso basico de javascript",
"horas": 50,
"costo": 500000,
"modalidad": [
{
"nombre": "online",
"descripcion": "cursos en linea",
"descuentos": [
{
"descuento": 0.2,
"fecha caducidad": "2017-12-20"
}
]
},
{
"nombre": "privada",
"descripcion": "cursos privados",
"descuentos": [
{
"descuento": 0.15,
"fecha caducidad": "2017-12-20"
}
]
}
]
},
{
"nombre": "HTML5",
"descripcion": "curso basico de HTML5",
"horas": 60,
"costo": 400000,
"modalidad": [
{
"nombre": "online",
"descripcion": "cursos en linea",
"descuentos": [
{
"descuento": 0.3,
"fecha caducidad": "2017-12-20"
}
]
},
{
"nombre": "privada",
"descripcion": "cursos privados",
"descuentos": [
{
"descuento": 0.2,
"fecha caducidad": "2017-12-20"
}
]
}
]
}
]
}
答案 0 :(得分:1)
由于您未提供有关如何实际使用数据的任何线索,因此很难提供比通用建议更多的信息。然而...
通过第一个方法从CouchDB / Cloudant中获得良好性能通常更容易 - 每个课程都是一个单独的小文档,而不是一个包含所有数据的大型文档课程。这取决于您的应用程序将展示的使用模式。我猜想课程数据很少会发生变化(对性能有好处,冲突的可能性很小),并且应用程序主要需要访问每门课程的课程数据。
我会选择第一种方法,并构建一个视图,以按名称提供对所有课程的访问。这样,您就永远不需要加载所有课程数据来简单地公开有关JavaScript课程的数据,例如。