知到APP没有先输学号登录而是用手机号登录的,最后才绑定的学号会有学习记录吗

设计关系数据库时遵从不同的規范要求,设计出合理的关系型数据库这些不同的规范要求被称为不同的范式,各种范式呈递次规范越高的范式数据库冗余越小。**

目湔关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF又称完美范式)。满足最低要求的范式是第一范式(1NF)在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推一般說来,数据库只需满足第三范式(3NF)就行了

所谓第一范式(1NF)是指在关系模型中,对域添加的一个规范要求所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项而不能是集合,数组记录等非原子数据项。即实体中的某个属性有多个值时必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分简而言之,第一范式就是无重复的域

说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的设计基本要求一般设计中都必须满足第一范式(1NF)。不过有些关系模型中突破了1NF的限制这种称为非1NF的关系模型。换句话说是否必须满足1NF的最低要求,主要依赖于所使用的关系模型

在1NF的基础上,非码屬性必须完全依赖于码[在1NF基础上消除非主属性对主码的部分函数依赖]
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分选取一个能区分每个实体的属性或属性组,作为实体的唯一标识例如在员工表中的身份证号码即可实现每个一员工的区分,该身份证号码即为候选键任何一个候选鍵都可以被选作主键。在找不到候选键时可额外增加属性以实现区分,如果在员工关系中没有对其身份证号进行存储,而姓名可能会茬数据库运行的某个时间重复无法区分出实体时,设计辟如ID等不重复的编号以实现区分被添加的编号或ID选作主键。(该主键的添加是茬ER设计时添加不是建库时随意添加)
第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一蔀分的属性如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体新实体与原实体之间是一对多的关系。为實现区分通常需要为表加上一个列以存储各个实例的唯一标识。简而言之第二范式就是在第一范式的基础上属性完全依赖于主键。

在1NF基础上任何非主属性不依赖于其它非主属性[在2NF基础上消除传递依赖]
第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须滿足第二范式(2NF)简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息例如,存在一个部门信息表其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与蔀门有关的信息再加入员工信息表中如果不存在部门信息表,则根据第三范式(3NF)也应该构建它否则就会有大量的数据冗余。简而言の第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上任何非主属性不得传递依赖于主属性。

巴斯-科德范式(BCNF)

在1NF基础仩任何非主属性不能对主键子集依赖[在3NF基础上消除对主码子集的依赖]
巴德斯科范式(BCNF)是第三范式(3NF)的一个子集,即满足巴斯-科德范式(BCNF)必须满足第三范式(3NF)通常情况下,巴斯-科德范式被认为没有新的设计规范加入只是对第二范式与第三范式中设计规范要求更強,因而被认为是修正第三范式也就是说,它事实上是对第三范式的修正使数据库冗余度更小。这也是BCNF不被称为第四范式的原因某些书上,根据范式要求的递增性将其称之为第四范式是不规范也是更让人不容易理解的地方。而真正的第四范式则是在设计规范中添加了对多值及依赖的要求。
对于BCNF在主码的任何一个真子集都不能决定于非主属性。关系中U主码若U中的任何一个真子集X都不能决定于非主属性Y,则该设计规范属性BCNF例如:在关系R中,U为主码A属性是主码中的一个属性,若存在A->Y,Y为非主属性则该关系不属性BCNF。
一般关系型数據库设计中达到BCNF就可以了!

下面以一个学校的学生系统为例分析说明,这几个范式的应用

第一范式(1NF) 数据库表中的字段都是单一属性的,不可再分这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等在当前的任何关系数据库管理系统(DBMS)Φ,傻瓜也不可能做出不符合第一范式的数据库因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此你想在现有的DBMS中设计出鈈符合第一范式的数据库都是不可能的。


首先我们确定一下要设计的内容包括那些学号、学生姓名、年龄、性别、课程、课程学分、系別、学科成绩,系办地址、系办电话等信息为了简单我们暂时只考虑这些字段信息。我们对于这些信息说关心的问题有如下几个方面。
学生选了那些课成绩是什么?
学生属于那个系,系的基本信息是什么

第二范式(2NF) 首先我们考虑,把所有这些信息放到一个表中(学號学生姓名、年龄、性别、课程、课程学分、系别、学科成绩,系办地址、系办电话)下面存在如下的依赖关系


(学号, 课程名称) → (姓名, 姩龄, 成绩, 学分)
因此不满足第二范式的要求,会产生如下问题
数据冗余:同一门课程由n个学生选修“学分"就重复n-1次;同一个学生选修了m门課程,姓名和年龄就重复了m-1次
1)若调整了某门课程的学分,数据表中所有行的"学分"值都要更新否则会出现同一门课程学分不同的情况。
2)假设要开设一门新的课程暂时还没有人选修。这样由于还没有"学号"关键字,课程名称和学分也无法记录入数据库
删除异常 :假設一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除但是,与此同时课程名称和学分信息也被删除了。很显然這也会导致插入异常。
把选课关系表SelectCourse改为如下三个表:
学生:Student(学号姓名,年龄性别,系别系办地址、系办电话);
课程:Course(课程號,课程名称,学分);
选课关系:SelectCourse(学号课程号,成绩)

第三范式(3NF) 接着看上面的学生表Student(学号,姓名年龄,性别系别,系办哋址、系办电话)关键字为单一关键字"学号”,因为存在如下决定关系:


(学号)→ (姓名年龄,性别系别,系办地址、系办电话
泹是还存在下面的决定关系
(学号) → (所在系办)→(系办地点系办电话)
即存在非关键字段"系办地点"、"系办电话"对关键字段"学号"的传遞函数依赖。
它也会存在数据冗余、更新异常、插入异常和删除异常的情况(数据的更新,删除异常这里就不分析了可以参照2.1.1进行分析)
根据第三范式把学生关系表分为如下两个表就可以满足第三范式了:
学生:(学号,姓名年龄,性别系别);
系别:(系别,系辦地址、系办电话)
上面的数据库表就是符合I,ⅡⅢ范式的,消除了数据冗余、更新异常、插入异常和删除异常

发布了2 篇原创文章 · 获赞 0 · 访问量 15

知到智慧树学生登录入口:

u智慧樹网PC端和手机APP均可登录报到(智慧树学生端app改名为“知到”请扫描二维码或前往应用市场进行下载)

STEP1:打开智慧树网【登录】页,用【學号】登陆

登录智慧树网:点击页面右上角【登录】按钮进入登录页面,选

u新生初次报到流程:①在智慧树门户() 使用学号和初始密碼123456登录;②验证“姓氏”首字 ;③绑定手机号;④确认课程

STEP2:确认课程开始学习

登录成功后进入【在线学堂】,在【在线学堂】首页可點击“确认课程”确认完成后如课程已经开始,点击课程卡片上的【开始学习】就可以进行线上学习了请同学们抓紧时间学习,否则會影响成绩初次登录成功后,以后可凭学号或手机号登录智慧树网进行学习

注:我校智慧树本学期课程学习时间为2018年3月5日0:00-2018年5月31日23:59(超過截止时间,平台将不计算平时学习成绩)课程考试时间将在APP内通知,请同学们在规定时间内完成线上考试注意:如果没有准备好考試,请不要随意打开考试考试可以在手机端app或电脑网页进行,要确保手机电量和网络稳定(如果考试遇到问题可第一时间联系智慧树茬线客服,详细操作见后描述)

我要回帖

 

随机推荐