一: 定义数据集
创建一个数据库时,第一个任务是回答这个问题:"需要存存储什么数据以及如何做字段间的关联?"
现在假想一个物资数据库,用于存储物品的数量,大小,标签和等级
例如下面的例子:

二: 以JSON格式来思考
上面的表格看起来像是一个很好的存储数据的地方,但它有的字段中有多个值,如果像表格中那样在单列中存放多个值(例如:size和tag字段)是不太容易用于搜索和显示的.
在SQL数据库中,对于例子中的数据,我们可以创建一个关系表来解决这个问题.
在文档型数据库中,数据是以文档型式存储的,这些文档以JSON格式存储. JSON文档支持字段嵌入,因此相关的数据和数据列表可以以文档型式存储而不是外部表格.
JSON是一种键/值对格式,在JSON文档中,字段名和值用冒号分开,键值对用逗号分开,字段集包含在花括号里面({}).
例如我们可以为上面例子表格中的某一行以JSON格式表示:

我们以name和quantity字段为例,它们的JSON格式将会是像下面这样:
{"name": "notebook", "qty": 50}
三: 确定要使用嵌入式的候选数据并格式化数据
确定哪些字段需要有多个值,这些字段将会作为嵌入式文档或嵌入式文档中的列表/数组的候选对象.
例如,在上面的表格中,size可以被格式化为三个字段:
{"h": 11, "w": 8.5, "uom": "in"}
有些物品会有多个等级, 因此ratings可以格式化为包含scores字段的文档列表
[{"score": 8}, {"score": 9}]
对于包含有多个值的tags,也可以格式化下面的列表形式:
["college-ruled", "perforated"]
最终,对于表格中的某一行数据可以格式化为下面的JSON格式:
{
"name": "notebook",
"qty": 50,
"rating": [{"score": 8}, {"score": 9}],
"size": {"height": 11, "width": 8.5, "unit": "in"},
"status": "A",
"tags": ["college-ruled", "perforated"]
}
网友评论