三大范式
之所以引入这个概念,是因为学习了三大范式但还是不能区分第二范式和第三范式的区别,在这里作为自己的理解,当作笔记来区分一下三大范式。
第一范式
所谓第一范式,就是指字段值不可分割,体现了字段的原子性。
第二范式
第二范式是一个跟我们日常的习惯不一样,在一张表中要求只能储存一种数据,所谓一种数据就是指字段要跟主键相关,如果专业点的话,就是非主键字段要依赖主键字段。所以非依赖主键的字段不允许出现在该表中,所以这样的话,就需要额外为另一字段的数据单独创建一张表。所以回到了开始说到的一张表中只能储存一种数据。但是字段与字段(非主键)之间没有特别的限制,如果约束字段之间的关系,就引入了第三范式的概念了。
第三范式
第三范式是在第二范式的基础上,即满足第二范式,并且字段与字段与字段之间不能有依赖,如果字段(字段1)与字段(字段2)之间有依赖的话,那就构成的字段与主键形成了间接依赖,即字段1首先依赖字段2,而字段2又依赖主键字段,如果没有字段1,只有字段2的话,也不会违背间接依赖,同理只有字段1,也不会违背间接依赖,而恰恰是因为二者在同一张表中,这样字段1和字段2中必定有一构成了间接依赖。举个例子:学生编号>>所属学院编号>>所属学院名称。单个所属学院编号或所属学院名称都依赖学生编号,但所属学院和所属学院编号存在依赖关系。
总结:范式的引用主要的将各种数据分开,只将有密可不分关系的数据存储在一张表中,这样会避免冗余,表变得简洁干净,使得存储效率得到提高,但是也会存在一个问题,使得查询变得繁琐,如果想要从数据中得到最有用的信息,可不必每次连接多张表而得新的表,我们可以违背三大范式建表,这就体现了个体不被条条框框限制,灵活的操作会带了神奇的效果,即使有时显得笨重和傻瓜。