2024年大数据最全一篇文章搞懂数据仓库:三范式与反范式,80后程序员月薪30K+感慨中年危机

07-17 871阅读

2024年大数据最全一篇文章搞懂数据仓库:三范式与反范式,80后程序员月薪30K+感慨中年危机

2024年大数据最全一篇文章搞懂数据仓库:三范式与反范式,80后程序员月薪30K+感慨中年危机

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

如学生(学号,姓名,性别,出生年月日)

有些钢筋可能要问了,姓名可以拆成姓、名两列, “出生年月日” 也可以拆成年、月、日三个字段。所以就不满足第一范式了!!!这里再强调一下原子性,原子性是根据使用方便来自定义的最小单位。中国人一般姓名一起用,美国就习惯姓名分别存两字段

二、第二范式


2NF要求记录有惟一标识,即不存在部分依赖;

简单来说就是拆表,以人为粒度做一张明细表,以课程号为粒度做一张维度表,两表关联使用,消除了数据冗余

表:学号、课程号、姓名、学分;

这个表明显说明了两个事务:学生信息, 课程信息;由于非主键字段必须依赖主键,这里学分依赖课程号,姓名依赖与学号,所以不符合二范式。

可能会存在问题:

  • 数据冗余:每条记录都含有相同信息;

  • 删除异常:删除所有学生成绩,就把课程信息全删除了;

  • 插入异常:学生未选课,无法记录进数据库;

  • 更新异常:调整课程学分,所有行都调整。

    正确做法:

    学生:Student(学号, 姓名);

    课程:Course(课程号, 学分);

    选课关系:StudentCourse(学号, 课程号, 成绩)。

    三、第三范式


    3NF是对字段的**冗余性**,要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖;

    表: 学号, 姓名, 年龄, 学院名称, 学院电话

    因为存在依赖传递: (学号) → (学生)→(所在学院) → (学院电话) 。

    可能会存在问题:

    • 数据冗余:有重复值;

    • 更新异常:有重复的冗余信息,修改时需要同时修改多条记录,否则会出现数据不一致的情况 。

      正确做法:

      学生:(学号, 姓名, 年龄, 所在学院);

      学院:(学院, 电话)。

      四、反范式化


      一般说来,数据库只需满足第三范式(3NF)就行了。

      没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余,达到以空间换时间的目的。

      〖例〗:有一张存放商品的基本表,如表1所示。“金额”这个字段的存在,表明该表的设计不满足第三范式,因为“金额”可以由“单价”乘以“数量”得到,说明“金额”是冗余字段。但是,增加“金额”这个冗余字段,可以提高查询统计的速度,这就是以空间换时间的作法。

      在Rose 2002中,规定列有两种类型:数据列和计算列。“金额”这样的列被称为“计算列”,而“单价”和“数量”这样的列被称为“数据列”。

      五、范式化设计和反范式化设计的优缺点


      5.1 范式化 (时间换空间)

      优点:

      • 范式化的表减少了数据冗余,数据表更新操作快、占用存储空间少。

        缺点:

        • 查询时需要对多个表进行关联,查询性能降低。

        • 更难进行索引优化

          5.2 反范式化(空间换时间)

          反范式的过程就是通过冗余数据来提高查询性能,但冗余数据会牺牲数据一致性

          2024年大数据最全一篇文章搞懂数据仓库:三范式与反范式,80后程序员月薪30K+感慨中年危机

          2024年大数据最全一篇文章搞懂数据仓库:三范式与反范式,80后程序员月薪30K+感慨中年危机

          2024年大数据最全一篇文章搞懂数据仓库:三范式与反范式,80后程序员月薪30K+感慨中年危机

          既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

          由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

          需要这份系统化资料的朋友,可以戳这里获取

          提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

          由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

          需要这份系统化资料的朋友,可以戳这里获取

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]