美文网首页
设计数据库时数据冗余的应用

设计数据库时数据冗余的应用

作者: 风声233 | 来源:发表于2018-09-01 08:52 被阅读41次

我们先来看一下查询出来的专题内容:
它包含 id、name、description、products、topic_img、head_img 这几个字段。

{
    "id": 1,
    "name": "专题栏位一",
    "description": "美味水果世界",
    "products": [
        {
            "id": 2,
            "name": "梨花带雨 3个",
            "price": "0.01",
            "stock": 984,
            "main_img_url": "/product-dryfruit@1.png",
            "summary": null,
            "img_id": 10
        },
        {
            "id": 5,
            "name": "春生龙眼 500克",
            "price": "0.01",
            "stock": 995,
            "main_img_url": "/product-dryfruit@2.png",
            "summary": null,
            "img_id": 33
        },
        {
            "id": 8,
            "name": "夏日芒果 3个",
            "price": "0.01",
            "stock": 995,
            "main_img_url": "/product-dryfruit@3.png",
            "summary": null,
            "img_id": 36
        },
        {
            "id": 10,
            "name": "万紫千凤梨 300克",
            "price": "0.01",
            "stock": 996,
            "main_img_url": "/product-dryfruit@5.png",
            "summary": null,
            "img_id": 38
        },
        {
            "id": 12,
            "name": "珍奇异果 3个",
            "price": "0.01",
            "stock": 999,
            "main_img_url": "/product-dryfruit@7.png",
            "summary": null,
            "img_id": 40
        }
    ],
    "topic_img": {
        "url": "http://z.cn/images/1@theme.png"
    },
    "head_img": {
        "url": "http://z.cn/images/1@theme-head.png"
    }
}

细心观察 products 字段我们就会发现里面除了包含 img_id 还包含了 main_img_url 字段,因为我们也可以通过 img_id 关联 img 表查询出来对应的 url,所以这里构成了数据冗余。这里使用数据冗余设计表的原因是为了避免产生多层嵌套查询而降低查询的效率。这里我们的 theme 表已经和 products 表嵌套进行关联查询,如果 products 下继续嵌套 img,假如这个主题有 100 个 products(对于一个主题来说这很寻常,因为这是一个不确定数量的数据集)就会导致查询速度变慢,使用数据冗余是一个解决方案。

下面我们总结一下该在什么情况下合理运用数据冗余:

  1. 该数据结构在很多地方都需要用到。
  2. 数量是不可控的数据集。

一定不能滥用数据冗余的原因:
对于数据的完整性和一直性的维护时十分困难的。删除和更新数据时需要同时更改两个地方,否则会产生数据不一致。

相关文章

  • 规范化数据库设计

    规范化数据库设计 为什么需要数据库设计 当数据库比较复杂时我们需要设计数据库 糟糕的数据库设计 : 数据冗余,存储...

  • MySQL 入门(四)

    九、规范化数据库设计 1. 为什么需要数据库设计 当数据库比较复杂时,需要设计数据库; 糟糕的数据库设计:数据冗余...

  • 数据库设计三大范式

    数据库设计三大范式为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称...

  • 数据库设计三大范式

    数据设计的三大范式 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系数据库中这种规则就叫...

  • 关系数据库规范化

    如何设计关系数据库的各个表,减少数据冗余? 数据库范式化 目的减少数据中重复和冗余 冗余带来的问题额外的存储开销语...

  • MySQL之规范数据库设计

    九、规范数据库设计 1.为什么需要设计? 1)糟糕的数据库设计:①数据冗余,浪费空间。②数据库插入和删除都会很麻烦...

  • 系统分析师之数据库范式

    数据库范式,是指数据库的设计规范,是遵循递次规范,规范越高,数据冗余越小。作用是:减少数据库中数据冗余的过程1NF...

  • mysql数据库设计和优化

    数据库设计 一: 为什么要进行数据库的设计 优良的数据设计 : 减少数据冗余、避免数据维护异常、节约空间、高效访问...

  • 数据库的设计

    为什么需要规范的数据库设计? 通过进行规范化的数据库设计可以消除不必要的数据冗余,获得合理数据库设计,提高项目的应...

  • MySQL三范式&逆范式

    一、三范式 概念:为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则(注:在关系型数据库中这种规则...

网友评论

      本文标题:设计数据库时数据冗余的应用

      本文链接:https://www.haomeiwen.com/subject/ysdewftx.html