2026/1/17 14:50:13
网站建设
项目流程
网站建设和管理自查报告,做爰全过程网站免费的视频,优秀高端网站建设企业,沧州网站建设多少钱范式
数据库范式是一组规则。在设计关系型数据库的时候#xff0c;遵从不同的规范要求#xff0c;设计出合理的关系型数据库#xff0c;这些不同的规范要求被称为不同的范式。
关系型数据库有六种范式#xff1a;第一范式#xff08;1NF#xff09;#xff0c;第二范式遵从不同的规范要求设计出合理的关系型数据库这些不同的规范要求被称为不同的范式。关系型数据库有六种范式第一范式1NF第二范式2NF第三范式3NF巴斯-科得范式BCNF第四范式和第五范式。越高的 范式数据库冗余越小。普遍人文范式越高虽然对数据关系有更好的约束性但也可能导致数据库IO更繁忙因此在实际应用中数据库设计通常只需要满足第三范式即可。第一范式数据库表的每一列都是不可分割的原子数据项而不是集合数组对象等非原子数据在关系型数据库的设计中满足第一范式是对关系模式的要求。不满足的数据库不能成为关系型数据库示例定义一个学生表需要记录学生信息和 学校信息反例这个学校是你可以继续拆分的所以这不满足第一范式正例尽管他很丑陋但是确实是满足第一范式在关系型数据库中每一列都可以用基本数据类型表示天然满足第一范式第二范式在满足第一范式的基础上不存在非关键字对任意候选键的部分函数依赖。存在于表中定义了复合主键的情况。候选键可以唯一标识一行数据的列或者列的组合可以从候选键中选一个或者多个当做表的主键反例这张表是使用学号课程名定义复合索引唯一标识一个学生某门课程的乘积这也是这张表的主要作用学生是通过学号来确定的学生的年龄、性别和课程没有关系只依赖学号不依赖课程名学分是通过课程确定的课程的学生和学生没有关系学分只依赖课程名不依赖学生乘积同时依赖学号课程名对于使用符合主键的表如果一行数据中有些列至于复合主键中一个或者其中几个列有关那么就说他存在部分函数依赖不满足第二范式正例设计表针对需求应该设计三张表学生表、课程表和成绩表第二范式强调的是部分函数依赖当一张表中的主键只有一列时天然满足第二范式不满足第二范式可能出现的问题数据冗余比如反例中的学生的姓名、年龄、性别和课程学分重复出现造成了大量的数据冗余。更新异常如果要调整MySQL的学分那么就需要更新表中所有关于MySQL课程的记录一旦执行终端导致某些记录更新成功某些更新失败就会造成一门课程出现不同学分的情况数据不一致的问题。插入异常目前这样设计成绩和每一门课和学生都有关系也就是说学生参加选修课程考试取得成绩之后才能生成一条记录。当有一门新课还没有学生参加考试取得成绩之前这么新课在数据库中是不存在的因为成绩为空的记录没有意义。删除异常把毕业学生的考试数据全都删除此时课程和学分的信息也会被删除掉有可能导致一段时间内数据库里没有某门课程和学分的信息。第三范式在满足第二范式的基础上不存在非关键字段对任意候选键的传递依赖反例因为要描述的是学生信息并且在表中定义了IDID可以明确的标识每条学生信息在这个表结构中可以看出学生的学号、姓名、年龄、性别和主键ID强相关学院的电话和学院也是强相关在一个表中出现了两个强相关的关系而且这两个强相关关系又存在传递现象——通过学生ID可以找到学生记录学生记录中包含学院名每个学院又有自己的电话和地址。正例需要查询的时候只需要让学生表和学员表通过学院ID进行连接即可。此时所有的表满足第三范式。