Martin Kleppmann设计数据密集型应用程序时说,使用树层次结构在文档数据库中实现了一对多关系。例如,如下面的代码所示,用户可以担任多个职位,并且可以表示为持有的职务和组织的列表。但是组织将是重复的。因此,无法像在RDBMS中一样对数据进行标准化。该书进一步说,多对一关系不能在文档DB中表示,因为它不支持联接。但是它也不能支持一对多,这与其声明相反,因为如果数据存储在单独的实体中,那么文档DB不能像下面的JSON表示形式那样完整地表示。因此,如果我们说文档数据库支持一对多关系,那么不存储重复信息就不能做到这一点吗?
{
"user_id": 251,
"first_name": "Bill",
"last_name": "Gates",
"summary": "Co-chair of the Bill & Melinda Gates... Active blogger.",
"region_id": "us:91",
"industry_id": 131,
"photo_url": "/p/7/000/253/05b/308dd6e.jpg",
"positions": [
{"job_title": "Co-chair", "organization": "Bill & Melinda Gates Foundation"},
{"job_title": "Co-founder, Chairman", "organization": "Microsoft"}
],
"education": [
{"school_name": "Harvard University", "start": 1973, "end": 1975},
{"school_name": "Lakeside School, Seattle", "start": null, "end": null}
],
"contact_info": {
"blog": "http://thegatesnotes.com",
"twitter": "http://twitter.com/BillGates"
}
}