希赛考试网
首页 > 软考 > 软件设计师

怎么判断属于几范式

希赛网 2024-07-01 14:41:06

关系型数据库范式分为1NF(第一范式)、2NF(第二范式)、3NF(第三范式)和BCNF(巴斯-科德范式)四个级别。几个范式均具备不同的优缺点,具体如何判断属于哪个范式则需从多个角度分析。

1.第一范式

第一范式是指在数据库表中,每个字段都是不可再分的,也就是说每个字段只能有一个值,不能再选择分成别的字段。例如,学生表字段包含:id、姓名、学号、专业、科目,其中“姓名”字段不能再分成“姓”和“名”两个字段。若存在多个值,需要将其拆分成多条记录。

2.第二范式

第二范式是在第一范式的基础上,每个非主关键字(非主键字段)都只依赖于主关键字,而不能依赖于非主关键字。例如,学生成绩表中包含字段:课程名称、学号、学期、教师姓名、教师所处院系。这个表不符合第二范式,因为“教师所处院系”字段依赖于“教师姓名”字段,而“教师姓名”不是主关键字。需要将其分解成两个表,一张表单独存储“课程名称、学号、学期”信息,另一张表存储“教师姓名、教师所处院系”信息,并以教师姓名作为关联字段。

3.第三范式

第三范式是在第二范式的基础上,每个字段都只依赖于主键,而不依赖于其他字段。例如,学生表中包含字段:学号、姓名、性别、入学年份、所处院系、专业、课程名称、成绩。这个表不符合第三范式,因为“课程名称、成绩”字段与主键“学号”并不直接相关。需要将其拆分成两个表,一个表存储“学号、姓名、性别、入学年份、所处院系、专业”,另一个表存储“学号、课程名称、成绩”。

4.BCNF范式

BCNF范式是在第三范式的基础上进一步的优化。在第三范式中,仍有可能出现某些数据更新异常的情况。例如,课程表中包含字段:课程编号、教师编号、教师姓名、教师所属院系、学期、学分。其中“教师姓名、教师所属院系”需要根据“教师编号”来进行更新。如果同时需要修改多条记录,且修改的教师编号不一样,就会出现数据更新异常。需要将其拆分成两张表,一张表存储“课程编号、教师编号、学期、学分”,另一张表存储“教师编号、教师姓名、教师所属院系”。

综上所述,几个范式的基本思想均为将数据进行规范化,以保证数据库“不重、不漏、森严有序”。在实际的数据库设计中,若数据满足第三范式,已经足够,不一定需要一定遵循BCNF范式,应根据实际情况进行判断和选择,以达到最优化的数据存储模式。

软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考资格查询系统

扫一扫,自助查询报考条件