高手请教……什么叫数据库中的范式啊

高手请教……什么叫数据库中的范式啊,第1张

这样吧:

范式,其实是一些经验丰富的前辈,根据项目经验总结出来的数据库设计方法,使用范式,可以使数据库结构更合理,效率更高。

看范式的定义,有点难以理解,我就把我理解的分享给你:

第一范式:一个实体设计成一张表;

第二范式:每张表要设置一个主键;

第三范式:表与表之间的关系,使用外键;

第四范式:如果如果三张或三张以上的表之间有主外关系,那么要跨过中间表添加个外键,比方说:

公司表

部门表

员工表

当三表连接的时候,如果在员工表中添加公司编号作为外键,可以快捷地根据公司查询员工,提高效率。

第五范式:适当的地方增加冗余字段,这个跟第四范式有点像,在第四范式基础上举个例子:

如果增加了职位表,考勤表,那么在考勤表中,按前三范式的原则,只需要添加一个员工编号即可,但是实际设计的时候,适应增加公司编号和部门编号,就单是考勤这个功能而言,可以减少多表连接,而直接从考勤表中获取到公司或部门的考勤记录。

明白否??

1、第一范式:指在同一表中没有重复项出现,如果有则应将重复项去掉。这个去掉重复项的过程称为规范化处理。

2、第二范式:指每个表必须有一个且仅有一个数据元素为主关键字,,其他数据元素与主关键字一一对应。通常称这种关系为函数依赖关系,即表中其他数据元素都依赖于主关键字,或称该数据元素惟一地被主关键字所标识。

3、第三范式:指表中的所有数据元素不但要能唯一地被主关键字所标识,且它们之间还必须相互独立,不存在其他的函数关系。

4、第四范式:是在关系数据库中,对关系的最基本要求的满足第一范式。是合法的,允许的。有些关系模式存在插入、删除、修改异常、数据冗余等弊病,人们寻求解决这些问题的方法,这就是规范化的目的。

5、第五范式:指关系模式R依赖均由R候选码所隐含。

第一范式:每个属性不可分割

第二范式:在第一范式的基础上,每个非主属性必须函数依赖于码

第三范式:在第二范式上消除码间的传递

还有BCNF,4NF

可以查阅相关资料

如何判断,判断的基准是依靠定义来判断的

1nf>2nf>3nf>bcnf>4nf

第一范式(1NF)

(必须有主键,列不可分)

数据库表中的任何字段都是单一属性的,不可再分

create table aa(id int,NameAge varchar(100))

insert aa values(1,''无限-女'')

没有达到第一范式

create table aa(id int,name varcahr(10),age char(2))

insert aa values(1,''无限'',''女'')

达到第一范式

第二范式(2NF)

数据库表中非关键字段对任一候选关键字段的 都不存在部分函数依赖

(当一个表是复合主键时,非主键的字段不依赖于部分主键(即必须依赖于全部的主键字段))

create table sci(

sno int(32),cno int(32),grade int(32),credit int(32),

primary key sno,cno

)

课程(cno)1---1学分(credit)

学生(sno)n---n课程(cno)

学生+课程--->分数(grade)

sci

sno cno grade credit

1 1 60 80

2 1 90 80

3 1 70 80

如此以来,学分被大量重复存储,数据冗余

如要某课程学分,则要大量重复 *** 作

如要加新课程,由于sno和cno共同做为主键,则在加入新课程时,必须有人选该课

如某学生某课程结业,则该学生其它课程信息也同时被删除了

总之

这种设计不太好吧,非关键字属性credit仅函数依赖于cno,也就是credit部分依赖组合关键字(sno,cno)而不是完全依赖

解决

分成两个关系模式 sc1(sno,cno,grade),c2(cno,credit)。新关系包括两个关系模式,它们之间通过sc1中的外关键字cno相联系,需要时再进行自然联接,恢复了原来的关系

第三范式(3NF)

关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递依赖

例----S1(SNO,SNAME,DNO, DNAME, LOCATION)

学号 姓名 所在系 系名称 系地址

关键字SNO决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是2NF。但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。

原因:关系中存在传递依赖造成的。即SNO 1->1 DNO。 而DNO 1->n SNO却不存在,而DNO -> LOCATION存在, 因此关键辽 SNO 对 LOCATION 函数决定是通过传递依赖 SNO -> LOCATION 实现的。也就是说,SNO不直接决定非主属性LOCATION。

解决目地:每个关系模式中不能留有传递依赖。

解决方法:分为两个关系 S(SNO,SNAME,DNO),D(DNO,DNAME,LOCATION)

注意:关系S中不能没有外关键字DNO。否则两个关系之间失去联系

以上就是关于高手请教……什么叫数据库中的范式啊全部的内容,包括:高手请教……什么叫数据库中的范式啊、数据库五大范式是什么、数据库中,三种范式之间的区别,如何判断某个关系属于第几范式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10133405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存