当前位置: 首页 > news >正文

大数据学习(71)-三范式构成

🍋🍋大数据学习🍋🍋

🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞


一、第一范式(1NF)

简单说列不能再分,即数据库表中的字段都是单一属性,不可再分的。(也需要根据任务需求)

举例

假设有一个“员工”表,每个员工都有一个唯一的“员工编号”,同时表中可能还包括其他字段,如姓名、性别、出生日期和住址等。在最初的设计中,住址可能是一个字段,但考虑到住址可能包括家庭住址和现住址等多个部分,这样的设计就不符合第一范式。为了满足第一范式,需要将住址拆分为“家庭住址”和“现住址”两个字段,使得每个字段都是不可分割的原子项。

二、第二范式(2NF)

简单说建立在第一范式基础上,消除部分依赖,即要求每个非主属性都完全依赖于主属性,而不是仅仅依赖于主键的一部分。

举例

考虑一个“学生成绩”表,其中包括学号、姓名、性别、课程、课程编号、课程学分和分数等字段。在实际生活中,姓名和性别只依赖于学号(因为一个学生有一个唯一的学号,但可能有重名的情况),而课程编号和课程学分只依赖于课程。此外,分数完全依赖于学号和课程的组合(即主键)。这样的设计就存在部分依赖的问题,因为非主属性(如姓名、性别、课程编号和课程学分)并没有完全依赖于主键。

为了满足第二范式,可以将表拆分为多个表,如“学生”表(包括学号、姓名和性别等字段)和“成绩”表(包括学号、课程、分数等字段),以及“课程信息”表(包括课程编号、课程学分和课程名称等字段)。这样,每个非主属性都完全依赖于其所在表的主键。

三、第三范式(3NF)

简单说建立在第二范式基础上,消除传递依赖,即要求非主属性之间不存在传递依赖关系,每个非主属性都必须直接依赖于主键。

举例

假设有一个“学生信息”表,其中包括学号、姓名、性别、电话和住址等字段。主键是学号,其他非主键字段(姓名、性别、电话和住址)都完全依赖于主键。然而,如果进一步分析,可能会发现电话和住址实际上更依赖于姓名(而不是直接依赖于学号),这就构成了传递依赖。

为了满足第三范式,可以将表进一步拆分为“学生”表(包括学号、姓名等字段)和“学生联系信息”表(包括姓名、性别、电话和住址等字段)。这样,每个非主属性都直接依赖于其所在表的主键(或候选键),消除了传递依赖。

四、总结

范式是数据库设计时遵循的一种规范,不同的规范要求遵循不同的范式。

第一范式(1NF):简单说 列不能再分

第二范式(2NF):简单说 建立在第一范式基础上,消除部分依赖

第三范式(3NF):简单说 建立在第二范式基础上,消除传递依赖。

相关文章:

  • pycharm-python國際象棋遊戲代碼
  • 【程序人生】成功人生架构图(分层模型)
  • 前端面试:ajax 和 xhr 是什么关系?
  • 内网攻防——红日靶场(一)
  • 织梦dedecms管理员密码重置工具下载
  • 深度学习框架PyTorch——从入门到精通(4)数据转换
  • 深入探讨TK矩阵系统:创新的TikTok运营工具
  • Redis 三主三从集群部署的完整方案
  • 华为营销流程落地方案:MTC=MTL+LTC
  • ETL中的实用功能以及数据集成方式
  • go语言中切片的长度和容量详解
  • opencv测量线距算法以及深入理解轮廓、采样点与 `pointPolygonTest` 及其在测量线距中的应用
  • Qt 中 isHidden 和 isVisible 的区别与使用
  • Spring 导入 XML 配置文件:@ImportResource
  • 力扣Hot100——560. 和为 K 的子数组
  • iwebsec-SQL数字型注入
  • 基于WebRTC的嵌入式音视频通话SDK:EasyRTC跨平台兼容性技术架构实时通信的底层实现
  • kotlin中的数据转换
  • Qt 通过MSVC编译运行项目
  • numpy学习笔记1:zeros = np.zeros((3, 3)) 详解
  • 滨江集团:一季度营收225.07亿元,净利润9.75亿元
  • 广东省副省长刘红兵跨省调任湖南省委常委、宣传部长
  • 以“最美通缉犯”为噱头直播?光明网:违法犯罪不应成网红跳板
  • 买新房可申领学位,广州南沙出台购房入学政策
  • 十四届全国人大常委会第十五次会议继续审议民营经济促进法草案
  • 外交部:印度香客赴中国西藏神山圣湖朝圣将于今年夏季恢复