第23章:范式

一、范式

1.什么是范式

关于数据表设计的基本原则,规则就是范式NF。

2.范式都包括哪些?

第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF - Boyce Codd Normal Form)、第四范式(4NF)和第五范式(5NF,又称完美范式)

 

3.键和相关属性的概念

球员表(player) :球员编号 | 姓名 | 身份证号 | 年龄 | 球队编号

球队表(team) :球队编号 | 主教练 | 球队所在地

①候选键:可以作为主键的所有字段。比如球员表的(球员编号),(身份证号)

②主键:非空且唯一的,从候选键选择一个。比如球员表的(球员编号)或(身份证号)

③超键:主键+其他字段的组合。(球员编号+姓名),(身份证号+年龄)

④外键:父表的主键,球队表(team) 的球队编号

⑤主属性:只包括主键的字段。比如球员表的(球员编号),(身份证号)。反之其他字段就是非主属性

第一范式1st NF

1.什么是第一范式

数据表的每一列都是不可分割的基本数据项,同一个列不能有多个属性,是不可再次拆分的最小单元。

2.举例

user 表的设计不符合第一范式

 user_info可以进一步拆分最小的单元

第二范式2st NF

1.什么是第二范式

在第一范式的基础上,数据表里的每一条数据记录都是唯一的。所有的非主键字段都完全依赖主键字段,不能部分依赖主键的某个部分。一张表只表达一个意思

 

举例1

成绩表 (学号,课程号,成绩)关系中,(学号,课程号)可以决定成绩,但是学号不能决定成绩,课程号也不能决定成绩,所以“(学号,课程号)→成绩”就是 完全依赖关系 。

举例2

比赛表 player_game ,里面包含球员编号、姓名、年龄、比赛编号、比赛时间和比赛场地等属性,这里候选键和主键都为(球员编号,比赛编号),我们可以通过候选键(或主键)来决定如下的关系:

(球员编号, 比赛编号) → (姓名, 年龄, 比赛时间, 比赛场地,得分)

符合第二范式的分析:

(球员编号) → (姓名,年龄)

(比赛编号) → (比赛时间, 比赛场地)

(球员编号, 比赛编号) → (得分)

第三范式3st NF

1.什么是第三范式

满足第二范式,非主键直接和主键关联。数据表中的非主键之间没有任何关联。

 

举例1

部门信息表 :每个部门有部门编号(dept_id)、部门名称、部门简介等信息。

员工信息表 :每个员工有员工编号、姓名、部门编号。列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。

举例2:

商品类别名称依赖于商品类别编号,不符合第三范式。

修改:

表1:商品类别表

 表2:商品表

小结

1.数据表的设计遵循的三个范式:

①第一范式(1NF),确保每列保持原子性

数据库的每一列都是不可分割的原子数据项,不可再分的最小数据单元,而不能是集合、数组、记录等非原子数据项。

②第二范式(2NF),确保每列都和主键完全依赖

尤其在复合主键的情况下,非主键部分不应该依赖于部分主键。

③第三范式(3NF)确保每列都和主键列 直接相关,而不是间接相关

2.范式的优缺点

范式的优点:数据的标准化有助于消除数据库中的数据冗余,第三范式(3NF) 通常被认为在性能、扩展性和数据完整性方面达到了最好的平衡。

范式的缺点:范式的使用,可能降低查询的效率。因为范式等级越高,设计出来的数据表就越多、越精细,数据的几余度就越低,进行数据查询的时候就可能需要 关联多张表 ,这不但代价昂贵,也可能使一些 索引策略无效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/15771.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

消息队列黄金三剑客:RabbitMQ、RocketMQ和Kafka全面对决,谁是最佳选择?

1、应用场景 1.RabbitMQ: 适用于易用性和灵活性要求较高的场景 异步任务处理:RabbitMQ提供可靠的消息传递机制,适用于处理异步任务,例如将耗时的任务放入消息队列中,然后由消费者异步处理,提高系统的响应…

linux 如何挂载fat32格式u盘,如何挂载NTFS 文件系统的硬盘

linux系统默认可以识别fat32u盘,对ntfs格式u盘不能识别 具体挂载方式如下 1、插入u盘 2、mkdir /mnt/usb 此命令用于创建挂载u盘的目录,只需创建一次就可以,若已经存在则不需要再次创建 3、fdisk -l 找到u盘路径 上图显示的sdb1,sdb2,sdb5…

JMeter常用业务知识和组件(5)

这里写目录标题 一、信息头管理器1案例、测试开发平台登录接口2案例、测试平台获取测试用例接口 二、HTTP请求默认值案例1:实现登录接口测试 三、Cookie管理器(有问题)案例1:开源项目TPshop商城登录案例案例2:(有问题)…

常用数据回归建模算法总结记录

本文的主要目的是总结记录日常学习工作中常用到的一些数据回归拟合算法,对其原理简单总结记录,同时分析对应的优缺点,以后需要的时候可以直接翻看,避免每次都要查询浪费时间,欢迎补充。 (1)线性回归 (Linear Regressio…

【云原生|Docker系列第1篇】什么?你竟然还不知道Docker?

欢迎来到Docker入门系列的第一篇博客!在当今的应用开发和部署领域,Docker已经成为一项极具吸引力的关键技术。本篇博客将为您介绍Docker的基本概念和作用,并解释为什么它成为现代应用开发和部署的终极利器。无论您是开发人员、系统管理员还是…

Cesium 实战 - AGI_articulations 扩展:模型自定义关节动作

Cesium 实战 - AGI_articulations 扩展:模型自定义关节动作 简要概述两种方式实现模型组件动作模型添加关节(articulations)1.导入模型(J15.glb)2.查看模型内部组件信息(名称)4.将需要J15.glb复…

java版本Spring Cloud + Spring Boot +二次开发+企业电子招标采购系统源码

一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点:对草稿进行编辑&#x…

【C】指针详解(一篇文章带你玩转指针)

指针详解 指针是什么?指针和指针类型指针加减整数指针的解引用 野指针野指针的成因如何规避野指针 指针和数组的关系数组名是什么? 二级指针二级指针是什么?二级指针的运算 字符指针指针数组和数组指针指针数组数组名和&数组名数组指针数…

(Docker) Compose Plugin For OMV6

omv6:omv6_plugins:docker_compose [omv-extras.org] Summary概述 Docker is a technology that enables the creation and use of Linux containers. A container is a closed environment where one or more applications and their dependencies are installed, grouped and…

【CSS】浮动

📝个人主页:爱吃炫迈 💌系列专栏:HTMLCSS 🧑‍💻座右铭:道阻且长,行则将至💗 文章目录 浮动浮动的规则浮动的案例浮动的清除 浮动 float属性可以指定一个元素应沿其容器的…

火车头采集器AI伪原创【php源码】

本文介绍火车头采集器AI伪原创,对于新媒体从业者来说,会写文章是最基本的职业技能,而伪原创是我们经常使用的技能。今天我要讲的是SEO标兵如何在伪原创上创作文章。 首先,原创性永远是最好的,更受读者欢迎。伪原创的出…

基于GPT构建单细胞多组学基础模型

生成式预训练模型在自然语言处理和计算机视觉等各个领域取得了显著的成功。特别是将大规模多样化的数据集与预训练的Transformer相结合,已经成为开发基础模型的一种有前途的方法。文本由单词组成,细胞可以通过基因进行表征。这种类比启发作者探索细胞和基…