数据库设计规范理解什么是数据库规范化

数据库设计规范  时间:2021-09-15  阅读:()

详细说明数据库规范的三个范式 ??

关系数据库中的关系要满足一定的要求。

若关系满足不同程度的要求,就称它属于不同的范式(Normal Form)。

范式也叫关系范式,因为范式存在于关系中。

范式是关系模式满足不同程度的规范化要求的标准。

满足最低程度要求的范式属于第一范式,简称1NF;在第一范式中进一步满足一些要求的关系属于第二范式,简称2NF,依次类推,还有3NF、BCNF、4NF、5NF,这些都是关系范式。

  对关系模式的属性间的函数依赖加以不同的限制就形成了不同的范式。

这些范式是递进的,即如果是一个关系是1NF的,它比不是1NF的关系要好;同样,2NF的关系比1NF的关系要好等等,范式越高、规范化程度越高,关系模式就越好。

第一范式   定义 设 R 是一个关系模式,如果 R 中的每一个属性 A 的值域中的每个值都是不可分解的,则称 R 是属于第一范式的,记作 R ∈ 1NF。

  例如:在关系 SA(姓名,工资)中,属性“工资”还可再分为基本工资,奖金还有补贴 3 个数据项,这违背了第一范式中元组的每个属性不可再分的原则,所以它不满足第一范式。

  将非第一范式的关系转换为第一范式的关系非常简单,只需要将所有数据项都分解成不可再分的最小数据项就可以了。

例如上面的关系改为 SA(姓名,基本工资,奖金,补贴)即可。

第二范式   定义 如果关系 R ∈ 1NF,并且 R 中每一个非主属性完全函数依赖于任一个候选码,则 R ∈ 2NF。

  从定义可以看出,若某个 1NF 的关系的主码只由一个列组成,那么这个关系就是 2NF 关系。

但是,如果主码是由多个属性列共同组成的复合主码,并且存在非主属性对属性的部分函数依赖,则这个关系不是 2NF 关系。

  例如:在关系 SB(学号,姓名,系名,系主任,课号,成绩)中,、   非主属性“姓名”仅函数依赖于“学号”,也就是“姓名”部分函数依赖于主码(学号,课号)而不是完全依赖;   非主属性“系名”仅函数依赖于“学号”,也就是“系名”部分函数依赖于主码(学号,课号)而不是完全依赖;   非主属性“系主任”仅函数依赖于“学号”,也就是“系主任”部分函数依赖于主码(学号,课号)而不是完全依赖。

  所以 SB 不满足第二范式,不是 2NF 关系。

可以用模式分解的方法将非 2NF 的关系模式分解为多个 2NF 的关系模式。

去掉部分函数依赖关系的分解过程如下:   1. 用组成主码的属性集合的每一个子集作为主码构成一个表。

  2. 对于每个表,将依赖于此主码的属性放置到此表中。

  例如:将 SB 分解为两个关系模式   SC(学号,课号,成绩),主码为(学号,课号)   SD(学号,姓名,系名,系主任),主码为 学号。

第三范式   定义 如果关系 R ∈ 2NF,并且 R 中每一个非主属性对任何候选码都不存在传递函数依赖,则 R ∈ 3NF 。

  从定义中可以看出,如果存在非主属性对主码的传递依赖,则相应的关系模式就不是 3NF。

  接着上面的例子,关系模式 SC 和 SD 均是 2NF 的,但在关系 SD(学号,姓名,系名,系主任)中,存在如下函数依赖:   学号 → 系名   系名 → 系主任   系名 -→ 学号   那么,存在着一个传递函数依赖“学号 → 系主任”成立。

  从上面的分析可以知道,因为在 SD 中存在传递函数依赖,所以 SD 不满足 3NF。

因此需要对其进行下一步的分解。

去掉传递函数依赖的分解过程如下:   1. 对于不是候选码的每个决定因子,从关系模式中删除依赖于该决定因子的属性。

  2. 新建一个关系模式,新的关系模式中应包含在原表中所有依赖于该决定因子的属性。

  3. 将决定因子作为新关系模式的主码。

  例如:将 SD 分解为   SE(学号,姓名,系名)   SF(系名,系主任)   这两个关系模式不再存在传递依赖,它们均为第三范式。

