软考高级:数据库知识点数据库的范式和例题

2024-05-24 15:14:31 浏览数 (2)

一、AI 讲解

数据库设计的范式是一组规则,用于指导如何组织数据库中的数据,以提高数据的逻辑一致性、减少数据冗余和提高数据操作的效率。下面我将通过几个范式的定义和示例来进行讲解。

第一范式(1NF)

定义: 数据库表中的所有字段值都是不可分割的原子值。换句话说,表的每列都是不可再分的数据项,每个字段中存储的是基本的数据项,不能再包含多个值,即实现字段的原子性。

示例:

不符合1NF的表:

学号

姓名

课程

001

张三

数学, 英语

002

李四

物理, 化学, 生物

转换为符合1NF的表:

学号

姓名

课程

001

张三

数学

001

张三

英语

002

李四

物理

002

李四

化学

002

李四

生物

第二范式(2NF)

定义: 在第一范式的基础上,非主属性完全依赖于主键。即表中的非主键字段必须完全依赖于主键,不能只依赖于主键的一部分(针对于组合主键)。

示例:

不符合2NF的表(已符合1NF):

学号

课程代码

分数

课程名称

001

MATH101

85

数学

001

ENG102

90

英语

这里“课程名称”依赖于“课程代码”,而不是完全依赖于主键(学号 课程代码)。

转换为符合2NF的表:

学生表:

学号

课程代码

分数

001

MATH101

85

001

ENG102

90

课程表:

课程代码

课程名称

MATH101

数学

ENG102

英语

第三范式(3NF)

定义: 在第二范式的基础上,非主属性不依赖于其他非主属性,即除了主键之外的字段必须相互独立。

示例:

不符合3NF的表(已符合2NF):

学号

课程代码

分数

教师姓名

教师电话

001

MATH101

85

王老师

123456

002

ENG102

90

李老师

654321

这里“教师电话”依赖于“教师姓名”,而不是依赖于主键。

转换为符合3NF的表:

学生课程表:

学号

课程代码

分数

001

MATH101

85

002

ENG102

90

教师表:

教师姓名

教师电话

王老师

123456

李老师

654321

以上就是数据库设计中的三个基本范式,通过这些范式的应用,可以有效地规范数据库设计,减少数据冗余,提高数据的一致性和可维护性。接下来,我会出几道相关的选择题。

二、AI 出题

  1. 下列哪项描述符合第一范式(1NF)的要求? A. 表中的每个字段都可以有重复的值 B. 表中的每个字段值都是可分割的 C. 表中的每个字段值都是不可分割的原子值 D. 表中可以存在重复的记录
  2. 在数据库范式中,如果一个表要满足第二范式(2NF),它首先必须满足: A. 第三范式(3NF) B. 第一范式(1NF) C. BCNF D. 第四范式(4NF)
  3. 关于第三范式(3NF)的描述,下列哪项是正确的? A. 非主属性可以依赖于其他非主属性 B. 任何非主属性都不能依赖于其他非主属性 C. 只要满足了2NF就自然满足3NF D. 主键中的每个键都可以依赖于非主属性
  4. 假设有一个学生选课系统的数据库表,其中包含“学号”、“课程名称”和“成绩”三个字段。为了使这个表达到第一范式(1NF),必须保证: A. 每个学生只能选一门课 B. “课程名称”字段中可以包含多个课程名称 C. “成绩”字段中不能包含多个成绩值 D. “学号”字段必须是唯一的
  5. 以下哪个例子不符合第二范式(2NF)? A. 学生表,其中包括学生ID、姓名和年龄 B. 课程表,其中包括课程ID、课程名称和学分 C. 成绩表,其中包括学生ID、课程ID、分数和课程名称 D. 教师表,其中包括教师ID、姓名和所授课程ID
  6. 如果一个表已经满足第三范式(3NF),下列哪项是一定成立的? A. 表中不可能存在任何传递依赖 B. 表中一定存在部分依赖 C. 表中一定存在冗余数据 D. 表中一定包含组合主键

答案:

  1. C. 表中的每个字段值都是不可分割的原子值
  2. B. 第一范式(1NF)
  3. B. 任何非主属性都不能依赖于其他非主属性
  4. C. “成绩”字段中不能包含多个成绩值
  5. C. 成绩表,其中包括学生ID、课程ID、分数和课程名称(因为课程名称依赖于课程ID,不满足非主属性完全依赖于主键的要求)
  6. A. 表中不可能存在任何传递依赖(因为3NF要求非主属性不依赖于其他非主属性,消除了传递依赖)

0 人点赞