想象一下,我正在以 JSON 格式存储一个人的电话号码。一个这样的 JSON 记录可能如下所示:
{
"firstName": "John",
"lastName": "Smith",
"phoneNumber": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "mobile",
"number": "646 555-4567"
}
]
}
上述的一种替代结构是:
{
"firstName": "John",
"lastName": "Smith",
"homePhone": {
"number": "212 555-1234"
},
"mobilePhone": {
"number": "646 555-4567"
}
}
这两种建模方法的优缺点是什么?我看到的最明显的一点是,第一种方法允许一次性检索 所有 手机。
最佳答案
为了决定在这种情况下要做什么,您也应该考虑您的实现。
例如,假设您将在 Python 中解析和使用它。如果你把它作为一个列表,你将不得不遍历列表以找到一个给定的数字,在最坏的情况下,它可能最终成为一个 O(n) 任务。
如果将其重构为字典(哈希表),则通过访问正确的键来查找电话号码将更接近 O(1)。
总之,您对数据的处理方式以及您将如何使用它应该决定其结构。
关于JSON 建模方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32118847/