在通常的数据库设计中,一般要求要达到 3NF。

3NF 是一个实际可用的关系模式应满足的最低范式。

请大伙给我解释一下数据库设计的基本原则!

设计数据库不应该有这些: 1数据冗余 2不一致性 3插入异常 4删除异常

这图就出现了问题 如人工智能的学分不一致 有两个文化学 这就出现了以上的问题 所以要杜绝 我们可以这样分为两个表 如下:

右边的表只要把人工智能的删除一个就好了(画错了 不好意思)

在就是函数的一些关系 如函数依赖 :

v函数依赖 设R(U)是一个属性集U上的关系,X和Y是U的子集。

如果属性集合X中每个属性的值构成的集合唯一地决定了属性集合Y中每个属性的值构成的集合,则属性集合Y函数依赖于属性集合X,计为:X→Y

如下表所示,知道了“课程名”的值,即可知道“授课学时”的值。

称“授课学时”函数依赖于“课程名”,或“课程名”可以决定“授课学时”,记作课程名→授课学时。

还有这个

v部分函数依赖:如果非主属性B函数依赖于构成某个候选关键字的一组主属性A的某一个真子集,则称B部分函数依赖于A。

v如“学分”函数依赖于主关键字{学号、课程}。

但决定“学分”的只是“课程”,与“学号”无关,则称“学分”部分函数依赖于{学号、课程} 。

传递关系 :

v传递函数依赖的关系:在R (U)中,如存在X,Y,Z包含于U ,且满足:X—>Y ,Y—>Z,则称Z传递函数依赖于X。

v学生住宿的楼号依赖于学号,学生应交的住宿费是由楼号决定的,即“收费”依赖于“楼号”,“楼号”依赖于“学号”,则“收费”传递函数依赖于“学号”。

接下来的就是要符合范式:

第一范式:

任何符合关系定义的表即满足第一范式。

ID Name Sex Age
Male Female
101 张三 Y   20
102 李四   Y

21

v第二范式 ?定义:如果一个关系不存在部分依赖关系,那么该关系就属于第二范式。

? 凡是以单个属性作为主关键字的关系自动就是第二范式。

因为主关键字只有一个,不会存在部分依赖的情况。

因此,第二范式只是针对主关键字是组合属性的关系。

第三范式 v定义:一个关系如果是第二范式的,并且没有传递依赖关系,则该关系就是第三范式。

v每个非主属性不部分依赖于关键字,也不传递依赖于关键字的关系。

关系规范化的目的:解决关系模式中存在的插入、删除异常,以及数据冗余问题, 基本思想:围绕函数依赖的主线,对一个关系模式进行分解,使关系从较低级范式变换到较高级范式。

以上也就是设计数据库基本注意的问题 我也是初学者 只能帮忙这些不知道是否对你有用!

详细说明数据库规范的三个范式 ??

第三范式的要求如下: 1,每一列只有一个值 2,每一行都能区分。

3,每一个表都不包含其他表已经包含的非主关键字信息。

实质上,设计范式用很形象、很简洁的话语就能说清楚。

这里将对范式进行通俗地说明,以一个简单论坛的数据库为例讲解怎么样将这些范式应用于实际工程.范式说明 第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。

这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。

例如,符合第一范式: 字段1 字段2 字段3 字段4 不符合第一范式: 字段1 字段2 字段3 字段4 字段3.1 字段3.2 很显然,在当前的任何关系数据库管理系统(DBMS)中,傻瓜也不可能做出不符合第一范式的数据库,因为这些DBMS不允许你把数据库表的一列再分成二列或多列。

因此,你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。

第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。

假定选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分), 关键字为组合关键字(学号, 课程名称),因为存在如下决定关系: (学号, 课程名称) → (姓名, 年龄, 成绩, 学分) 这个表不满足第二范式,因为存在如下决定关系: (课程名称) → (学分) (学号) → (姓名, 年龄) 即存在组合关键字中的字段决定非关键字的情况。

