数据库三大范式

设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求

前置知识

相关概念

超键:唯一标识记录的字段集
候选键:超键 - 多余的字段 的 超键
主属性:在候选键中的字段

依赖

  • 函数依赖:A-->B,如果通过A属性(属性组)的值,可以确定唯一B属性的值。则称B依赖于A
    例如:学号-->姓名;(学号,课程名称) --> 分数

  • 完全函数依赖:A-->B, 如果A是一个属性组,则B属性值得确定需要依赖于A属性组中所有的属性值。
    例如:(学号,课程名称) --> 分数

  • 部分函数依赖:A-->B, 如果A是一个属性组,则B属性值得确定只需要依赖于A属性组中某一些值即可。
    例如:(学号,课程名称) -- > 姓名

  • 传递函数依赖:A-->B, B -- >C . 如果通过A属性(属性组)的值,可以确定唯一B属性的值,在通过B属性(属性组)的值可以确定唯一C属性的值,则称 C 传递函数依赖于A
    例如:学号-->系名,系名-->系主任

数据库的三范式

1NF:字段含义单一 不可再分。即不能以集合、序列等作为属性。

2NF:在1NF基础上,数据表中每一条记录可唯一标识,所有非主键字段必须完全依赖于主键,不能部分依赖于主键

2NF设计原则:一张表只表达一个意思, 对于部分依赖于主键的字段,将这 部分字段 与 依赖的部分主键 抽取出来建立新表

3NF:在2NF基础上,非主属性之间不能相互依赖,非主属性之间相互独立

范式化的设计使得表逐渐细粒度化,跨表查询比较多

反范式

有时数据看似冗余,但对业务十分重要,应遵循业务优先的原则
特别是查询数据业务比较多时,可以适当增加冗余字段来提高读性能,

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

推荐阅读更多精彩内容