第 16章 关系数据库设计初步
第 16章 关系数据库设计初步
16.1 数据库设计中的规范化技术
16.2 FoxPro数据库文件设计
16.3 数据的安全性
第 16章 关系数据库设计初步
16.1 数据库设计中的规范化技术
16.1.1关系规范化的作用
所谓规范化技术, 就是用形式更为简洁, 结构更
加规范的关系模式取代原有关系的过程 。
例 有三个属性的工资表 (姓名, 级别, 工资 )关系
模式 。 直接对应此模式建立的数据库如表 16— 1。
第 16章 关系数据库设计初步
表 16--1工资表
第 16章 关系数据库设计初步
1,表 16—1数据库存在的问题
(1) 数据冗余度大 。
表 16—1中, 工资是可从级别推导出的, 但却重复
存放 。 能推导出数据的重复存放称数据冗余 。 冗余度
大, 既浪费存储空间, 又易造成数据的不一致性 。
2,解决方法
上述现象的产生, 是由于数据库模式不合理 。 对
应表 16—1,可采用两个模式表达,工资表 1 (姓名, 级
别 ),工资表 2 (级别, 工资 ),如表 16--2,表 16—3所示 。
第 16章 关系数据库设计初步
表 16— 2工资表 1 表 16— 3工资表 2
第 16章 关系数据库设计初步
改进后,
(1) 数据量减少 。
(2) 表达能力强。
第 16章 关系数据库设计初步
16.1.2规范化过程
1.
当一个关系的所有分量都是不可分的数据项时,
该关系是规范化的 。 16— 4具有组合数据项, 表
16— 5具有多值数据项, 因此都不是规范化的表 。
第 16章 关系数据库设计初步
表 16— 4具有组合数据项的非规范表
第 16章 关系数据库设计初步
二维表按其规范化程度从低到高可分为 5级范式 。
规范化程度较高者必是较低者的子集 。 所有记录的属性
值单一的关系模式满足第一范式, 简称 1NF(First
Normal Form)。 1NF是最低的规范化关系 。
关系规范化程度如何, 由关系模式中属性间的函数
依赖程度来确定 。
下面从关系的概念上给出有关函数依赖的几个定义:
第 16章 关系数据库设计初步
( 1) 函数依赖 。
( 2) 完全函数依赖和部分函数依赖。
( 3) 传递函数依赖。
2,关系规范化过程
满足 1NF的关系模式有许多不必要的重复值, 因此,
2NF(第二范式 ),如果一个关系属于 1NF,且所有
非主属性都完全依赖于关键字, 则它是第二范式的,
简记为 2NF。
图 16—1(a)的关系中, 非主属性, 仓库地址, 只依
赖于关键字码的一部分 ——“仓库号码,, 因此不是
2NF的 。
第 16章 关系数据库设计初步
图 16— 1 有部分依赖关系的分解
第 16章 关系数据库设计初步
16.1.3 规范化程度
各种范式之间的联系有:
5NF 4NF BCNF 3NF 2NF 1NF。
关系规范化的目的是解决关系模式中存在的数据
冗余, 插入异常, 删除异常, 修改繁复等问题 。 其
基本思想是消除数据依赖中的不合适部分, 使各关系
模式达到某种程度的分离, 使一个关系描述一个概念,
一个实体或实体间的一种联系 。 因此, 规范化的实质
是概念的单一化 。
关系规范化的递进过程如图 16— 2。
第 16章 关系数据库设计初步
图 16— 2范式的递进过程示意图
第 16章 关系数据库设计初步
把一个非规范化的数据结构转换成第三范式, 一般
① 把该结构分解成若干个属于第一范式的关系 。
② 对那些存在组合关键字, 且有非关键字数据元素
部分函数依赖关键字的关系必须继续分解, 使所得关系
都是属于第二范式的 。
③ 若某关系中有非关键字数据元素传递函数依赖关
键字, 则继续分解之, 使所得关系都属于第三范式 。
第 16章 关系数据库设计初步
关系模式的规范化过程是通过投影分解实现的,
即用投影运算把一个模式分解成若干个高一级的关系
模式 。 这种投影分解不是惟一的 。 在分解时应注意满
① 无损连接分解, 分解后既不丢失又不增加信息 。
② 分解所得的所有关系都是高一级范式的 。
③ 分解所得关系的个数最少 。
第 16章 关系数据库设计初步
16.2 FoxPro数据库文件设计
16.2.1 数据库文件的字段规模
FoxPro有着功能齐备的操作命令,因此允许数据
间存在传递依赖关系。
一个库文件的字段数一般在 15到 20之间, 不要超
过 20。 这样, 既有较高的操作速度, 又
使一个库文件也可胜任一般的操作要求。 需要多
库文件操作时,也可有较快的速度。
第 16章 关系数据库设计初步
16.2.2 聚类设计
在设计数据库时, 需分析数据流程, 归纳整理,
统一合并和聚集数据项 。 合并具有相同意义的数据项,
整理存在函数依赖关系和其它不独立的数据项, 综合各
类用户的观点对数据项进行归纳和聚集 。 在聚类设计中
要注意:
(1) 字段的惟一性 。
(2) 根据数据特性进行归类 。
(3) 共享的数据项尽可能集中在一起 。
(4) 谁生成, 谁维护的权限准则 。
(5) 压缩即时处理的库文件规模 。
第 16章 关系数据库设计初步
16.2.3 数据库设计过程
设计数据库要有详尽的计划, 一个数据库应用系
统涉及到数据库内部许多信息 。 现在普遍认为的数据
库规范设计过程为,需求分析 —概念设计 —逻辑设计 —
物理设计 。 以下是完成数据库设计的具体步骤 。
1,详细的需求分析
需求分析是数据库设计的第一阶段, 也是下一阶
段 —— 系统的概念结构设计的基础 。
第 16章 关系数据库设计初步
确信没有漏掉大的方面, 并且设计人员应尽可能地
考虑到系统功能的扩充或改变, 使系统设计易于修改 。
这一阶段的任务有:
① 确认设计范围;
② 调查分析信息需求及处理需求并收集数据;
③ 建立需求说明文档 。
第 16章 关系数据库设计初步
2,建立系统的概念结构,建立系统的 E—R模型
概念结构是独立于支持数据库的 DBMS和使用的硬
件环境的, 它应该能反映现实世界, 满足用户对数据
处理的要求 。 描述概念结构的有力工具是 E—R图 。
本阶段完成的任务有:
① 确认实体及实体间的联系;
② 给实体及联系加上必要的属性;
③ 作出系统的全局 E—R图 。
第 16章 关系数据库设计初步
3,建立系统的逻辑结构,E—R
数据库的逻辑设计就是把概念设计得到的数据库模型, 转
化为具体的 DBMS所能接受的数据库逻辑结构 。 而 FoxPro
是关系型的 DBMS,所以, 建立系统的逻辑结构, 就是
将 E—R图向关系模型转化 。
E—R图向关系模型转化的实质就是把实体及联系都表
示成关系 。
① 把每一个实体转化为关系 。
② 把每一个联系转化为关系 。
第 16章 关系数据库设计初步
图 16— 3 学校教学信息 E— R图
第 16章 关系数据库设计初步
用上述方法得到的关系模式有时并不一定能满足
数据库设计的要求, 可能存在数据冗余和操作异常的
情况, 需要进行规范化, 数据库规范化的作用, 简单
地讲是:
① 保持相关数据在一起 。
② 消除冗余 。
③ 保证相关数据库中进行更新操作时不丢失信息
或产生错误信息。
第 16章 关系数据库设计初步
至于规范化的程度, 应视需要而定 。
本阶段需完成的任务有:
① 得到每一个实体及联系的关系模式 。
② 按需要对关系模式进行规范化。
第 16章 关系数据库设计初步
4,建立系统的物理结构,用 FoxPro建立数据库文件
数据库物理结构的设计指把已经确定的数据库的逻辑
模式, 变成能在计算机上实现的存储结构, 其中包括设计
数据库文件和索引文件的结构, 确定对文件的存取方法,
访问路径, 数据存储的位置等, 对 FoxPro来说, 这些工
作大部分都将由系统自动完成, 设计人员要完成的主要是:
① 确定数据库文件的名称, 组成字段及各字段的取值
范围 。
② 确定索引文件及索引关键字 。
第 16章 关系数据库设计初步
16.3 数据的安全性
16.3.1数据的保密性
① 非合法用户不能访问数据库数据 。
② 合法用户能且只能访问与己有关的数据。
有很多方法来控制不同的用户访问不同的程序和
数据 。
① 当用户通过验证后,系统显示全部功能菜单。
② 当用户通过验证后,系统立即进行级别验证。
第 16章 关系数据库设计初步
16.3.2数据的可靠性
数据的可靠性包括数据的正确性, 数据的一致性,
有关系的数据间是否符合一定的关系等 。 FoxPro的很
多命令都对数据进行可靠性检验, 下面介绍几个增加
可靠性的方法 。
1,不在原处修改记录
2,增加修改时间字段
3.
实际上, 一个系统做到完全可靠是不可能的 。 因
此数据必须备份 。 可以说, 备份是系统的生命线 。 但
第 16章 关系数据库设计初步
对系统中所有文件建立同样多的备份,以同样的频率
进行备份也是不必要的,这样,势必要增加系统的负
担。 因此,
(1) 对不重要数据。
(2) 对重要数据。
(3) 对关键数据 。