数据库范式1NF 2NF 3NF BCNF通俗讲解-程序员宅基地

技术标签: 数据库  

1NF(第一范式)

在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项。
同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
简而言之,第一范式就是无重复的列。

2NF(第二范式)

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。
第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。
第二范式(2NF)要求实体的属性完全依赖于主关键字。
简而言之,第二范式就是非主属性非部分依赖于主关键字。

3NF(第三范式)

满足第三范式(3NF)必须先满足第二范式(2NF)。
第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
简而言之,第三范式就是属性不依赖于其它非主属性。

BCNF

在第三范式的基础上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合第三范式。

范式说明

第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。
第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。
第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:
关键字段 → 非关键字段x → 非关键字段y

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yekeSAN/article/details/106679726

智能推荐

概率统计Python计算:经典分布数学期望的计算_二项分布的数学期望py程序-程序员宅基地

文章浏览阅读6.3k次,点赞10次,收藏36次。我们知道Python的scipy.stats包提供了大量的经典分布(如0-1分布、二项分布、泊松分布,均匀分布,指数分布,正态分布……等等),这些经典分布对象拥有计算数学期望的expect函数,该函数的调用接口为expect(func=x, args).\text{expect(func=x, args)}.expect(func=x, args).传递正确的分布参数给args就能计算指定随机变量的数学期望值,参数func的缺省值为自变量xxx,传递指定函数即可计算随机变量函数的期望_二项分布的数学期望py程序

生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价及拓展_生态脆弱度指数-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏16次。随着3S技术和多种学科的交流与发展,相比以往传统生态环境监测分析中,受到数据可视化、数据获取、数据空间分析、时效性、监测范围的限制,3S技术中遥感技术具备观测面积大、时效性强、位置定位精确的优势;近年来,国内外学者在生态系统的敏感性、适应能力和潜在影响等方面开展了大量的生态脆弱性研究,他们普遍将生态脆弱性概念与农牧交错带、喀斯特地区、黄土高原区、流域、城市等相结合,评价不同类型研究区的生态脆弱特征,其研究内容主要包括脆弱性的时空演变、动态监测、影响机理和驱动因子等方面的分析。_生态脆弱度指数

cocos2dx之使用bindings-generator 工具生成C++类为ToLua接口_cocos bindings-generator 怎么使用-程序员宅基地

文章浏览阅读4.3k次。前言原项目使用的是cocos2d-x4.0开发,但是中途想加入热更新特性.提到热更新,首先想到的是Lua.Lua作为一门脚本语言,运行效率也是极高的,并且语法简单,易于使用.为了在不影响当前项目的情况下接入Lua,我考虑使用cocos官方提供的一套工具链, cocos(C++) + tolua + lua +luacocos2d如何将luacocos2d接入现有cocos2d-cpp项目中,可以参考我的其他文章 , 本篇仅介绍如何使用工具将c++代码生成为tolua接口代码一、环境windows_cocos bindings-generator 怎么使用

VBS 去除文件夹下 Excel 的公式-程序员宅基地

文章浏览阅读244次。注意问题window 环境下运行, 代码 ANSI 编码格式保存。直接放到需要转换的文件夹下,双击运行。代码function getfolder() getfolder=left(wscript.scriptfullname,instrrev(wscript.scriptfullname,"\")-1) end function Call ShowFileL..._excel 如何导出数值与文字 去除公式vbs

kafka实战项目,分布式面试题java-程序员宅基地

文章浏览阅读791次,点赞17次,收藏13次。让你在简历上可以增加性能调优经验,从此横扫一切关于性能优化的面试问题,吊打所有敢于提问性能优化的面试官,成为一个行走的offer收割机!整理的这些架构技术希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)(img-xICgbMVI-1709560209363)](img-a8SgW74H-1709560209364)]

达梦数据库:DIsql的基本操作和常用命令_disql -e-程序员宅基地

