规范化实例 假设某建筑公司要设计一个数据库。公司的业务规则概括说明如下:公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等 公司有多名职工,每一名职工有:职工号、姓名、性别、职务(工程师、技术员)等;公司按照工时和小时工资率支付工资,小时工资率由职工的职务决定(例如,技术员的小时工资率与工程师不同)公司定期制定一个工资报表,如图-1所示
1.表中包含大量的冗余,可能会导致数据异常: 更新异常。例如,修改职工号=1001的职务,则必须修改所有职工号=1001的行
添加异常。若要增加一个新的职工时,首先必须给这名职工分配一个工程。或者为了添加一名新职工的数据,先给这名职工分配一个虚拟的工程。(因为主关键字不能为空)
删除异常。例如,1001号职工要辞职,则必须删除所有职工号=1001的数据行。这样的删除操作,很可能丢失了其它有用的数据
2.采用这种方法设计表的结构,虽然很容易产生工资报表,但是每当一名职工分配一个工程时,都要重复
输入大量的数据。这种重复的输入操作,很可能导致数据的不一致性。
应用第二范式规范化
应用第三范式规范化
规范化和性能的关系 数据库的范式和性能有时是矛盾的。为了满足三大范式,在规范化表格时会拆分出越来越明细的表格。查询时通过连接查询 还原为综合数据,大大影响了数据库的性能。有时,为满足某种商业目标,数据库性能比规范化数据库更重要,因此会适当折中,牺牲规范化的要求,如:通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间。通过在给定的表中插入计算列(如成绩总分),以方便查询进行规范化的同时,还需要综合考虑数据库的性能。 E-R图向关系模型的转换
转换内容:E-R图由实体、实体的属性和实体之间的联系三个要素组成;关系模型的逻辑结构是一组关系模式的集合;将E-R图转换为关系模型:将实体、实体的属性和实体之间的联系转化为关系模式。 E-R图向关系模型转换的原则
⒈ 一个实体型转换为一个关系模式。
关系的属性:实体型的属性;关系的码:实体型的码 例,职工实体可以转换为如下关系模式:职工(职工号,部门号,姓名,职务,性别,出生日期)
2.一个联系转换为一个关系模式,与该联系相连的每个实体型的码以及联系的属性都转换为关系的属性。 联系分为以下三种不同的情况:若联系为1:1,则相连的每个实体型的码均是该关系模式的侯选码。 若联系为1:n,则联系对应的关系模式的码取n端实体型的码。 若联系为m:n,则联系对应的联模式的码为参加联系的诸实体型的码的组合。
(1)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
1) 转换为一个独立的关系模式:关系的属性:与该联系相连的各实体的码以及联系本身的属性;关系的候选码:每个实体的码均是该关系的候选码
2) 与某一端对应的关系模式合并:合并后关系的属性:加入对应关系的码和联系本身的属性;合并后关系的码:不变
(2). 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
1) 转换为一个独立的关系模式。关系的属性:与该联系相连的各实体的码以及联系本身的属性。关系的码:n端实体的码
2) 与n端对应的关系模式合并。合并后关系的属性:在n端关系中加入1端关系的码和联系本身的属性。合并后关系的码:不变
(3). 一个m:n联系转换为一个关系模式。
关系的属性:与该联系相连的各实体的码以及联系本身的属性。关系的码:各实体码的组合
[例] ?选修?联系是一个m:n联系,可以将它转换为如下关系模式,其中学号与课程号为关系的组合码:选修(学号,课程号,成绩)
(4). 三个或三个以上实体间的一个多元联系转换为一个关系模式。关系的属性:与该多元联系相连的各实体的码以及联系本身的属性。关系的码:各实体码的组合
例,?供应?联系是一个三元联系,可以将它转换为如下关系模式,其中产品号、供应商号和零件号为关系的组合码:供应(产品号,供应商号,零件号,供应量)
(5)具有相同码的关系模式可合并。目的:减少系统中的关系个数。合并方法:将其中一个关系模式的全部属性加入到另一个关系模式中,然后去掉其中重复的同义属性(可能同名也可能不同名),并适当调整属性的次序。
数据模型的优化 数据库逻辑设计的结果不是唯一的。得到初步数据模型后,还应该适当地修改、调整数据模型的结构,以进一步提高数据库应用系统的性能,这就是数据模型的优化。关系数据模型的优化通常以规范化理论为指导。
数据模型的优化方法
⒈ 确定数据依赖:按需求分析阶段数据字典,分别写出每个关系模式内部各属性之间的数据依赖以及不同关系模式属性之间数据依赖。
⒉ 对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。
⒊ 对关系模式逐一进行分析,考查是否存在依赖,确定各关系模式分别属于第几范式。
⒋ 按照需求分析阶段得到的各种应用对数据处理的要求,分析对于这样的应用环境这些模式是否合适,确定是否要对它们进行合并或分解。并不是规范化程度越高的关系就越优。规范化进行到什么程度,需要权衡响应时间和潜在问题两者的利弊才能决定。一般说来,第三范式就足够了。
⒌ 按照需求分析阶段得到的各种应用对数据处理的要求,对关系模式进行必要的分解或合并,以提高数据操作的效率和存储空间的利用率。 什么是数据库的物理设计
数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于给定的计算机系统。为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,就是数据库的物理设计。
数据库物理设计的步骤 1、确定数据库的物理结构。主要指存储方法和存储结构2、对物理结构进行评价,评价的重点是时间和空间效率。如果评价结果满足原设计要求则可进入到物理实施阶段;否则,就需要重新设计或修改物理结构,有时甚至要返回逻辑设计阶段修改数据模型
数据库物理设计前的工作 估算数据库的数据存储量;计算关系每一行的字节数。用关系的行数乘以每行的字节数。另外加20%空间用做索引和其他开销。 数据库物理设计的内容1、为关系模式选取存储方法(1)索引方法(2)聚簇方法(Cluster)(3)HASH方法2、设计数据库文件(关系、索引)的物理存储结构:数据的存放位臵;确定系统配臵
确定数据库的存储结构:确定数据库物理结构的内容1. 确定数据的存放位臵和存储结构(关系 索引 聚簇 日志 备份)2. 确定系统配臵 确定数据的存放位臵
影响数据存放位臵和存储结构的因素:硬件环境;应用需求(存取时间;存储空间;维护代价);这三个方面常常是相互矛盾的
例:消除一切冗余数据虽能够节约存储空间和减少维护代价,但往往会导致检索代价的增加 必须进行权衡,选择一个折中方案。
基本原则:根据应用情况将;易变部分与稳定部分 存取频率较高部分与存取频率较低部分;分开存放,以提高系统性能
例:数据库数据备份、日志文件备份等由于只在故障恢复时才使用,而且数据量很大,可以考虑存放在磁带上。如果计算机有多个磁盘,可以考虑将表和索引分别放在不同的磁盘上,在查询时,由于两个磁盘驱动器分别在工作,因而可以保证物理读写速度比较快。 可以将比较大的表分别放在两个磁盘上,以加快存取速度,这在多用户环境下特别有效。可以将日志文件与数据库对象(表、索引等)放在不同的磁盘以改进系统的性能。
确定系统配臵 DBMS产品一般都提供了一些存储分配参数:同时使用数据库的用户数;同时打开的数据库对象数;内存分配参数;使用的缓冲区长度、个数;时间片大小;物理块的大小;物理装填因子;锁的数目;等等
系统都为这些变量赋予了合理的缺省值。但是这些值不一定适合每一种应用环境,在进行物理设计时,需
要根据应用环境确定这些参数值,以使系统性能最优。 在物理设计时对系统配臵变量的调整只是初步的,在系统运行时还要根据系统实际运行情况做进一步的调整,以期切实改进系统性能。 评价物理结构
评价内容差:对数据库物理设计过程中产生的多种方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构
数据库的实施 数据库实施的工作内容:一、用DDL定义数据库结构;二、组织数据入库;三、编制与调试应用程序;四、数据库试运行
一、定义数据库结构 确定了数据库的逻辑结构与物理结构后,就可以用所选用的DBMS提供的数据定义语言(DDL)来严格描述数据库结构。 例,可以用SQL语句如下定义表结构: CREATE TABLE 学生 (学号 CHAR(8), …………… );
CREATE TABLE 课程 (
…………… );
……………
在这些基本表上定义视图: CREATE VIEW .... (
…………… );
……………
如果需要使用聚簇,在建基本表之前,应先用CREATE CLUSTER语句定义聚簇。
二、数据装载 数据库结构建立好后,就可以向数据库中装载数据了。组织数据入库是数据库实施阶段最主要的工作。数据装载方法:人工方法;计算机辅助数据入库
人工方法:适用于小型系统步骤1) 筛选数据。需要装入数据库中的数据通常都分散在各个部门的数据文件或原始凭证中,所以首先必须把需要入库的数据筛选出来。2) 转换数据格式。筛选出来的需要入库的数据,其格式往往不符合数据库要求,还需要进行转换。这种转换有时可能很复杂。3) 输入数据。将转换好的数据输入计算机中。4) 校验数据。检查输入的数据是否有误。
计算机辅助数据入库:适用于中大型系统。步骤:1) 筛选数据2) 输入数据。由录入员将原始数据直接输入计算机中。数据输入子系统应提供输入界面。3) 校验数据。数据输入子系统采用多种检验技术检查输入数据
的正确性。4) 转换数据。数据输入子系统根据数据库系统的要求,从录入的数据中抽取有用成分,对其进
行分类,然后转换数据格式。抽取、分类和转换数据是数据输入子系统的主要工作,也是数据输入子系统的复杂性所在。5) 综合数据。数据输入子系统对转换好的数据根据系统的要求进一步综合成最终数据。 三、编制与调试应用程序 数据库应用程序的设计应该与数据库设计并行进行。在数据库实施阶段,当数据库结构建立好后,就可以开始编制与调试数据库的应用程序。调试应用程序时由于数据入库尚未完成,可先使用模拟数据。
四、数据库试运行 应用程序调试完成,并且已有一小部分数据入库后,就可以开始数据库的试运行。 数据库试运行也称为联合调试,其主要工作:1)功能测试:实际运行应用程序,执行对数据库的各种操作,测试应用程序的各种功能.2)性能测试:测量系统的性能指标,分析是否符合设计目标。数据库试运行要测量系统的各种性能指标,如果结果不符合设计目标,则需要返回物理设计阶段,调整物理结构,修改参数;有时甚至需要返回逻辑设计阶段,调整逻辑结构。 数据库运行与维护 数据库试运行结果符合设计目标后,数据库就可以真正投入运行了。数据库投入运行标着开发任务的基本完成和维护工作的开始 在数据库运行阶段,对数据库经常性的维护工作主要是由DBA完成的,包括:⒈数据库的转储和恢复。转储和恢复是系统正式运行后最重要的维护工作之一。DBA要针对不同的应用要求制定不同的转储计划,定期对数据库和日志文件进行备份。一旦发生介质故障,即利用数据库备份及日志文件备份,尽快将数据库恢复到某种一致性状态。⒉数据库的安全性、完整性控制。DBA必须根据用户的实际需要授予不同的操作权限 在数据库运行过程中,由于应用环境的变化,对安全性的要求也会发生变化,DBA需要根据实际情况修改原有的安全性控制。由于应用环境的变化,数据库的完整性约束条件也会变化,也需要DBA不断修正,以满足用户要求。⒊数据库性能的监督、分析和改进。在数据库运行过程中, DBA必须监督系统运行,对监测数据进行分析,找出改进系统性能的方法。利用监测工具获取系统运行过程中一系列性能参数的值。通过仔细分析这些数据,判断当前系统是否处于最佳运行状态。如果不是,则需要通过调整某些参数来进一步改进数据库性能。⒋数据库的重组织和重构造。1)数据库的重组织——为什么要重组织数据库:数据库运行一段时间后,由于记录的不断增、删、改,会使数据库的物理存储变坏,从而降低数据库存储空间的利用率和数据的存取效率,使数据库的性能下降。2)数据库的重构造——为什么要进行数据库的重构造:数据库应用环境发生变化,会导致实体及实体间的联系也发生相应的变化,使原有的数据库设计不能很好地满足新的需求:增加新的数据项;改变数据项的类型;
改变数据库的容量;增加或删除索引;修改完整性约束条件。
重构造数据库的程度是有限的。若应用变化太大,已无法通过重构数据库来满足新的需求,或重构数据库的代价太大,则表明现有数据库应用系统的生命周期已经结束,应该重新设计新的数据库系统,开始新数据库应用系统的生命周期了。
第六章 地理数据库的设计和建立
空间数据来源和分类
空间数据库设计的内容和实质 内容:空间数据库设计就是把现实世界中一定范围内存在着的空间数据抽象成数据库的具体结构的过程。实质:如何将地理实体以一定组织形式在数据库中表达。即空间实体数据的模型化问题。
客观世界-(认识、抽象)->概念模型
概念模型-(选定数据模型、DBMS)->逻辑模型 逻辑模型-(确定数据组织方式)->物理模型
空间数据库数据来源:地图数据 ;遥感数据 ;文本资料 ;统计资料 ;实测数据 ;多媒体数据 ;已有系统的数据
空间数据库数据分类和组织
数据内容:空间(几何)数据;属性数据 数据的组织形式(数据结构):空间数据:栅格结构、矢量结构;属性数据:关系数据库关系模型 数据管理方式:文件管理 ;数据库管理系统;文件——数据库混合管理
空间数据库的设计原则 尽量减小存储冗余;可变的数据结构;对数据及时访问,高效查询;能维持空间数据的复杂联系;支持多种决策的需要,适应性强 空间数据库的设计步骤
(1)需求分析(2)概念设计——建立数据库的概念模型(3)逻辑设计——把概念模型映射为数据库管理系统所支持的数据模型(4)物理设计——将数据库的逻辑模型在存储设备上实现 空间数据库的设计——需求分析
需求分析 数据流图DFD;数据字典DD;选择数据源;对各种数据集进行评价;空间数据元数据;需求
说明书
空间数据库的设计——概念模型 表示概念模型最有力的工具是E—R模型。用它来描述现实地理世界,接近于现实地理世界,具有直观、自然、简单等特点,在地理数据库设计中得到了广泛应用。例如在城市地理数据库系统设计中,我们将城市市区要素抽象为 空间实体(路段、街道、街区、节点等实体)、
空间实体属性:节点实体属性——立交桥、警亭及所连通街道的性质等;街道路段和街道实体属性——走向、路面质量、宽度、等级、车道数、结构等;街区实体属性——面积、用地类型等
空间实体关系
用E-R模型进行概念设计 (1)局部E-R模型(2)全局E-R模型(3)优化
空间数据库的设计——逻辑模型
空间数据库的逻辑模型(数据模型) 空间数据模型:对空间客体进行描述和表达的数学手段,使之能反应客观实体及其关系。常用数据模型:层次模型;网状模型;关系模型;语义模型;面向对象模型。 空间数据库的设计——物理模型
物理设计 从逻辑模型出发,研制出一个有效的可实现的物理结构。内容:(1)存储记录的格式设计(2)存储方法设计(3)访问方法设计(4)完整性、安全性考虑(5)空间索引
空间数据库的实现与维护 空间数据库的实现(1)建立实际的空间数据库结构;(2)装入试验性数据测试应用程序;(3)装入实际空间数据,运行。
空间数据库的运行与维护(1)维护安全性与完整性;(2)监测并改善数据库性能;(3)增加新的功能; (4)修改错误。 元数据的概念
Metadata——元数据,是描述数据的数据。在地理空间数据中,元数据说明数据内容、质量、状况和其他有关特征的背景信息。 元数据成为信息资源有效管理和应用的重要手段。地理信息元数据标准和操作工具已成为国家空间数据基础设施的一个重要组成部分。 元数据的主要内容 (1)对数据集的描述,对数据集中各数据项、数据来源、数据所有者及数据序代(数据生产历史)等的说明;(2)对数据质量的描述,如数据精度、数据的逻辑一致性、数据完整性、分辨率、元
数据的比例尺等;(3)对数据处理信息的说明;(4)对数据转换方法的描述;(5)对数据库的更新、集成等的说明。
元数据的作用 (1)帮助数据生产单位有效地管理和维护空间数据,建立数据文档,并保证即使其主要工作人员离退时,也不会失去对数据情况的了解;(2)提供有关数据生产单位数据存储、数据分类、数据内容、数据质量、数据交换网络及数据销售等方面的信息,便于用户查询检索空间数据:(3)帮助用户了解数据,以便就数据是否能满足其需求做出正确的判断;(4)提供有关信息,以便于用户处理和转换有用的数据。
空间数据元数据的标准 空间数据是一种结构比较复杂的数据类型。它涉及对于空间特征的描述,也涉及对于属性特征及其他们之间关系的描述,所以空间数据元数据标准的建立是项复杂的工作;只有建立起规范的空间数据元数据才能有效利用空间数据。目前,针对空间数据元数据,已经形成了一些区域性的或部门性的标准。
空间数据元数据的应用(1)帮助用户获取数据(2)空间数据质量控制 (3)在数据集成中的应用 (4)数据存贮和功能实现
空间数据获取 空间数据的获取是一个地理信息系统建设的首要任务。一个地理信息系统建设,70%以上的工作(费用)将花费在空间数据(特别是矢量数据)的获取上面。
数据源 数据源指建立地理数据库以及进行应用分析所需的各种数据的来源。空间数据的数据采集和建库,主要是将数据源中地理实体的几何数据和属性数据输入到地理数据库中。即将现有的地图、外业观测成果、航空像片、遥感图像、文本资料等转换成GIS可以处理和接收的数字形式。采集方式与数据源的形式有关。
空间数据采集建库的内容和步骤 一、资料预处理二、分幅数字化三、数据编辑与图幅接边四、数据分层五、拓扑编辑与处理六、属性数据录入七、其他处理八、数据库建立 资料预处理
目的:数据源资料经过预处理,消除其中一些模糊或者错误的地方,便于数字化处理。
内容1、图面预处理(1)检查图幅接边情况(2)添补不完整的线划(3)标出同一条线不同属性的分界点,以便属性赋值(4)将图廓角点标绘清楚,以便图幅配准(5)将注记标识清楚(6)检查多边形边界是否闭合(7)检查地理要素关系是否正确(8)记录图面预处理中的重大问题以及处理意见;2、属性表格整理