当前位置:网站首页>数据库的范式(第一范式,第二范式,第三范式,BCNF范式)「建议收藏」
数据库的范式(第一范式,第二范式,第三范式,BCNF范式)「建议收藏」
2022-07-31 15:06:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
在了解范式之前我们先了解下数据库中关于码的概念
1.码
1.1 超码
能够唯一标识元组的某一属性或属性组,任何包含超码的超集也是超码,这里唯一标识元组可以简单的理解为根据某一个字段或几个字段的值,查询出某一行特定的数据
1.2 候选码
从超码中选出的最小的码,即其任何真子集都不能满足条件。即属性不可再删减。
1.3 主码
从候选码中选出一个作为主码。
2.范式(NF)
范式:符合某一种级别的关系模式的集合,简而言之就数据库表设计的标准级别,范式有1NF,2NF,3NF,BCNF,4NF等,通常高级别的范式包含低级别的范式。数据库的设计一般到BCNF即可,有时候为了性能要就也会
2.1 1范式(1NF)
1范式:关系中的表的属性不可再分割。 举个简单的例子,有个学生表,有以下字段,sid,sname,address,sid为主键,sname为学生姓名,address为地址,地址的数据可能包括省份,城市,街道之类的。日后可能我们需要单独统计有个城市有多少学生之类的,而将这么多信息合成一个属性,即不符合第1范式,属性应该分割成省份,城市等多个字段,来满足业务要求。
2.2 2范式(2NF)
2范式:消除非主属性对码的部分函数依赖。 函数依赖:简单的说,如果对于每个x属性或属性组都有对应的确切的y值与之对应,则称Y函数依赖于x。记做 x->y 完全函数依赖:有x->y,但对于x的任意真子集都不存在x’->y,称之为完全函数依赖。比如有一张成绩表,有若干字段,学号,课程,成绩。 (学号,课程)->成绩,任意(学号) !-> 成绩,(课程)!-》成绩,我们称成绩完全依赖于(学号,课程) 部分函数依赖:Y函数不完全依赖于x叫部分函数依赖,例如(学号,课程)->课程名),学号和课程名无关,即(课程)->课程名。
2.3 3范式(3NF)
3范式:消除非主属性对码的传递函数依赖 传递函数依赖: 一个关系R(U),X,Y,Z为属性集U上的子集,其中存在X→Y和Y→Z,但Y不决定X,即 Y!->X 同时Y不包含Z,则存在X→Z,即X传递函数决定Z,Z传递函数依赖于X。 例如:商品表:商品名->仓库,仓库!->商品,仓库->仓库管理员,仓库管理员 !->仓库(假定一个仓库可以有多个管理员) 。
2.4 BCNF范式(BCNF)
BCNF范式:消除主属性之间的间接函数依赖和传递函数依赖。
3.总结
一般我们数据库设计到3范式或BCNF范式即可,但是在实际项目中总是在性能和扩展性中做取舍。数据库设计标准越高,可扩展性越好,耦合性越低,但性能也会受损。所以有时候会到2范式,为了减少表与表之间的关联,加快查询速度,各种利弊还需自己权衡。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128339.html原文链接:https://javaforall.cn
边栏推荐
猜你喜欢
分成两栏后文字顺序混乱的问题解决【写期刊论文时】
Efficient use of RecyclerView Section 1
TRACE32 - SNOOPer-based variable logging
LeetCode二叉树系列——222.完全二叉树的节点个数
使用 Chainlink Keepers 实现智能合约函数的自动化执行
OAuth2:微服务权限校验Session共享
Spark学习(2)-Spark环境搭建-Local
RecyclerView的高效使用第一节
浏览器自带的拾色器
"Listen to me, thank you" can be said in ancient poetry?Tsinghua University has developed an artifact of "Searching Sentences According to Meaning", which can search for the famous sayings you want wi
随机推荐
R language moves time series data forward or backward (custom lag or lead period): use the lag function in the dplyr package to move the time series data forward by one day (set the parameter n to a p
Web自动化实战——Selenium4(自动化测试环境的搭建)
R语言检验样本是否符合正态性(检验样本是否来自一个正态分布总体):shapiro.test函数检验样本是否符合正态分布(normality test)
Kubernetes原理剖析与实战应用手册,太全了
浏览器自带的拾色器
MANIFEST.MF文件(PDB文件)
The paper manual becomes 3D animation in seconds, the latest research of Wu Jiajun of Stanford University, selected for ECCV 2022
自动化测试如何创造业务价值?
基于极限学习机(ELM)进行多变量用电量预测(Matlab代码实现)
STM32(十)------- SPI通信
分成两栏后文字顺序混乱的问题解决【写期刊论文时】
女性服务社群产品设计
SQL、HQL、JPQL 到底有什么区别
Spark学习(3)-Spark环境搭建-Standalone
网银被盗?这篇文章告诉你如何安全使用网银
Description of Hikvision camera streaming RTSP address rules
thread_local 变量的析构顺序
Jmeter常用的十大组件
ERROR: Failed building wheel for osgeo
为什么黑客领域几乎一片男生?