文章浏览阅读1.7w次。DIsql 是 DM 数据库的一个命令行客户端工具,用来与 DM 数据库服务器进行交互。DIsql 识别用户输入,将用户输入的 SQL 语句打包发送给 DM 数据库服务器执行,并接收服务器的执行结果,并按用户的要求将执行结果展示给用户。为了更好地与用户交互和展示执行结果,用户也可以在 DIsql 中执行 DIsql 命令,这些命令由 DIsql 工具自身进行处理,不被发送给数据库服务器。SQL 语句在 DIsql 中执行完后都被保存在一个特定的内存区域中,用户可以通过上下键查找到这些保存在内存._disql -e

随便推点

overleaf 参考文献引用,创建引用目录.bib文件,在文档中引用参考文献,生成参考文献列表_overleaf参考文献引用-程序员宅基地

文章浏览阅读1.3w次,点赞60次,收藏178次。overleaf 参考文献引用,创建引用目录.bib文件,在文档中引用参考文献,生成参考文献列表_overleaf参考文献引用

支持手机电脑 USB-C视频信号传输的投影仪方案_手机type-c连接投影仪-程序员宅基地

文章浏览阅读430次。再从Power上面来看,DC接口的22V-32V的电源输入,经过DC-DC芯片,从USB Type-C接口输出5V-9V-12V-15V-20V的电压,当然这个电压输出多少,决定于插入单USB Type-C接口桌面显示器的手机或者显示器跟LDR6290的CC协议通讯,再由LDR6290控制DC-DC芯片的FB产生。Type-c接口显示器不仅可以从手机,笔电,平板,Switch输出视频投射到显示器上,还可以反向给手机,平板等设备充电,接下来我们详细看看原理。_手机type-c连接投影仪

android 控件 折叠toolbar-CollapsingToolbarLayout_android 滚动时折叠控件-程序员宅基地

文章浏览阅读261次。CollapsingToolbarLayout作用是提供了一个可以折叠的Toolbar,它继承至FrameLayout,给它设置layout_scrollFlags,它可以控制包含在CollapsingToolbarLayout中的控件(如:ImageView、Toolbar)在响应layout_behavior事件时作出相应的scrollFlags滚动事件(移除屏幕或固定在屏幕顶端)。使用C_android 滚动时折叠控件

自动驾驶中的坐标系_车体坐标系-程序员宅基地

文章浏览阅读8.9k次,点赞17次,收藏157次。自动驾驶中的坐标系0.引言1.相机传感器坐标系2.激光雷达坐标系3.车体坐标系4.世界坐标系4.1.地理坐标系4.2.投影坐标系4.2.1.投影方式4.2.2.通用横轴墨卡托UTM投影5.自动驾驶中的坐标定位0.引言总结于网络。重点在世界坐标系理解。图自图自1.相机传感器坐标系针孔模型:图自2.激光雷达坐标系Velodyne生产的64线激光雷达HDL64:64线激光雷达进行环境扫描过程:单帧扫描数据64线激光雷达进行环境扫描过程:全周扫描数据激光雷_车体坐标系

AliOS编译三方库_alios ndk编译-程序员宅基地

文章浏览阅读980次,点赞20次,收藏16次。CMAKE_INSTALL_PREFIX环境变量定义cmake执行make install命令时的安装路径。CMAKE_FIND_ROOT_PATH指示,编译依赖文件的根路径,可以设置成默认的。这里的TOOLCHAIN_ROOT是上面导出的环境变量,指向了编译后的ndk路径。源码解压后,存在CMakeLists.txt,可以通过cmake编译。首先将ndk拷贝到服务器中,这里准备将ndk解压到aliNDK中。执行完成之后,在out/install目录下生成相应文件。使用tar命令解压,并指定解压目录。_alios ndk编译

RT-Thread 文件系统的命令_rtthread echo-程序员宅基地

文章浏览阅读1.9k次。1、echo用于字符串的输出详细解释:https://www.cnblogs.com/Spiro-K/p/6360489.html2、ls展现当前目录详解:https://www.runoob.com/linux/linux-comm-ls.html3、cat查看文本内容详解:https://www.runoob.com/linux/linux-comm-cat.htm..._rtthread echo

推荐文章

热门文章

相关标签