前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软考高级架构师:数据库的范式 1NF 、2NF 、3NF 和 BCNF

软考高级架构师:数据库的范式 1NF 、2NF 、3NF 和 BCNF

作者头像
明明如月学长
发布2024-05-25 12:07:34
690
发布2024-05-25 12:07:34
举报

一、AI 讲解

数据库范式是一系列规范条件的集合,这些规范条件定义了数据库表结构的合理性,以减少数据冗余和改善数据的逻辑结构。主要的范式包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和巴斯-科德范式(BCNF)。每个高级范式都建立在前一个范式的基础上。

第一范式(1NF)

定义:一个表的每个列都不可再分,且每列中的数据都是原子数据项。

示例

学号

姓名

课程

S001

张三

数据库管理, 计算机网络

不满足1NF,因为“课程”这一列中含有多个课程名称,可再分。

调整后:

学号

姓名

课程

S001

张三

数据库管理

S001

张三

计算机网络

第二范式(2NF)

定义:在1NF的基础上,消除了非主属性对于码的部分函数依赖。

示例

学号

课程

成绩

教师

S001

数据库管理

90

李四

S001

计算机网络

85

王五

假设学号+课程是主键,成绩和教师是非主属性,不存在非主属性对主键的部分依赖,因此满足2NF。

第三范式(3NF)

定义:在2NF的基础上,消除了非主属性对于码的传递函数依赖。

示例

学号

课程

成绩

教师ID

教师名

S001

数据库管理

90

T01

李四

S001

计算机网络

85

T02

王五

假设教师名依赖于教师ID,而教师ID依赖于学号+课程(主键),存在传递依赖。需要将表分解。

调整后:

学生课程表:

学号

课程

成绩

教师ID

S001

数据库管理

90

T01

S001

计算机网络

85

T02

教师表:

教师ID

教师名

T01

李四

T02

王五

BCNF(巴斯-科德范式)

定义:在3NF的基础上,消除了主属性对码的部分或传递函数依赖。

示例

假设存在一个表:

学号

课程代码

课程名称

教师

S001

C01

数据库管理

李四

S001

C02

计算机网络

王五

如果“课程代码”决定了“课程名称”和“教师”,则存在主属性对主键的依赖(即课程代码对学号+课程代码的依赖),违反了BCNF。

调整后分为两个表:

学生课程表:

学号

课程代码

S001

C01

S001

C02

课程信息表:

课程代码

课程名称

教师

C01

数据库管理

李四

C02

计算机网络

王五

二、AI 出题

(1)题目
  1. 下列哪项不是第一范式(1NF)的要求?
    • A. 数据表的每个列都不可以再分
    • B. 每一列的值必须是单一的数据项
    • C. 消除了所有的部分函数依赖
    • D. 确保表中的每个列的值都与主键直接相关
  2. 第二范式(2NF)是基于哪个范式之上的?
    • A. 1NF
    • B. 3NF
    • C. BCNF
    • D. 4NF
  3. 消除非主属性对码的哪种依赖是第二范式(2NF)的主要目标?
    • A. 部分函数依赖
    • B. 完全函数依赖
    • C. 传递函数依赖
    • D. 多值依赖
  4. 第三范式(3NF)主要解决什么问题?
    • A. 数据的原子性问题
    • B. 非主属性对主键的部分依赖问题
    • C. 非主属性对主键的传递函数依赖问题
    • D. 多值依赖问题
  5. 下列哪项是BCNF范式相对于3NF更严格要求的方面?
    • A. 数据项的原子性
    • B. 非主属性的依赖关系
    • C. 主属性对码的依赖
    • D. 外键约束
  6. 如果一个关系模式R满足BCNF,则一定满足:
    • A. 1NF但不一定

满足2NF

  • B. 2NF但不一定满足3NF
  • C. 3NF和2NF
  • D. 1NF, 2NF和3NF
  1. 在数据库设计中,范式的提升通常意味着什么?
    • A. 增加数据冗余
    • B. 减少查询效率
    • C. 减少数据冗余
    • D. 增加更新异常
  2. 一个关系模式处于3NF,但不在BCNF中,可能是因为:
    • A. 有非主属性部分依赖于主键
    • B. 有非主属性传递依赖于主键
    • C. 主属性对主键有部分依赖
    • D. 主属性对主键有传递依赖
  3. 要将一个表设计成第一范式(1NF),下列哪个操作是必要的?
    • A. 添加更多的行
    • B. 将复合属性分解成多个简单属性
    • C. 合并多个表
    • D. 引入外键
  4. 哪种范式要求一个表中不应存在非主属性对另一非主属性的依赖?
    • A. 1NF
    • B. 2NF
    • C. 3NF
    • D. BCNF
(2)答案和解析
  1. C. 消除了所有的部分函数依赖
    • 解析:第一范式(1NF)的要求是确保表中的每个字段都是不可分的原子数据项,而不是消除部分函数依赖,这是第二范式(2NF)的目标。
  2. A. 1NF
    • 解析:第二范式(2NF)是在第一范式(1NF)的基础上建立的,其目的是消除非主属性对主键的部分函数依赖。
  3. A. 部分函数依赖
    • 解析:第二范式(2NF)的主要目标是消除非主属性对码(主键)的部分函数依赖,确保每个非主属性完全函数依赖于主键。
  4. C. 非主属性对主键的传递函数依赖问题
    • 解析:第三范式(3NF)主要解决的是非主属性对主键的传递函数依赖问题,即一个非主属性依赖于另一个非主属性,而后者依赖于主键。
  5. C. 主属性对码的依赖
    • 解析:BCNF比3NF更严格,在于它还要求主属性(即参与组成主键的属性)不能对主键的任何部分存在依赖,这超出了3NF的要求。
  6. D. 1NF, 2NF和3NF
    • 解析:如果一个关系模式满足BCNF,那么它一定也满足1NF、2NF和3NF,因为BCNF是在这些范式的基础上进一步加强约束的范式。
  7. C. 减少数据冗余
    • 解析:提升数据库设计的范式级别,通常意味着通过消除数据冗余来优化数据库结构,这有助于减少存储空间和维护成本。
  8. C. 主属性对主键有部分依赖
    • 解析:如果一个关系模式处于3NF但不处于BCNF,可能的原因是存在主属性(组成候选键的属性)对码(主键)的部分依赖或传递依赖,BCNF要求消除这种依赖。
  9. B. 将复合属性分解成多个简单属性
    • 解析:要将一个表设计成第一范式(1NF),必须确保表中的每个字段都是原子的,不能被进一步分解,因此需要将复合属性分解成多个简单属性。
  10. C. 3NF
    • 解析:第三范式(3NF)要求一个表中不应存在非主属性对另一非主属性的依赖,即消除了传递依赖。

三、真题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、AI 讲解
    • 第一范式(1NF)
      • 第二范式(2NF)
        • 第三范式(3NF)
          • BCNF(巴斯-科德范式)
          • 二、AI 出题
            • (1)题目
              • (2)答案和解析
              • 三、真题
              相关产品与服务
              数据库管理
              数据库管理(Database Management Center,DMC)是一个高效,安全,可靠的数据库一站式管理平台。DMC 提供可视化的库管理、实例会话管理、SQL 窗口、SQL 安全审计、SQL 变更审批、实时监控、操作审计等数据库管理能力,集成诊断优化和数据可视化分析能力,从而简化和规范数据库管理操作、降低数据库运维门槛、提升运维效率。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档