大数据:数据库基础知识

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaxianba/article/details/89515079

一、项目背景

由于以前系统设计数据库的时候没花多少心思,随着业务越来越复杂,做数据分析的时候经常卡在数据质量上面。痛定思痛,最近部门总监交下来一项任务,做一套数据质量的规范出来,绞尽脑汁想想有零星想法但没有成熟的系统性解决方案,但是又确实很熟悉。仔细想想,大学里学习数据库的时候讲到的范式不就是解决数据库设计时候的问题吗?

二、数据库模型

什么是数据库?数据库就是数据存放的地方。为什么需要数据库?数据库可以把数据按一定的数据模型组织、存储起来,方便以后使用。
在关系型数据库没有发明出来以前,关于数据库的模型有很多种可选方案,其中常见的有层次模型、网状模型和关系模型。

  1. 层次模型
    其实就是一种数型结构,由节点和连线组成。层次模型的缺点是数据纵向发展、横向关系难以建立,数据可能会重复出现。
    在这里插入图片描述
  2. 网状模型
    数据记录组成网中节点,记录和记录之间的关联通过节点间连线组成。网状模型的缺点是随着模型的复杂度增加,关联性维护会十分复杂。
    在这里插入图片描述
  3. 关系模型
    关系模型是通过多个二维表格来维护的,结构清晰,理解起来也不复杂,维护简单,几乎没有什么缺点,所以最终数据库会选择关系模型。
    在这里插入图片描述

三、范式

上过数据库课的人都清楚,一开始并不是讲SQL的增删改查(查插删改),而是花很大精力在讲范式,工作以后发现确实学会范式比学会增删改查的价值更大,很多问题范式能解决但是增删改查解决不了。

  1. 第一范式(1NF)
    每一列都是不可分割的数据项。主要包括三方面:每个属性只包含一个值;每行的包含相同数量的值;没有重复的行。(行列不重复)
    在这里插入图片描述
  2. 第二范式(2NF)
    任何一个非主关键字段的数值都依赖于主关键字段。(前提是满足第一范式)
    在这里插入图片描述
  3. 第三范式(3NF)
    任何两个非主键字段的数据值之间不存在函数依赖关系(前提是满足第二范式)
    在这里插入图片描述
  4. 巴斯-科德范式(BCNF)
    消除任何属性对候选键的传递依赖与部分依赖。
  5. 第四范式(4NF)
    消除主键列和非主键列一对多关系不受约束。
  6. 第五范式(5NF)
    将表分割成尽可能小的块,为了排除在表中所有的冗余。

总结一下,1NF是指行列不重复,2NF是非主属性依赖主属性,3NF非主属性不能依赖非主属性。

后面三个范式暂未完全理解,等后续理解透了再补充上。

参考文献

  1. 《SQL Server 2008完全学习手册》郭郑州、陈军红著
展开阅读全文

没有更多推荐了,返回首页