数据库三范式规则
遵循三范式开发会减少数据冗余、提升系统可扩展性和查询性能。
第一范式:
确定主键字段,拆分多值字段为多列,将重复含义的几个字段挪到新表;
举例:
将学生信息多值字段拆分成学号、姓名、电话三个字段,每个字段只能代表一种含义;
电话1、电话2俩个重复含义字段要挪到新表
第二范式:
首先要满足第一范式,如果定义了联合主键,只依赖联合主键一部分的字段,要挪到新表;
举例:
学生姓名只依赖主键学号,可以将学号、学生姓名单独挪到一张表。
第三范式:
首先满足第二范式,若非主键字段要依赖其他非主键字段,则需要挪到新表
举例:
班级名称依赖于班级编号字段,将班级编号、班级名称移出创建新表。
注意:
一般来说,我们在系统设计过程,只要全部满足到一、二范式、大部分满足三范式,这已经很ok了,我们尽量去遵循三范式去做表结构设计,当然这不是金科玉律,不是说你所有的表必须都得按照三范式规范设计,有些特殊情况是需要逆规范化设计(这个过程也是需要先规范化设计,再逆规范化设计)。
数据库三范式规则
遵循三范式开发会减少数据冗余、提升系统可扩展性和查询性能。
第一范式:
确定主键字段,拆分多值字段为多列,将重复含义的几个字段挪到新表;
举例:
将学生信息多值字段拆分成学号、姓名、电话三个字段,每个字段只能代表一种含义;
电话1、电话2俩个重复含义字段要挪到新表
第二范式:
首先要满足第一范式,如果定义了联合主键,只依赖联合主键一部分的字段,要挪到新表;
举例:
学生姓名只依赖主键学号,可以将学号、学生姓名单独挪到一张表。
第三范式:
首先满足第二范式,若非主键字段要依赖其他非主键字段,则需要挪到新表
举例:
班级名称依赖于班级编号字段,将班级编号、班级名称移出创建新表。
注意:
一般来说,我们在系统设计过程,只要全部满足到一、二范式、大部分满足三范式,这已经很ok了,我们尽量去遵循三范式去做表结构设计,当然这不是金科玉律,不是说你所有的表必须都得按照三范式规范设计,有些特殊情况是需要逆规范化设计(这个过程也是需要先规范化设计,再逆规范化设计)。