我爱995 潜水
  • 1发帖数
  • 1主题数
  • 0关注数
  • 0粉丝
开启左侧

第1章关系数据库的规范化和数据库的体系结构

[复制链接]
我爱995 发表于 2021-8-23 16:29:42 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
[size=1.412em]前言
关系数据库的规范化理论为:关系数据库中的每一个关系都要满足一定的规范。根据满足规范的条件不同,可以分为5个等级:第一范式 (1NF)、第二范式(2NF)....第五范式(5NF)。此中,NF是Normal Form的缩写。一样平常情况下,只要把数据规范到第三范式标准就可以满足需要。
[size=1.412em] 一、完全依赖、部分依赖、传递依赖
在相识关系数据库规范化之前,我们需要先相识函数依赖的定义

[size=1.176em]1.函数依赖
定义:设X、Y是关系R的两个属性集合,当任何时候R中的任意两个元组中的X属性值相同时,则它们的Y属性值也相同,则称X函数决定Y,或Y函数依赖于X。
通俗的讲,如果知道一个人的身份证号,就一定能知道这个人的姓名,姓名依赖于身份证号,这就是函数依赖。
从性质上,函数依赖还可以分为完全函数依赖部分函数依赖传递函数依赖
[size=1.059em]1.1完全函数依赖
设X,Y是关系R的两个属性集合,X'是X的真子集,存在X → Y(Y函数依赖于),但对每一个X'都有X' !→ Y(Y不能函数依赖于X'),则称Y完全函数依赖于X,
也就是说,X的任何真子集,都不能被Y函数依赖,反之,Y函数能依赖于A的真子集,则称Y部分函数依赖于X
[size=1.059em]1.2部分函数依赖
设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
[size=1.059em]1.3传递函数依赖
设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X

[size=1.412em]二、关系数据库的规范化
相识了函数依赖的定义,下面我们开始学习关系数据库的规范化
[size=1.176em]1.第一范式(1NF)
第一范式是指数据库表的每一列都是不可分割的基本数据项。第一范式是第二范式和第三范式的底子,是最基本的范式。如果不满足第一范式,那这个数据库就不是关系数据库。
[size=1.176em]2.第二范式(2NF)
第二范式是在第一范式的底子上建立起来的,即满足第二范式必先满足第一范式。第二范式要求:数据库表中的每个实体(即各个记录行)必须可以被唯一地区分。实体的属性完全依赖于主关键字或主键,即不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。
主键:为实现区分各行记录,需要为表设置一个“区分列”,用于存储唯一标识。比方学生信息表,设置“学号列”,由于每个学生编号都唯一,因此每个学生都可以被唯一区分(即使存在重名情况),这个唯一属性列被称为主关键字或主键。
[size=1.176em]3.第三范式(3NF)
第三范式是在第二范式的底子上建立起来的,满足第三范式必先满足第二范式。第三范式要求关系表不存在非关键字列队任意候选关键字列的传递函数依赖,也就是说,第三范式要求一个关系表中不包含已在其他表中包含的非主关键字。

比方:如S1(SNO,SNAME,CNO,CNAME,LOCATION) 各属性分别代表学号,姓名,所在年级,班级,家庭地址。

关键字SNO决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是2NF。但这关系肯定有大量的冗余,有关学生所在的几个属性CNO,CNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。

原因:关系中存在传递依赖造成的。即SNO -> CNO。 而CNO -> SNO却不存在,CNO -> LOCATION, 因此关键字 SNO 对 LOCATION 函数决定是通过传递依赖 CNO -> LOCATION 实现的。也就是说,SNO不直接决定非主属性LOCATION。

办理方法:分为两个关系 S(SNO,SNAME,CNO),C(CNO,CNAME,LOCATION)

[size=1.412em]三、关系数据库的设计和设计原则
学习完规范化,我们可以自己来设计一个关系数据库,但是在设计之前,我们要先相识数据库中会出现的异常。
[size=1.176em]1.数据冗余
数据冗余是指一个属性存放在多个表中,比如学生学号,可能存在于成绩单中,也会存在考勤表中,这其实会影响数据的完整性和一致性。如果此中一个表出现错误,可能会导致其他功能的查询都会有问题。当数据有冗余现象时,就可能会出现插入异常删除异常修改异常
[size=1.059em]1.1 插入异常
插入异常是指插入的数据违反了数据库对象的规定,导致插入不精确的异常。比如一个表中有三个属性,而插入过程中你写了四个属性,数据就插入不进去。当设置的某字段为非空字段,给这个字段插入了一个空值,同样也会出现插入错误。
[size=1.059em]1.2 删除异常
当需要删除某个字段时,数据不能被删除导致的错误。比如表中有外键限制,删除数据就会出现错误。
[size=1.118em]1.3 修改异常
当你更新数据时,数据不能被更新而导致的错误。比如更新一个自增列,数据库就会提示更新失败。

[size=1.176em]2. 设计原则
数据库设计是指对一个给定的应用环境,根据用户的需求,利用数据模型和应用程序模仿实际世界中该应用环境的数据结构好处置惩罚活动的过程。
原则:
1. 数据库内数据文件的数据组织应得到最大限度的共享、最小的冗余度,消除数据及数据依赖关系中的冗余部分,使依赖于同一个数据模型的数据达到有用的分离。
2. 包管输入、修改数据时数据的一致性与精确性。
3. 包管数据与使用数据的应用程序之间的高度独立性。

[size=1.412em]四、体系结构
[size=1.176em]1.数据库三级模式结构
数据库三级模式结构是指模式外模式内模式

                               
登录/注册后可看大图


[size=1.059em]1.1 模式
模式也称逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特性的描述,是所有用户的公共数据视图。一个数据库只有一个模式。模式处于三级结构的中间层。
**注意**:定义模式时,不仅要定义数据的逻辑结构,而且要定义数据之间的接洽,定义域数据有关的安全性、完整性要求。

[size=1.059em]1.2 外模式
外模式也成用户模式,是数据库用户(包罗应用程序员和最终用户)可以或许望见和使用的局部数据的逻辑结构和特性的描述,
是数据库用户的数据视图,是与某一应用有关的数据的逻辑体现。外模式是模式的子集,一个数据库可以有多个外模式。外模式是包管数据安全性的一个有力措施。

[size=1.059em]1.3 内模式
内模式也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的体现方式。一个数据库只有一个内模式。

[size=1.176em]2.三级模式之间的映射
为了可以或许在内部实现数据库的3个抽象条理的接洽和转换,数据库管理系统在三级模式之间提供了两层映射,分别是**外模式\模式映射**和**模式\内模式映射**
[size=1.059em]2.1 外模式\模式映射
对于同一个模式可以有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式\模式映射。当模式改变时,由数据库管理员对各个外模式\模式映射做相应的改变,可以使外模式\模式映射保持不变,如许,根据数据外模式编写的应用程序就不用修改,包管了数据和程序的逻辑独立性
[size=1.059em]2.2 模式\内模式映射
数据库中只有一个模式和一个内模式,以是模式\内模式映射是唯一的,它定义了数据库的全局逻辑结构与存储结构之间的对应关系。当数据库的存储结构改变时,由数据库管理员对模式\内模式映射做相应改变,可以使模式保持不变,应用程序也不做变动。如许包管了数据与程序的物理独立性
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
在线客服邮箱
wxcy#wkgb.net

邮箱地址#换为@

Powered by 创意电子 ©2018-现在 专注资源实战分享源码下载站联盟商城