数据库三大范式

在设计数据库或者更新数据库的过程中,我们往往需要考虑考虑数据库的范式,这样做的目的在于,首先可以消除修改异常,其次可以降低重复的数据,从而节省储存空间。

在了解数据库的三大范式之前,首先我们需要明确两个概念,部分依赖(partial dependency)和传递依赖(transitive dependency)。

部分依赖(partial dependency):某个属性只依赖主键的一部分。

传递依赖(transitive dependency):某个属性依赖于另一个不属于主键的属性。

了解这两个概念后我们就可以定义数据库的三大范式了。

第一范式(原子性):是针对于数据表的列的规范,即数据表的每一列都是不可分割的原子数据项,而不能是数组,集合,记录等非原子数据项。但是却可以存在部分依赖或传递依赖。

第二范式:在第一范式的基础上,要求非主键必须必须依赖全部主键数据。即不能存在部分依赖,可以允许有传递依赖。

第三范式:在第二范式的基础上,要求非主键属性不依赖与其他非主键属性,即部分依赖和传递依赖都不能存在。

下面可以通过一个例子来说明。

我们看到,这是一个满足第一范式的表的结构,它仍旧存在部分依赖和传递依赖。

我们将表进行拆分,这个时候表中只存在传递依赖,不存在部分依赖,满足第二范式。

最后我们将表进一步拆分,这个时候表的结构既没有了部分依赖,也不存在传递依赖,表结构符合第三范式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转自链接:https://www.zhihu.com/question/268799867/answer/3423...
    今天不想掉头发阅读 3,496评论 0 0
  • 何为范式     顾名思义,规范的方式。数据库作为底层的存储系统,直接影响业务层的性能,因此,为了能够让开发人员科...
    luckiexie阅读 12,116评论 0 10
  •   数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(i...
    小超_8b2f阅读 4,272评论 0 1
  • 和闺密聊天,她说马上要过年了,你一定要顶住压力,不要因为家人的催促就看不清楚自己到底要什么样的男人和想过样的日子噢...
    嘟嘟1108阅读 1,365评论 0 1
  • 人,总要寒心一次, 才知道世界的真真假假, 并不是谁都能以心换心。 人,总要寒心一次, 才知道人生并非只有喜乐, ...
    心若有你花自开阅读 1,605评论 0 0