本文共 966 字,大约阅读时间需要 3 分钟。
官方的解释就不放了,想看的可以去!
通俗的理解:
第一范式就是属性不可分割,每个字段都应该是不可再拆分的。
比如一个字段是姓名(NAME),在国内的话通常理解都是姓名是一个不可再拆分的单位,这时候就符合第一范式;
但是在国外的话还要分为FIRST NAME
和LAST NAME
,这时候姓名这个字段就是还可以拆分为更小的单位的字段,就不符合第一范式了。
第二范式就是要求表中要有主键,表中其他其他字段都依赖于主键,因此第二范式只要记住主键约束就好了。
比如说有一个表是学生表,学生表中有一个值唯一的字段学号,那么学生表中的其他所有字段都可以根据这个学号字段去获取,依赖主键的意思也就是相关的意思,因为学号的值是唯一的,因此就不会造成存储的信息对不上的问题,即学生001的姓名不会存到学生002那里去。
第三范式就是要求表中不能有其他表中存在的、存储相同信息的字段,通常实现是在通过外键去建立关联,因此第三范式只要记住外键约束就好了。
比如说有一个表是学生表,学生表中有学号,姓名等字段,那如果要把他的系编号,系主任,系主任也存到这个学生表中,那就会造成数据大量的冗余,一是这些信息在系信息表中已存在,二是系中有1000个学生的话这些信息就要存1000遍。因此第三范式的做法是在学生表中增加一个系编号的字段(外键),与系信息表做关联。
一般地,在进行数据库设计时,应遵循上面的三大原则,也就是我们通常说的三大范式。
第一范式要求确保表中每列的原子性,也就是不可拆分(表里面的每个属性都是具有独立性即独立的,不能再分为!);
第二范式要求确保表中每列与主键相关,而不能只与主键的某部分相关(主要针对联合主键),主键列与非主键列遵循完全函数依赖关系,也就是完全依赖;
如果一个表中存在(在满足第一范式的情况下)一个主键对应多个其他属性的情况,即一对多的存在,那么我们就应该把主键和属性分离出来成多个表,分离出来的两个表是一对多的关系;
第三范式确保主键列之间没有传递函数依赖关系,也就是消除传递依赖。简而言之就是把表忘你认为最合适的最细化去分,三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。
如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构
。所以不能一味的去追求范式建立数据库
转载地址:https://lichen.blog.csdn.net/article/details/114838932 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!