首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库:平面数据与嵌套数据

数据库:平面数据与嵌套数据
EN

Stack Overflow用户
提问于 2015-12-01 22:18:43
回答 1查看 1.2K关注 0票数 1

我想将数据存储在一个可以嵌套的数据库中,如

代码语言:javascript
运行
复制
[
{
  id: 'deadbeef',
  url: 'https://lol.cat/1234',
  revisions: [
    {
      id: '1',
      title: 'foo',
      authors: ['lol', 'cat'],
      content: 'yadda yadda',
      // ...
    },
    {
      id: '2',
      title: 'foo',
      authors: ['lol', 'cat'],
      content: 'yadda yadda bla',
      // ...
    },
    // ...   
  ]
},
// ...
]

(人们可以想象这里会有更多的水平。)

或者,可以将相同的数据组织成扁平的,如

代码语言:javascript
运行
复制
[
{
  documentId: 'deadbeef',
  url: 'https://lol.cat/1234',
  id: '1',
  title: 'foo',
  authors: ['lol', 'cat'],
  content: 'yadda yadda',
  // ...
},
{
  documentId: 'deadbeef',
  url: 'https://lol.cat/1234',
  id: '2',
  title: 'foo',
  authors: ['lol', 'cat'],
  content: 'yadda yadda bla',
  // ...
},
// ...
]

基本上只存储上述方法的叶子,以及属于它们的所有信息。

典型的请求将是:

  • 提供文档deadbeef的所有修订版。
  • 给我caffee文档的修订版。

这两种方法中的任何一种明显更好吗?这两种方法的优点/缺点是什么?

EN

回答 1

Stack Overflow用户

发布于 2015-12-01 22:56:39

第二个模式是第一个模式的非规范化版本。比较一种更关系的方法可能是有用的:

代码语言:javascript
运行
复制
{
    documents: [
        {
            id: 'deadbeef',
            url: 'https://lol.cat/1234',
            // ...
        },
        // ...
    ],
    revisions: [
        {
            id: '1',
            documentId: 'deadbeef'
            title: 'foo',
            authors: ['lol', 'cat'],
            content: 'yadda yadda',
            // ...
        },
        {
            id: '2',
            documentId: 'deadbeef',
            title: 'foo',
            authors: ['lol', 'cat'],
            content: 'yadda yadda bla',
            // ...
        },
        // ...
    ]
}

嵌套方法遇到了一个称为访问路径依赖的问题。基本上,通过假设一个首选层次结构,它使得需要不同层次结构的查询更加困难。

非规范化版本可能会出现更新异常,这意味着部分更新会使数据库处于不一致的状态。

另一方面,关系方法不支持任何层次结构,因此支持即席查询,而规范化有助于消除更新异常。RDBMS还包含了许多完整性检查和约束,以确保数据的有效性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34031289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档