数据库三大范式:
第一范式:
就是属性不可分割,最小单位。属性是什么?就是表中的字段。
能不能分割具体看需求。
举例子:姓名,外国人姓和名得分开,都有特别的意义
第二范式:
二范式就是要有主键,要求其他字段都依赖于主键。
没主键没有唯一性,定位不到这行记录
每一行的数据只能与其中一列相关
举例子:姓名可以同名,但是不能作为主键。张三这个人的年龄和性别字段不能存储别人的年龄性别
第三范式:
三范式就是要消除传递依赖,方便理解,可以看做是“消除冗余”
消除冗余应该比较好理解一些,就是各种信息只在一个地方存储,不出现在多张表中。
举例子:
学生表:年龄、性别、学号我们能不能把系主任、系简介一起存着?
三大范式肯定不行。
因为系编号,系主任、系简介已经存在系别管理表中,你再存入学生信息表,就是冗余了。
所以按照三范式,处理这个问题的时候,学生表就只能增加一个系编号字段。
这样既能根据系编号找到系别信息,又避免了冗余存储的问题。
三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。