企业做网站能赚钱么,免费的行情网站推荐下载安装,中国建筑管网,网站响应式和非响应式目录 一、前言二、三大范式2.1概念2.2第一范式#xff08;1NF#xff09;2.3第二范式#xff08;2NF#xff09;2.3第三范式#xff08;3NF#xff09; 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导#xff0c;有什么不对的地方#xff0c;我会及时改进… 目录 一、前言二、三大范式2.1概念2.2第一范式1NF2.3第二范式2NF2.3第三范式3NF 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导有什么不对的地方我会及时改进哦~ 博客主页链接点这里–权权的博客主页链接
二、三大范式 设计数据库的时候需要遵从的一些规范目前关系数据库有六种范式第一范式1NF、第二范式2NF、第三范式3NF、巴斯-科德范式BCNF、第四范式(4NF和第五范式5NF又称完美范式。 一般情况下满足最低要求的范式是第一范式1NF。在第一范式的基础上进一步满足更多规范要求的称为第二范式2NF其余范式以次类推。一般来说数据库只需满足第三范式(3NF)就行了。 2.1概念 范式描述的是数据关系模型一对一关系。一对多关系多对多关系 2.2第一范式1NF 关系型数据库的一个基本的要求不满足第一范式就不可以被称为关系型数据库 即表里的字段不可再分。 举例设置一个学生表
2.3第二范式2NF 在满足第一范式的基础上不存在非主键字段对任意候选键的部分函数依赖。存在于复合主键的情况下 即在满足第一范式的基础上还要满足数据表里的每一条数据记录都是可唯一标识的而且所有非主键字段都必须完全依赖主键不能只依赖主键的一部分。 正例
反例 学生选修课的成绩表
学号学生姓名课程学分成绩3小肖MySQL3100
上面这个表可以用学号跟课程作为复合主键来确定同学当前选修课的成绩。 学生的姓名跟课程没有关系也就是说学生的姓名只依赖于学号不依赖于课程。 学分与学号没有关系也就是说学分依赖于课程不依赖于学号。 对于由两个或者多个关键字段决定一条记录的情况如果一行数据中有些字段只与关键字段中的一个有关系那么这种就说她存在部分函数依赖。 如果有这样子的情况就说明这个表不满足第二范式。
学生选修课的成绩表
学号学生姓名课程学分成绩1小肖MySQL31002小王MySQL3903小强JAVA2804小苏JAVA285 不满足第二范式会出现的问题看上表: 1.数据冗余 学生姓名、课程、学分都重复出现造成了大量的数据冗余。 2.更新异常 如果需要调整JAVA的学分那么就需要更新所有记录关于JAVA的记录如果一旦某些记录更新成功某些更新失败就会造成数据中某一课程学分不一致的情况表现为数据不一致。 3.插入异常 学校新开了一门课已经定义好了学分但是学校里面没有任何关于这门课的记录目前这样的设计每一门课与同学的考试是对应关系只有同学进行考试之后才会生成一条关于这门课的成绩记录这条记录保存了课程的学分也就是说在学生考试之前在数据库中是没有相应记录的因为插入的课程信息如果学生的成绩记录为空没有学生会愿意看到他的成绩是空的所以是没有意义的这就是插入异常。 4.删除异常 学生毕业之后把毕业的同学考试记录全部都删除之后删除记录的同时也可能把课程对应的学分全部删除导致一段时间内数据库中没有课程和学分的相关信息。 2.3第三范式3NF 在第二范式的基础上不存在非关键字段对任一候选键的传递依赖。 两个强相关关系存在传递现象这种传递关系称为传递依赖。比如学生表中拿到学号可以根据学号拿到学校根据学校又可以拿到学院等信息。 反例 学生表
学号学生姓名学院学院地址学院电话2023小肖信科院中国1069
因为现在要描述的是一个学生表所以可以看出来学号是一个主键。 在这个表中学生姓名跟学号具有强关系学院地址跟学院电话是与学院强相关的。 可以看出来这条记录中出现了两种强相关关系这两个强相关关系存在传递现象 学生姓名–学号–学院–学院地址–学院电话 这样的一个传递关系称为传递依赖这种设置不满足第三范式因为存在传递依赖。 正例 根据学生与与学院的关系拆分成两个表即可。 学生表
学号学生姓名学生年龄学院编号2023小肖200052
学院表
学院编号学院地址学院电话0052长沙0735 两张表都依赖于自己表中的主键学生表可以通过外键与学院之间建立关联关系第三范式可以解决数据冗余更新异常插入异常删除异常的问题。 欧耶我学会啦