Ⅰ 数据库设计的基本步骤
数据库设计的基本步骤
按照规范设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为以下6个阶段
1.需求分析
2.概念结构设计
3.逻辑结构设计
4.物理结构设计
5.数据库实施
6.数据库的运行和维护
在数据库设计过程中,需求分析和概念设计可以独立于任何数据库管理系统进行,逻辑设计和物理设计与选用的DAMS密切相关。
1.需求分析阶段(常用自顶向下)
进行数据库设计首先必须准确了解和分析用户需求(包括数据与处理)。需求分析是整个设计过程的基础,也是最困难,最耗时的一步。需求分析是否做得充分和准确,决定了在其上构建数据库大厦的速度与质量。需求分析做的不好,会导致整个数据库设计返工重做。
需求分析的任务,是通过详细调查现实世界要处理的对象,充分了解原系统工作概况,明确用户的各种需求,然后在此基础上确定新的系统功能,新系统还得充分考虑今后可能的扩充与改变,不仅仅能够按当前应用需求来设计。
调查的重点是,数据与处理。达到信息要求,处理要求,安全性和完整性要求。
分析方法常用SA(Structured Analysis) 结构化分析方法,SA方法从最上层的系统组织结构入手,采用自顶向下,逐层分解的方式分析系统。
数据流图表达了数据和处理过程的关系,在SA方法中,处理过程的处理逻辑常常借助判定表或判定树来描述。在处理功能逐步分解的同事,系统中的数据也逐级分解,形成若干层次的数据流图。系统中的数据则借助数据字典(data dictionary,DD)来描述。数据字典是系统中各类数据描述的集合,数据字典通常包括数据项,数据结构,数据流,数据存储,和处理过程5个阶段。
2.概念结构设计阶段(常用自底向上)
概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合,归纳与抽象,形成了一个独立于具体DBMS的概念模型。
设计概念结构通常有四类方法:
自顶向下。即首先定义全局概念结构的框架,再逐步细化。
自底向上。即首先定义各局部应用的概念结构,然后再将他们集成起来,得到全局概念结构。
逐步扩张。首先定义最重要的核心概念结构,然后向外扩张,以滚雪球的方式逐步生成其他的概念结构,直至总体概念结构。
混合策略。即自顶向下和自底向上相结合。
3.逻辑结构设计阶段(E-R图)
逻辑结构设计是将概念结构转换为某个DBMS所支持的数据模型,并将进行优化。
在这阶段,E-R图显得异常重要。大家要学会各个实体定义的属性来画出总体的E-R图。
各分E-R图之间的冲突主要有三类:属性冲突,命名冲突,和结构冲突。
E-R图向关系模型的转换,要解决的问题是如何将实体性和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。
4.物理设计阶段
物理设计是为逻辑数据结构模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
首先要对运行的事务详细分析,获得选择物理数据库设计所需要的参数,其次,要充分了解所用的RDBMS的内部特征,特别是系统提供的存取方法和存储结构。
常用的存取方法有三类:1.索引方法,目前主要是B+树索引方法。2.聚簇方法(Clustering)方法。3.是HASH方法。
5.数据库实施阶段
数据库实施阶段,设计人员运营DBMS提供的数据库语言(如sql)及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制和调试应用程序,组织数据入库,并进行试运行。
6.数据库运行和维护阶段
数据库应用系统经过试运行后,即可投入正式运行,在数据库系统运行过程中必须不断地对其进行评价,调整,修改。
Ⅱ 数据库设计原则
本系统中数据库的设计,要考虑和遵循下列数据库设计的基本原则,以建立稳定、安全、可靠的数据库。
1)一致性原则:对数据来源进行统一、系统的分析与设计,协调好各种数据源,保证数据的一致性和有效性。
2)完整性原则:数据库的完整性是指数据的正确性和相容性。要防止合法用户使用数据库时向数据库加入不合语义的数据。对输入到数据库中的数据要有审核和约束机制。
3)安全性原则:数据库的安全性是指保护数据,防止非法用户使用数据库或合法用户非法使用数据库造成数据泄露、更改或破坏。要有认证和授权机制。
4)可伸缩性与可扩展性原则:数据库结构的设计应充分考虑发展的需要、移植的需要,具有良好的扩展性、伸缩性和适度冗余。
5)规范化:数据库的设计应遵循规范化理论。规范化的数据库设计,可以减少数据库插入、删除、修改等操作时的异常和错误,降低数据冗余度等。
Ⅲ 数据库设计的基本步骤是什么
(1)需求分析阶段:需求收集和分析,得到数据字典和数据流图。
(2)概念结构设计阶段:对用户需求综合、归纳与抽象,形成概念模型,用E-R图表示。
(3)逻辑结构设计阶段:将概念结构转换为某个DBMS所支持的数据模型。
(4)数据库物理设计阶段:为逻辑数据模型选取一个最适合应用环境的物理结构。
(5)数据库实施阶段:建立数据库,编制与调试应用程序,组织数据入库,程序试运行。
(6)数据库运行和维护阶段:对数据库系统进行评价、调整与修改。
Ⅳ 数据库设计的基本步骤
数据库设计的基本步骤如下:
1、安装并打开MySQL WorkBench软件以后,在软件的左侧边栏有三个选项,分别是对应“连接数据库”、“设计数据库”、“迁移数据库”的功能。这类选择第二项,设计数据库,点击右边的“+”号,创建models。
Ⅳ 简述数据库设计过程
数据库设计过程分为以下六个阶段:
1、需求分析阶段
准确理解和分析用户需求(包括数据和处理),它是整个设计过程的基础,也是最困难、最耗时的一步。
2、概念结构设计阶段
是整个数据库设计的关键,通过对用户需求的集成、归纳和抽象,形成了一个独立于特定数据库管理系统的概念模型。
3、逻辑结构设计阶段
将概念结构转换为DBMS支持的数据模型,对其进行优化。
4、数据库物理设计阶段
为逻辑数据模型选择最适合应用程序环境的物理结构(包括存储结构和存取方法)。
5、数据库实现阶段
根据逻辑设计和物理设计的结果,使用数据库管理系统提供的数据语言、工具和主机语言,建立数据库,编写调试应用程序,组织数据仓库,并进行试运行。
6、数据库运行维护阶段
数据库应用系统经试运行后可投入正式运行,在数据库系统运行过程中,需要不断地对其进行评估、调整和修改。
注:在设计过程中,将数据库的设计与数据库中数据处理的设计紧密结合起来,在每个阶段同时对这两个方面的要求进行分析、抽象、设计和实现,相互借鉴和补充,从而完善这两个方面的设计。
(5)数据库的基础设计扩展阅读:
数据库设计技术
1、清晰的用户需求:作为计算机软件开发的重要基础,数据库设计直接反映了用户的需求。数据库必须与用户紧密沟通,紧密结合用户需求。在定义了用户开发需求之后,设计人员还需要反映具体的业务关系和流程。
2、注意数据维护:设计面积过大、数据过于复杂是数据库设计中常见的问题,设计人员应注意数据维护。
3、增加命名规范化:命名数据库程序和文件非常重要,不仅要避免重复的名称,还要确保数据处于平衡状态。为了降低检索信息和资源的复杂度和难度,设计人员应了解数据库程序与文件之间的关系,并灵活使用大小写字母命名。
4、充分考虑数据库的优化和效率:考虑到数据库的优化和效率,设计人员需要对不同表的存储数据采用不同的设计方法。在设计中,还应该使用最少的表和最弱的关系来实现海量数据的存储。
5、不断调整数据之间的关系:不断调整和简化数据之间的关系,可以有效减少设计与数据之间的联系,进而为维护数据之间的平衡和提高数据读取效率提供保障。
6、合理使用索引:数据库索引通常分为聚集索引和非聚集索引,这样可以提高数据搜索的效率。
参考资料来源:网络-数据库设计
Ⅵ 如何进行数据库的设计
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。
在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。
一、数据库和信息系统
(1)数据库是信息系统的核心和基础,把信息系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的
功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。
(2)数据库是信息系统的各个部分能否紧密地结合在一起以及如何结合的关键所在。
(3)数据库设计是信息系统开发和建设的重要组成部分。
(4)数据库设计人员应该具备的技术和知识:
数据库的基本知识和数据库设计技术
计算机科学的基础知识和程序设计的方法和技巧
软件工程的原理和方法
应用领域的知识
二、数据库设计的特点
数据库建设是硬件、软件和干件的结合
三分技术,七分管理,十二分基础数据
技术与管理的界面称之为“干件”
数据库设计应该与应用系统设计相结合
结构(数据)设计:设计数据库框架或数据库结构
行为(处理)设计:设计应用程序、事务处理等
结构和行为分离的设计
传统的软件工程忽视对应用中数据语义的分析和抽象,只要有可能就尽量推迟数据结构设计的决策早期的数据库设计致力于数据模型和建模方法研究,忽视了对行为的设计
如图:
三、数据库设计方法简述
手工试凑法
设计质量与设计人员的经验和水平有直接关系
缺乏科学理论和工程方法的支持,工程的质量难以保证
数据库运行一段时间后常常又不同程度地发现各种问题,增加了维护代价
规范设计法
手工设计方
基本思想
过程迭代和逐步求精
规范设计法(续)
典型方法:
(1)新奥尔良(New Orleans)方法:将数据库设计分为四个阶段
S.B.Yao方法:将数据库设计分为五个步骤
I.R.Palmer方法:把数据库设计当成一步接一步的过程
(2)计算机辅助设计
ORACLE Designer 2000
SYBASE PowerDesigner
四、数据库设计的基本步骤
数据库设计的过程(六个阶段)
1.需求分析阶段
准确了解与分析用户需求(包括数据与处理)
是整个设计过程的基础,是最困难、最耗费时间的一步
2.概念结构设计阶段
是整个数据库设计的关键
通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型
3.逻辑结构设计阶段
将概念结构转换为某个DBMS所支持的数据模型
对其进行优化
4.数据库物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)
5.数据库实施阶段
运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果
建立数据库,编制与调试应用程序,组织数据入库,并进行试运行
6.数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行。
在数据库系统运行过程中必须不断地对其进行评价、调整与修改
设计特点:
在设计过程中把数据库的设计和对数据库中数据处理的设计紧密结合起来将这两个方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计
设计过程各个阶段的设计描述:
如图:
五、数据库各级模式的形成过程
1.需求分析阶段:综合各个用户的应用需求
2.概念设计阶段:形成独立于机器特点,独立于各个DBMS产品的概念模式(E-R图)
3.逻辑设计阶段:首先将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式;然后根据用户处理的要求、安全性的考虑,在基本表的基础上再建立必要的视图(View),形成数据的外模式
4.物理设计阶段:根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式
六、数据库设计技巧
1. 设计数据库之前(需求分析阶段)
1) 理解客户需求,询问用户如何看待未来需求变化。让客户解释其需求,而且随着开发的继续,还要经常询问客户保证其需求仍然在开发的目的之中。
2) 了解企业业务可以在以后的开发阶段节约大量的时间。
3) 重视输入输出。
在定义数据库表和字段需求(输入)时,首先应检查现有的或者已经设计出的报表、查询和视图(输出)以决定为了支持这些输出哪些是必要的表和字段。
举例:假如客户需要一个报表按照邮政编码排序、分段和求和,你要保证其中包括了单独的邮政编码字段而不要把邮政编码糅进地址字段里。
4) 创建数据字典和ER 图表
ER 图表和数据字典可以让任何了解数据库的人都明确如何从数据库中获得数据。ER图对表明表之间关系很有用,而数据字典则说明了每个字段的用途以及任何可能存在的别名。对SQL 表达式的文档化来说这是完全必要的。
5) 定义标准的对象命名规范
数据库各种对象的命名必须规范。
2. 表和字段的设计(数据库逻辑设计)
表设计原则
1) 标准化和规范化
数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但Third Normal Form(3NF)通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守3NF 标准的数据库的表设计原则是:“One Fact in One Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。
举例:某个存放客户及其有关定单的3NF 数据库就可能有两个表:Customer 和Order。Order 表不包含定单关联客户的任何信息,但表内会存放一个键值,该键指向Customer 表里包含该客户信息的那一行。
事实上,为了效率的缘故,对表不进行标准化有时也是必要的。
2) 数据驱动
采用数据驱动而非硬编码的方式,许多策略变更和维护都会方便得多,大大增强系统的灵活性和扩展性。
举例,假如用户界面要访问外部数据源(文件、XML 文档、其他数据库等),不妨把相应的连接和路径信息存储在用户界面支持表里。还有,如果用户界面执行工作流之类的任务(发送邮件、打印信笺、修改记录状态等),那么产生工作流的数据也可以存放在数据库里。角色权限管理也可以通过数据驱动来完成。事实上,如果过程是数据驱动的,你就可以把相当大的责任推给用户,由用户来维护自己的工作流过程。
3) 考虑各种变化
在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。
举例,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓等)。所以,在建立系统存储客户信息时,在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一数据条目的变化。
字段设计原则
4) 每个表中都应该添加的3 个有用的字段
dRecordCreationDate,在VB 下默认是Now(),而在SQL Server • 下默认为GETDATE()
sRecordCreator,在SQL Server 下默认为NOT NULL DEFAULT • USER
nRecordVersion,记录的版本标记;有助于准确说明记录中出现null 数据或者丢失数据的原因 •
5) 对地址和电话采用多个字段
描述街道地址就短短一行记录是不够的。Address_Line1、Address_Line2 和Address_Line3 可以提供更大的灵活性。还有,电话号码和邮件地址最好拥有自己的数据表,其间具有自身的类型和标记类别。
6) 使用角色实体定义属于某类别的列
在需要对属于特定类别或者具有特定角色的事物做定义时,可以用角色实体来创建特定的时间关联关系,从而可以实现自我文档化。
举例:用PERSON 实体和PERSON_TYPE 实体来描述人员。比方说,当John Smith, Engineer 提升为John Smith, Director 乃至最后爬到John Smith, CIO 的高位,而所有你要做的不过是改变两个表PERSON 和PERSON_TYPE 之间关系的键值,同时增加一个日期/时间字段来知道变化是何时发生的。这样,你的PERSON_TYPE 表就包含了所有PERSON 的可能类型,比如Associate、Engineer、Director、CIO 或者CEO 等。还有个替代办法就是改变PERSON 记录来反映新头衔的变化,不过这样一来在时间上无法跟踪个人所处位置的具体时间。
7) 选择数字类型和文本类型尽量充足
在SQL 中使用smallint 和tinyint 类型要特别小心。比如,假如想看看月销售总额,总额字段类型是smallint,那么,如果总额超过了$32,767 就不能进行计算操作了。
而ID 类型的文本字段,比如客户ID 或定单号等等都应该设置得比一般想象更大。假设客户ID 为10 位数长。那你应该把数据库表字段的长度设为12 或者13 个字符长。但这额外占据的空间却无需将来重构整个数据库就可以实现数据库规模的增长了。
8) 增加删除标记字段
在表中包含一个“删除标记”字段,这样就可以把行标记为删除。在关系数据库里不要单独删除某一行;最好采用清除数据程序而且要仔细维护索引整体性。
3. 选择键和索引(数据库逻辑设计)
键选择原则:
1) 键设计4 原则
为关联字段创建外键。 •
所有的键都必须唯一。 •
避免使用复合键。 •
外键总是关联唯一的键字段。 •
2) 使用系统生成的主键
设计数据库的时候采用系统生成的键作为主键,那么实际控制了数据库的索引完整性。这样,数据库和非人工机制就有效地控制了对存储数据中每一行的访问。采用系统生成键作为主键还有一个优点:当拥有一致的键结构时,找到逻辑缺陷很容易。
3) 不要用用户的键(不让主键具有可更新性)
在确定采用什么字段作为表的键的时候,可一定要小心用户将要编辑的字段。通常的情况下不要选择用户可编辑的字段作为键。
4) 可选键有时可做主键
把可选键进一步用做主键,可以拥有建立强大索引的能力。
索引使用原则:
索引是从数据库中获取数据的最高效方式之一。95%的数据库性能问题都可以采用索引技术得到解决。
1) 逻辑主键使用唯一的成组索引,对系统键(作为存储过程)采用唯一的非成组索引,对任何外键列采用非成组索引。考虑数据库的空间有多大,表如何进行访问,还有这些访问是否主要用作读写。
2) 大多数数据库都索引自动创建的主键字段,但是可别忘了索引外键,它们也是经常使用的键,比如运行查询显示主表和所有关联表的某条记录就用得上。
3) 不要索引memo/note 字段,不要索引大型字段(有很多字符),这样作会让索引占用太多的存储空间。
4) 不要索引常用的小型表
不要为小型数据表设置任何键,假如它们经常有插入和删除操作就更别这样作了。对这些插入和删除操作的索引维护可能比扫描表空间消耗更多的时间。
4. 数据完整性设计(数据库逻辑设计)
1) 完整性实现机制:
实体完整性:主键
参照完整性:
父表中删除数据:级联删除;受限删除;置空值
父表中插入数据:受限插入;递归插入
父表中更新数据:级联更新;受限更新;置空值
DBMS对参照完整性可以有两种方法实现:外键实现机制(约束规则)和触发器实现机制
用户定义完整性:
NOT NULL;CHECK;触发器
2) 用约束而非商务规则强制数据完整性
采用数据库系统实现数据的完整性。这不但包括通过标准化实现的完整性而且还包括数据的功能性。在写数据的时候还可以增加触发器来保证数据的正确性。不要依赖于商务层保证数据完整性;它不能保证表之间(外键)的完整性所以不能强加于其他完整性规则之上。
3) 强制指示完整性
在有害数据进入数据库之前将其剔除。激活数据库系统的指示完整性特性。这样可以保持数据的清洁而能迫使开发人员投入更多的时间处理错误条件。
4) 使用查找控制数据完整性
控制数据完整性的最佳方式就是限制用户的选择。只要有可能都应该提供给用户一个清晰的价值列表供其选择。这样将减少键入代码的错误和误解同时提供数据的一致性。某些公共数据特别适合查找:国家代码、状态代码等。
5) 采用视图
为了在数据库和应用程序代码之间提供另一层抽象,可以为应用程序建立专门的视图而不必非要应用程序直接访问数据表。这样做还等于在处理数据库变更时给你提供了更多的自由。
5. 其他设计技巧
1) 避免使用触发器
触发器的功能通常可以用其他方式实现。在调试程序时触发器可能成为干扰。假如你确实需要采用触发器,你最好集中对它文档化。
2) 使用常用英语(或者其他任何语言)而不要使用编码
在创建下拉菜单、列表、报表时最好按照英语名排序。假如需要编码,可以在编码旁附上用户知道的英语。
3) 保存常用信息
让一个表专门存放一般数据库信息非常有用。在这个表里存放数据库当前版本、最近检查/修复(对Access)、关联设计文档的名称、客户等信息。这样可以实现一种简单机制跟踪数据库,当客户抱怨他们的数据库没有达到希望的要求而与你联系时,这样做对非客户机/服务器环境特别有用。
4) 包含版本机制
在数据库中引入版本控制机制来确定使用中的数据库的版本。时间一长,用户的需求总是会改变的。最终可能会要求修改数据库结构。把版本信息直接存放到数据库中更为方便。
5) 编制文档
对所有的快捷方式、命名规范、限制和函数都要编制文档。
采用给表、列、触发器等加注释的数据库工具。对开发、支持和跟踪修改非常有用。
对数据库文档化,或者在数据库自身的内部或者单独建立文档。这样,当过了一年多时间后再回过头来做第2 个版本,犯错的机会将大大减少。
6) 测试、测试、反复测试
建立或者修订数据库之后,必须用用户新输入的数据测试数据字段。最重要的是,让用户进行测试并且同用户一道保证选择的数据类型满足商业要求。测试需要在把新数据库投入实际服务之前完成。
7) 检查设计
在开发期间检查数据库设计的常用技术是通过其所支持的应用程序原型检查数据库。换句话说,针对每一种最终表达数据的原型应用,保证你检查了数据模型并且查看如何取出数据。
Ⅶ 基础数据库
(一)数据内容
基础数据库包括系统运行前所采集到的所有支撑数据,数据的具体内容在数据分类与数据源章节中已描述,概括可分为以下几类。
(1)遥感影像数据:包括历史图像数据,以及按照一定监测周期更新的遥感图像数据。
(2)数字线划图数据:矢量数据(现状专题图和历史专题图数据)、栅格数据、元数据等。入库前数据以ArcInfoCoverage格式分幅或整体存储,采用地理坐标系统。
(3)数字栅格图数据:包括1∶5万和1∶10万基础地理图形数据的扫描栅格数据。
(4)数字高程模型数据:塔里木河干流河道1∶1万和“四源一干”区域1∶10万数字高程模型。
(5)多媒体数据:考察照片、录像、录音和虚拟演示成果等多媒体资料。
(6)属性数据:社会经济与水资源数据、水利工程数据、生态环境数据等。
(二)数据存储结构
1.栅格数据
栅格数据包括遥感影像、数字栅格图、数字正射影像图、数字高程模型等,这些数据的存储结构基本类似,因此可进行统一设计。遥感图像数据库与普通的图像数据库在存储上有些差别,遥感图像作为传感器对地理、空间环境在不同条件下的测量结果(如光谱辐射特性、微波辐射特性),必须结合同时得到的几个图像才可以认为是对环境在一定的时间条件下的完整的描述,也即是说,可能需要一个图像集合才能构成一个图像的完整的概念,并使之与语义信息产生联系(罗睿等,2000)。因此,遥感图像数据存储结构模型必须能够描述几个图像(波段)之间的逻辑关系。利用ArcSDE进行数据入库时,系统可自动建立各图像(波段)之间的关系,并按一定规则存储在数据库系统中。
对栅格数据在后台将采用Oracle数据库管理系统进行存储。Oracle系统可直接存储影像信息,并具有较强的数据管理能力,可以实现栅格数据信息的快速检索和提取。数据引擎采用ArcSDE,实现各类影像数据的入库。数据存储的关键是建立图幅索引,本系统数据的存储按图幅号、图名、采集时间等内容建立索引。
栅格数据依据图形属性一体化的存储思想,采用大二进制格式直接存储数据,这种方式的存储可实现内容的快速检索查询,按索引表检索出相关项后可直接打开栅格数据,提高栅格数据的管理效率。
2.矢量数据
本系统采用图属一体化思想即将空间数据和属性数据合二为一,全部存在一个记录集中的思想存储空间数据,是目前GIS数据非常流行的存储方法。考虑到数据的具体情况,决定采用数据库存储空间数据和属性数据,部分具有少量、定型几何信息的地理要素如水文测站、河流、湖泊等,采用图属一体化思想存储其信息,而与其有关联关系的大量、多边化的属性信息如水文信息,则存储在属性数据表中,利用唯一标识符信息建立两表的关联。
针对本系统空间数据的特点,系统按照“数据库—子库—专题(基础数据)—层—要素—属性”的层次框架来构筑空间数据库,按照统一的地理坐标系统来存储空间数据,以实现对地理实体/专题要素进行分层叠加显示。
3.多媒体数据
Oracle系统可直接存储图片和视频信息,并具有较强的数据管理能力,可以实现多媒体信息的快速检索和提取。多媒体数据存储的关键是建立索引表,本系统多媒体数据的存储按类型、时间、内容等项目建立索引,直接存储于Oracle数据库中。
多媒体数据存储时,可以将多媒体内容与索引表结构合为一体,采用大二进制格式直接存储,这种存储方式可实现内容的快速检索和查询,按索引表检索出相关项后可直接打开多媒体内容,而且多媒体数据库也便于维护管理。
(三)空间索引设计
1.矢量空间索引
确定合适的格网级数、单元大小是建立空间格网索引的关键。格网太大,在一个格网内有多个空间实体,查询检索的准确度就低。格网太小,则索引数据量成倍增长和冗余,检索的速度和效率低。每一个数据层可采用不同大小、不同级别的空间索引格网单元,但每层级数最多不能超过三级。索引方式设置遵循以下基本原则:
(1)对于简单要素的数据层,尽可能选择单级索引格网,减少RDBMS搜索格网单元索引的级数,缩短空间索引搜索的过程;
(2)如果数据层中的要素封装边界大小变化比较大,应选择2或3级索引格网;
(3)如果用户经常对图层执行相同的查询,最佳格网的大小应是平均查询范围的1.5倍;
(4)格网的大小不能小于要素封装边界的平均大小。为了减少每个格网单元有多个要素封装边界的可能性,格网单元的大小应取要素封装边界平均大小的3倍;
(5)格网单元的大小不是一个确定性的问题,需要多次尝试和努力才会得到好的结果。有一些确定格网初始值的原则,用它们可以进一步确定最佳的格网大小。
SDE(Spatial Data Engine,即空间数据引擎),从空间管理的角度看,是一个连续的空间数据模型,可将地理特征的空间数据和属性数据统一集成在关系型数据库管理系统中。关系型数据库系统支持对海量数据的存储,从而也可实现对空间数据的海量存储。空间数据可通过层来进行数据的划分,将具有共同属性的一类要素放到一层中,每个数据库记录对应一层中一个实际要素,这样避免了检索整个数据表,减少了检索的数据记录数量,从而减少磁盘输入/输出的操作,加快了对空间数据查询的速度。
ArcSDE采用格网索引方式,将空间区域划分成合适大小的正方形格网,记录每一个格网内所包含的空间实体(对象),以及每一个实体的封装边界范围,即包围空间实体的左下角和右上角坐标。当用户进行空间查询时,首先计算出用户查询对象所在格网,然后通过格网号,就可以快速检索到所需的空间实体。因此确定合适的格网级数、单元大小是建立空间格网索引的关键,太大或太小均不合适,这就需要进行多次尝试,确定合适的网格大小,以保证各单元能均匀落在网格内。利用ArcSDE的索引表创建功能,记录每一网格单元的实体分布情况,形成图层空间索引表。根据空间索引表,ArcSDE实现了对空间数据的快速查询。
2.栅格数据空间索引
栅格数据的空间索引通过建立多级金字塔结构来实现。以高分辨率栅格数据为底层,逐级抽取数据,建立不同分辨率的数据金字塔结构,逐级形成较低分辨率的栅格数据。该方法通常会增加20%左右的存储空间,但却可以提高栅格数据的显示速度。在数据库查询检索时,调用合适级别的栅格数据,可提高浏览和显示速度。
(四)入库数据校验
入库数据的质量关系到系统评价分析结果的准确性。数据在生产中就需要严格进行质量控制。依据数据生产流程,将数据质量控制分成生产过程控制和结果控制。生产过程控制包括数据生产前期的质量控制、数据生产过程中的实时质量控制,结果质量控制为数据生产完成后的质量控制(裴亚波等,2003)。对入库数据的校验主要是进行数据生产完成后的质量控制和检查。
1.规范化检查
(1)代码规范化:所有地理代码尽量采用国家标准和行业标准,例如,行政代码采用中华人民共和国行政区划代码国标。
(2)数据格式规范化:所有数据采用标准交换数据格式,例如,矢量数据采用标准输出Coverage格式和E00格式。
(3)属性数据和关系数据字段规范化:所有属性数据和关系数据提前分门别类地设计字段的内容、长短和格式,操作过程中严格执行。
(4)坐标系统规范化:本系统所有与空间有关的数据采用统一的空间坐标系统,即地理坐标系统。
(5)精度规范化:所有数据按照数据精度与质量控制中所要求的精度进行采集和处理。
(6)命名规范化:所有数据按照命名要求统一命名,便于系统的查询。
(7)元数据规范化:依照元数据标准要求,进行元数据检查。
2.质量控制
数据质量是GIS成败的关键。对于关系型数据库设计,只要能保证表的实体完整性和参照完整性,并使之符合关系数据库的三个范式即可。对于空间数据库设计,则不仅要考虑数据采样、数据处理流程、空间配准、投影变换等问题,还应对数据质量做出定量分析。
数据质量一般可以通过以下几个方面来描述(吴芳华等,2001):
(1)准确度(Accuracy):即测量值与真值之间的接近程度,可用误差来衡量;
(2)精度(Precision):即对现象描述得详细程度;
(3)不确定性(Uncertainty):指某现象不能精确测得,当真值不可测或无法知道时,就无法确定误差,因而用不确定性取代误差;
(4)相容性(Compatibility):指两个来源不同的数据在同一个应用中使用的难易程度;
(5)一致性(Consistency):指对同一现象或同类现象表达的一致程度;
(6)完整性(Completeness):指具有同一准确度和精度的数据在类型上和特定空间范围内完整的程度;
(7)可得性(Accessibility):指获取或使用数据的容易程度;
(8)现势性(Timeliness):指数据反映客观现象目前状况的程度。
塔里木河流域生态环境动态监测系统的所有数据在数据质量评价后,还需要从数据格式、坐标一致性等方面进行入库质量检验,只有通过质量检验的数据才可以入库。
3.数据检验
空间数据质量检验包括以下步骤:
(1)数据命名是否规范,是否按设计要求命名;
(2)数据是否能够正常打开;
(3)投影方式是否正确;
(4)坐标系统是否正确;
(5)改错是否完成,拓扑关系是否建立;
(6)属性数据是否正确,包括字段设置是否依据设计进行、是否有空属性记录、是否有属性错误记录等。
关系数据质量检验包括以下步骤:
(1)数据命名是否规范,是否按设计要求命名;
(2)数据是否能够正常打开;
(3)数据字段是否按设计要求设置;
(4)是否有空属性记录;
(5)是否有属性错误记录。
属性数据的校验,主要采用以下三种方式:
(1)两次录入校验:对一些相互之间毫无关联的数据,进行两次的录入,编写程序对两次录入的结果进行比较,找出两次录入结果不一样的数据,查看正确值,进行改正。
(2)折线图检验:对一些相互之间有关联的序列数据,如人口统计数据,对这一类数据,编写程序把数据以折线图的形式显示在显示器上,数据的序列一般都有一定规律,如果出现较大的波动,则需对此点的数据进行检查修改。
(3)计算校验:对一些按一定公式计算后所得结果与其他数据有关联的数据,如某些数据的合计等于另一数据,编写程序对这类数据进行计算,计算结果与有关联的数据进行比较,找出结果不一样的数据,查看正确值,进行改正。
图形数据的校验,主要包括以下步骤(陈俊杰等,2005):
(1)图层校验:图形要素的放置图层是唯一的。对于入库的Coverage数据,系统将根据图层代码进行检查,确保图形要素对层入座。
(2)代码检查:图形要素的代码是唯一的。对于入库的Coverage数据,系统将根据入库要素代码与特征表中的代码进行比较,确保入库数据代码存在,杜绝非法代码入库。
(3)类型检查:对入库的数据,检查该要素的类型与特征表中的类型是否一致,确保图形要素对表入座。如点要素、线要素、面要素仅能赋相应的点、线、面代码,且该代码必须与特征表中的数据类型代码相同。
(4)范围检查:根据入库的数据,确定该类要素的大体范围(如X、Y坐标等),在数据入库前,比较入库数据与范围数据的大小,若入库数据在该范围内,则入库,否则给出提示检查信息。
(五)数据入库
1.遥感影像数据
利用空间数据引擎———ArcSDE可实现遥感影像数据在Oracle数据库中的存储和管理,在影像数据进行入库时,应加入相应的索引和影像描述字段。
遥感影像入库步骤:
(1)影像数据预处理:要将塔里木河遥感影像数据库建成一个多分辨率无缝影像数据库系统,客观上要求数据库中的影像数据在几何空间、灰度空间连续一致。因此,在数据采集阶段就需要对影像数据进行预处理,包括图像几何校正、灰度拼接(无缝镶嵌)、正射处理、投影变换等。
几何校正的目的是使校正后的图像重新定位到某种地图投影方式,以适用于各种定位、量测、多源影像的复合及与矢量地图、DTM等的套合显示与处理。几何校正多采用二次多项式算法和图像双线性内插重采样法进行图像校正。将纠正后具有规定地理编码的图像按多边形圈定需要拼接的子区,逐一镶嵌到指定模版,同时进行必要的色彩匹配,使整体图像色调一致,完成图像的几何拼接,再采用金字塔影像数据结构和“从粗到精”的分层控制策略实现逐级拼接。
数字正射影像具有统一的大地坐标系、丰富的信息量和真实的景观表达,易于制作具有“独立于比例尺”的多级金字塔结构影像。可以采用DTM和外方位元素经过数字微分纠正方法,获得数字正射影像,它的基本参数包括原始影像与正射影像的比例尺、采样分辨率等(方涛等,1997)。
投影变换需根据数据库系统定义的标准转换到统一的投影体系下。
(2)影像数据压缩:随着传感器空间分辨率的提高和对遥感信息需求的日益增长,获取的影像数据量成几何级数增大,如此庞大的数据将占用较大的存储空间,给影像的存储和传输带来不便(葛咏等,2000)。目前,系统处理的遥感影像数据已达数百千兆,单个文件的影像数据最大达到了2G,这样的数据量在调用显示时速度很慢,对影像数据进行压缩存储,将大大提高影像访问效率。本系统采用ArcSDE软件提供的无损压缩模式对入库影像进行压缩。
(3)影像导入:遥感影像的入库可通过ArcSDE或入库程序进行导入,并填写相关的索引信息,在入库时对大型的遥感影像数据进行自动分割,分为若干的块(tiles)进行存储。
(4)图像金字塔构建:采用ArcSDE提供的金字塔构建工具在入库时自动生成图像金字塔,用户只需要选择相应的参数设置即可。图像金字塔及其层级图像按分辨率分级存储与管理。最底层的分辨率最高,并且数据量最大,分辨率越低,其数据量越小,这样,不同的分辨率遥感图像形成了塔式结构。采用这种图像金字塔结构建立的遥感影像数据库,便于组织、存储与管理多尺度、多数据源遥感影像数据,实现了跨分辨率的索引与浏览,极大地提高了影像数据的浏览显示速度。
2.数字线划图
对纸图数字化、配准、校正、分层及拼接等处理后,生成标准分幅和拼接存储的数字矢量图,就可以进行图形数据入库。
(1)分幅矢量图形数据、图幅接合表:按图形比例尺、图幅号、制作时间、图层等方式,通过入库程序导入到数据库中,同时导入与该地理信息相对应的属性信息,建立空间信息与属性信息的关联。
(2)拼接矢量图形数据:按图形比例尺、制作时间、图层等方式,通过入库程序导入到数据库中,同时导入与该地理信息相对应的属性信息,建立空间信息与属性信息的关联。
3.栅格数据
对纸图数字化、配准、校正、分层及拼接等处理后,生成标准分幅和整体存储的数字栅格图,然后进行图形数据入库。
(1)分幅栅格图形数据、图幅接合表:按图形比例尺、图幅号、制作时间等方式,通过入库程序导入到数据库中。
(2)整幅栅格图形数据:按比例尺、制作时间等方式,通过入库程序导入到数据库中。
4.数字高程模型
(1)分幅数字高程模型数据、图幅接合表:按图形比例尺、图幅号、制作时间等方式,通过入库程序导入到数据库中。
(2)拼接数字高程模型数据:按比例尺、制作时间等方式通过入库程序导入到数据库中。
5.多媒体数据
多媒体数据入库可根据多媒体数据库内容的需要对入库数据进行预处理,包括音频、视频信息录制剪接、文字编辑、色彩选配等。对多媒体信息的加工处理需要使用特定的工具软件进行编辑。由于音频信息和视频信息数据量巨大,因此,对多媒体数据存储时需采用数据压缩技术,现在的许多商用软件已能够直接存储或播放压缩后的多媒体数据文件,这里主要考虑根据数据显示质量要求选择采用不同的存储格式。图4-2为各类多媒体数据的加工处理流程。
图4-2 多媒体数据加工处理流程图
6.属性数据
将收集的社会经济、水利工程、生态环境等属性资料,进行分析整理,输入计算机,最后经过程序的计算处理,存储到数据库中,具体流程如图4-3所示。
图4-3 属性数据入库流程图
Ⅷ 数据库设计的基本步骤
数据库设计的基本步骤
1、需求分析阶段
进行数据库设计首先必须准确了解与分析用户需求(包括数据与处理)。需求分析是整个设计过程的基础,是最困难和最耗费时间的一步。作为“地基”的需求分析是否做得充分与准确,决定了在其上构建数据库“大厦”的速度与质量。需求分析做的不好,可能会导致整个数据库设计返工重做。
2、概念结构设计阶段
概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体数据库管理系统的概念模型。
3、逻辑结构设计阶段
逻辑结构设计是将概念结构转换为某个数据库管理系统所支持的数据模型,并对其进行优化。
4、物理设计阶段
物理结构设计师为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方式)。
5、数据库实施阶段
在数据库实施阶段,设计人员运用数据库管理系统提供数据库语言及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编写与调试应用程序,组织数据入库,并进行测试运行。
6、数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行,在数据库系统运行过程中必须不断对其进行评估、调整与修改。
数据库设计的基本原则
1、一致性原则:对数据来源进行统一、系统的分析与设计,协调好各种数据源,保证数据的一致性和有效性。
2、完整性原则:数据库的完整性是指数据的正确性和相容性。要防止合法用户使用数据库时向数据库加入不合语义的数据。对输入到数据库中的数据要有审核和约束机制。
3、安全性原则:数据库的安全性是指保护数据,防止非法用户使用数据库或合法用户非法使用数据库造成数据泄露、更改或破坏。要有认证和授权机制。
4、可伸缩性与可扩展性原则:数据库结构的设计应充分考虑发展的需要、移植的需要,具有良好的扩展性、伸缩性和适度冗余。
5、规范化原则:数据库的设计应遵循规范化理论。规范化的数据库设计,可以减少数据库插入、删除、修改等操作时的异常和错误,降低数据冗余度等。
Ⅸ 网站的数据库如何设计
什么是好的数据库设计?
一些原则可为数据库设计过程提供指导。第一个原则是,重复信息(也称为冗余数据)很糟糕,因为重复信息会浪费空间,并会增加出错和不一致的可能性。第二个原则是,信息的正确性和完整性非常重要。如果数据库中包含不正确的信息,任何从数据库中提取信息的报表也将包含不正确的信息。因此,基于这些报表所做的任何决策都将提供错误信息。
所以,良好的数据库设计应该是这样的:
将信息划分到基于主题的表中,以减少冗余数据。
向 Access 提供根据需要联接表中信息时所需的信息。
可帮助支持和确保信息的准确性和完整性。
可满足数据处理和报表需求。
设计过程
设计过程包括以下步骤:
确定数据库的用途:这可帮助进行其他步骤的准备工作。
查找和组织所需的信息:收集可能希望在数据库中记录的各种信息,如产品名称和订单号。
划分到表中的信息:将信息项划分到主要的实体或主题中,如“产品”或“订单”。每个主题即构成一个表。
关闭信息项目导入的列 确定希望在每个表中存储哪些信息。每个项将成为一个字段,并作为列显示在表中。例如,“雇员”表中可能包含“姓氏”和“聘用日期”等字段。
指定为主键:选择每个表的主键。主键是一个用于唯一标识每个行的列。例如,主键可以为“产品 ID”或“订单 ID”。
设置表关系:查看每个表,并确定各个表中的数据如何彼此关联。根据需要,将字段添加到表中或创建新表,以便清楚地表达这些关系。
优化您的设计:分析设计中是否存在错误。创建表并添加几条示例数据记录。确定是否可以从表中获得期望的结果。根据需要对设计进行调整。
应用规范化规则:应用数据规范化规则,以确定表的结构是否正确。根据需要对表进行调整。
参考:数据库设计基础