由于不符合2NF,这个选课关系表会存在如下问题: (1) 数据冗余: 同一门课程由n个学生选修,"学分"就重复n-1次;同一个学生选修了m门课程, 姓名和年龄就重复了m-1次。

(2) 更新异常: 若调整了某门课程的学分,数据表中所有行的"学分"值都要更新,否则会出现 同一门课程学分不同的情况。

理解什么是数据库规范化

规范化(Normalization)是数据库系统设计中非常重要的一个技术。

数据库规范化能够让数据库设计者更好地了解组织内部当前的数据结构,最终得到一系列的数据实体。

数据库规范化通过对数据库表的设计,可以有效降低数据库冗余程度。

   在进行数据库规范化的时候,我们有一系列的步骤需要遵循。

我们把这些步骤称作范式,即Normalisation Form(NF),其中包括第一范式、第二范式、第三范式、第四范式以及第五范式(1NF、2NF、3NF、4NF、5NF)。

通常情况下,我们通过第三范式就能够满足大部分的数据库表的规范化,但也有些时候,我们需要更高的NF。

以下就是进行数据库规范化时的步骤:   第一步:首先我们将数据源转化成未规范化范式(UNF)   第二步:将未规范化的数据转化为第一范式(1NF)   第三步:将1NF转化为2NF   第四步:将2NF转化为3NF  在完成3NF之后,如果数据源仍然处于未规范化状态,那么我们还需要进行以下几步:   第五步:将3NF转化为BC范式(Boyce-Code Normal Form,BCNF)   第六步:将BCNF转化为4NF   第七步:将4NF转化为5NF   数据库规范化是一个自下而上的数据库设计技术,它通常使用于现有系统当中。

LOCVPS-2021年6月香港便宜vps宽带升级,充值就送代金券,其它八折优惠!

LOCVPS怎么样?LOCVPS是一家成立于2011年的稳定老牌国人商家,目前提供中国香港、韩国、美国、日本、新加坡、德国、荷兰等区域VPS服务器,所有机房Ping延迟低,国内速度优秀,非常适合建站和远程办公,所有机房Ping延迟低,国内速度优秀,非常适合做站。XEN架构产品的特点是小带宽无限流量、不超售!KVM架构是目前比较流行的虚拟化技术,大带宽,生态发展比较全面!所有大家可以根据自己业务需求...

咖啡主机22元/月起,美国洛杉矶弹性轻量云主机仅13元/月起,高防云20G防御仅18元/月

咖啡主机怎么样?咖啡主机是一家国人主机销售商,成立于2016年8月,之前云服务器网已经多次分享过他家的云服务器产品了,商家主要销售香港、洛杉矶等地的VPS产品,Cera机房 三网直连去程 回程CUVIP优化 本产品并非原生地区本土IP,线路方面都有CN2直连国内,机器比较稳定。咖啡主机目前推出美国洛杉矶弹性轻量云主机仅13元/月起,高防云20G防御仅18元/月;香港弹性云服务器,香港HKBN CN...

爱用云互联租用服务器租美国、日本、美国、日本、购买2天内不满意可以退换,IP可免费更换!

爱用云互联怎么样?爱用云是一家成立于2018年的老牌商家旗下的服务器销售品牌,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端...

数据库设计规范为你推荐
a8处理器什么是A8处理器?文件损坏电脑老是显示文件损坏,请运行chkdsk工具,怎么办?阿里下载阿里旺旺在哪里下载?招行信用卡还款招行信用卡怎么还款招行信用卡还款招商银行信用卡有哪几个还款方式呢?站内搜索引擎站内搜索与百度的搜索引擎有什么本质性的区别?哪些大数据公司提供站内搜索这种服务?0x800ccc0f错误号: 0x800CCC0F 这个是虾米意思?t320在网上买的三星平板T320,怎么检查是不是正品行货?修复网络lspLSP修复是什么意思?java变量设置java的环境变量设置
免费二级域名 国外php主机 域名优惠码 台湾谷歌网址 韩国名字大全 服务器维护方案 cdn联盟 免费dns解析 创建邮箱 域名dns 申请免费空间 主机返佣 学生服务器 国外网页代理 789电视剧网 mteam 七十九刀 新疆服务器 免费获得q币 建站技术 更多