‘壹’ XML技术与数据库的发展趋势分析
数据库技术及其应用系统经历了从层次数据库 网状数据库到关系数据库以及面向对象数据库的发展 在传统的商业和事务处理领域内逐步成熟 取代了原有的基于文件系统的数据处理方式 成为计算机信息系统中的重要基础和支柱 但随着Internet的飞速发展 Web的出现改变源激了人们习惯的处理方式 也给数据库技术提出了必须面对的重要问题 即如何有效地存储和管理Web上的数据(文档) 使其既能被高效地操作和维护 又能在Internet平台上方便地表示和交换
XML技术自出现以来发展非常迅速 在许多领域内得到广泛的支持而有着广阔的应用前景 例如电子数据交换 电子商务等更是将XML作为一种基础性 支柱性的技术来看待
数据库简史
数据库系统是随着计算机技术的不断发展 在特定的历史时期 特定的需求环境下出现的 在 年的第一台计算机到 世纪 年代这漫长的 年里 计算机操作系统主要局限于文件的操作 对数据的管理也主要是通过文件系统来实现 进行计算所需要的各种数据存放在各自的文件里 使用这些数据时将文件打开 读取文件中的数据到内存中 当计算完毕后 将计算结果仍旧写入到文件中去 它的不足主要集中在无法对数据进行有效的统一管理 针对文件系统的重要缺点 人们逐步发展了以统一管理数据和共享数据为主要特征的系统 即数据库系统 年 美国通用电气公司开发成功了世界上的第一个数据库系统IDS(IntegratedDataStore) IDS奠定了网状数据库的基础 并得到了广泛的发行和应用 成为数据库系统发展史上的一座丰碑 年 美国国际商用机器公司(IBM)也推出世界上第一个层次数据库系统IMS(InformationManagement System) 同样在数据库系统发展史上占有重要的地位
年代初 E F Codd在总结前面的层次 网状数据库优缺点的基础上 提出了关系数据模型的概念及关系代数和关系演算 在 年代 关系数据库系统无论从理论上还是实践上都取得了丰硕的成果 在理论上确立了完整的关系模型理论 数据依赖理论和关系数据库的设计理论 在实践上 世界上出现了很多着名的关系数据库系统 比较着名的如SystemR INGRES Oracle等
与文件系统相比 数据库系统有几个方面的特点 向用户提供高级的接口 向用户提供非过程化的数据库语言(即SQL语言) 查询的处理和优化 并发控制 数据的完整性约束
进入 年代之后 计算机硬件技术的飞速提高促使计算机应用不断深入 产生了许多新的应用领域 例如计算机辅助设计 计算机辅助制造 计算机辅助教学 办公自动化 智能信息处理 决策支持等 这些新的领域对数据库系统提出了新的要求 但由于应用的多元化 不能设计出一个统一的数据模型来表示这些新型的数据及其相互关系 因而出现了百家争鸣的局面 产生了演绎数据库 面向对象数据库 分布式数据库 工程数据库 时态数据库 模糊数据库等新型数据库的研究和应用
XML简介
XML推荐标准 版发布于 年 月 之后迅速在全球掀起了XML应用的浪潮 XML是一种描述型的标记语言 与HTML同为SGML(标准通用标记语言 ISO 国际标准)的一种应用 由于XML在可扩展性 可移植性和结构性等方面的突出优点 它的应用范围突破了HTML所达到的范围
一篇XML文档由标记和内容组成 XML中有六种标记 元素(elements) 属性(attributes) 实体引用(entityreferences) 注释(ments) 处理指令(processinginstructions)和CDATA段(CDATAsections) XML与HTML最显着的不同是XML文档中引入了 文档类型声明 (Document Type Declarations) DTD使文档可以与分析器交流关于它的内容的元信息 DTD的出现 赋予了XML文档可扩展性 结构性和可验证性 使XML具备了类似于数据库的一些性质 可以利用XML来组织和管理信息 又可以与HTML一样在拍裂闹浏览器中方便地表示 在Internet上高效地传递和交换 考虑到与HTML的兼容 DTD并不是XML文档必需袭罩的成份 具有DTD的XML文档称作 Valid 否则就是 Well formed
目前 处理XML文档的方式主要有SAX与DOM两种 SAX(SimpleAPIforXML)是一种基于流的 以事件处理方式工作的接口 SAX 在 年 月发布 增强了许多功能 包括对名字空间的支持 DOM(Document Object Model)则是在对XML文档进行分析后 在内存中建立起一个完整的树结构 然后在此基础上进行各种操作 简单地比较来看 SAX对系统资源要求低 速度快 但对文档的操作是只读的 DOM的处理能力强大 但要求大量的系统资源 尤其是对于大的文档 而后还出现了Xpath和Xpointer用以完成XML的搜索和转换 XSL XSLT和SOAP用以完成XML的远程对象访问 XML Query Languages的出现使XML查询语言可用于任何XML文档
XML与数据库
XML文件是数据的集合 它是自描述的 可交换的 能够以树型或图形结构描述数据 XML提供了许多数据库所具备的工具 存储(XML文档) 模式(DTD XMLschema RE AXNG等) 查询语言(XQuery XPath XQL XML QL QUILT等) 编程接口(SAX DOM JDOM)等 但XML并不能完全替代数据库技术 XML缺少作为实用的数据库所应具备的特性 高效的存储 索引和数据修改机制 严格的数据安全控制 完整的事务和数据一致性控制 多用户访问机制 触发器 完善的并发控制等 因此 尽管在数据量小 用户少和性能要求不太高的环境下 可以将XML文档用作数据库 但却不适用于用户量大 数据集成度高以及性能要求高的作业环境
随着Web技术的不断发展 信息共享和数据交换的范围不断扩大 传统的关系数据库也面临着挑战 数据库技术的应用是建立在数据库管理系统基础上的 各数据库管理系统之间的异构性及其所依赖操作系统的异构性 严重限制了信息共享和数据交换范围 数据库技术的语义描述能力差 大多通过技术文档表示 很难实现数据语义的持久性和传递性 而数据交换和信息共享都是基于语义进行的 在异构应用数据交换时 不利于计算机基于语义自动进行正确数据的检索与应用 数据库属于高端应用 需要昂贵的价格和运行环境 而随着网络和Internet的发展 数据交换的能力已成为新的应用系统的一个重要的要求 XML的好处是数据的可交换性(portable) 同时在数据应用方面还具有如下优点 ( )XML文件为纯文本文件 不受操作系统 软件平台的限制 ( )XML具有基于Schema自描述语义的功能 容易描述数据的语义 这种描述能为计算机理解和自动处理 ( )XML不仅可以描述结构化数据 还可有效描述半结构化 甚至非结构化数据
XML文件的存储
XML文件的存储方式有三大类 ( )将文件存储于文件系统(StoringDocumentsinthe File System) ( )将文件存储于BLOB(Storing Documents in BLOBs) 利用数据库的事务管理 安全 多用户访问等优点 此外许多关系数据库提供的检索工具可以进行全文检索 近似检索 同义词检索和模糊检索 其中某些工具将会支持XML 这样就可消除将XML文件作为纯文本检索所带来的问题 ( )将文件存储于原生XML数据库(Native XML Databases NXD) NXD是专用于存储XML文件的数据库 支持事务管理 安全 多用户访问 编程API和查询语言等 与其它数据库的唯一区别在于其内部模型是基于XML的 其中 最重要的存储方式当属原生XML数据库
原生XML数据库
原生XML数据库(NativeXMLDatabases)为XML文档定义了一个(逻辑)模型 并根据该模型存取文件 这个模型至少应包括元素 属性 PCDATA和文件顺序 其例子有XPath数据模型 XMLIn foset以及DOM所用的模型和SAX 的事件 它以XML文件作为其基本存储单位 对底层的物理存储模型没有特殊要求 例如 它可以建在关系型 层次型或面向对象的数据库之上 或者使用专用的存储格式 比如索引或压缩文件
NXD最适于存储以文档为中心的文件 这是由于NXD保留了文件 顺序 处理指令 注释 CDA TA块以及实体引用等 而支持XML的数据库XED(XML enableddatabase)无法做到 XED是在原有数据库基础上扩展了XML支持模块 完成XML数据和数据库之间的格式转换和传输 从存储粒度上 可以把整个XML文档作为RDBMS表中一行 或把XML文档进行解析后 存储到相应的表格中 为了支持W C的一些XML操作标准 Xpath XED提供一些新的原语(如Oracle iR 增加了一些数据包来操作XML数据等) 并优化了XML处理模块
NXD一般采用层次数据存储模型 保持XML文档的树形结构 省掉了XML文档和传统数据库的数据转换过程 NXD还适用于存储 天然格式 为XML的文件 NXD还可以存储半结构化数据 在某种特定情形下提高存取速度以及存储没有DTD的文件(良构的文件)
原生XML数据库的结构
原生XML数据库的结构可分为两大类 基于文本的和基于模型的
基于文本的NXD(Text BasedNativeXMLDatabases)将XML作为文本存储 它可以是文件系统中的文件 关系数据库中的BLOB或特定的文件格式 基于文本的NXD与层次结构的数据库很相似 当存取预先定义好层次的数据时 它比关系数据库更胜一筹 和层次结构的数据库一样 当以其它形式比如转置层次存取数据时 NXD也会遇到麻烦 这个问题的严重程度尚未可知 很多关系数据库都使用逻辑指针 使相同复杂度的查询以相同的速度完成
基于模型的NXD(Model BasedNativeXMLDatabases)是根据文件构造一个内部模型并存储这个模型 有些数据库将该模型存储于关系型和面向对象的数据库中 例如在关系型数据库中存储DOM时 就会有元素 属性 PCDATA 实体 实体引用等表格 其他数据库使用了专为这种模型优化了的存储格式 使用专用存储格式的基于模型的NXD如果以文件的存储顺序读取文件 其性能与基于文本的NXD相似
原生XML数据库的特性
原生XML数据库的特性(FeaturesofNativeXML Databases)有 ( )文件集(Document Collections) 支持集合(Collection)的概念 其作用相当于关系数据库中的表和文件系统中的文件夹 ( )查询语言(Query Languages) 最常用的有XPath(对多个文件的查询作了扩充)和XQL 以及专有的查询语言 ( )更新和删除(Updates and Deletes) NXD对文件的更新和删除方式从简单的替换或删除现有文件 到修改当前活动的DOM树 以及用于指定如何修改文件片断的语言 ( )事务 锁定和并发(Transactions Locking and Concurrency) 支持事务处理 锁定通常是对整个文档的 所以多用户并发性相对较低 问题的大小取决于应用程序以及 文件 的构成 ( )原生数据库提供应用程序接口API(Application Programming Interfaces APIs) ( )NXD的一个重要特性是它可以为XML文档提供 往返车票(round trip) 可以将XML文件存放在NXD中 而且再取回 同样的 文件 对于以文档为中心的应用程序来说非常重要 因为CDATA部分 实体用法 注释和处理指令是这些文档不可缺少的组成部分 特别是对于法律和医学文件 按规定这些文档必须要保持原样 ( )外部数据(Remote Data) 某些NXD可包含有外部数据 它来自存储在数据库中的文档 通常这些数据通过OD BC OLE DB或JDBC从关系数据中取出 模型可以是基于表格的或对象 关系型映射 ( )支持元素和属性的索引
结论
XML技术的出现 使数据处理从文件方式到数据库系统再到文件方式的循环 但新的文件方式已经与最初的文件系统有了本质的区别 格式化文档 XML和关系数据库在数据应用和数据管理方面各有优势
lishixin/Article/program/net/201311/12776
‘贰’ C# VS2008如何编辑WinForm时如何添加用XML技术制作的数据库求解答 另外请问怎么用XML技术制作数据库
首先你要明白什么是腔胡XML,其实XML就是自己按照一定的规则去定义节点的属性。例如:我想存今天我做了什么就可以这样定义
<diary id="1" name="伍指洗头" action="">
<address id="" name="洗头的地点"></address>
<shampoo id="" name="洗发膏的牌子"></address>
.....
</diary>
这些可以根据自腔圆配己想存取的信息内容设定,当然要有规律。对于数据的处理不光能够保存,也要能够读取出来!
‘叁’ xml能设计出美观的网页么
XML就是一个数据库,不存在美观的问题,要用XSL格式化才能显示
‘肆’ xml是什么有什么作用
用
可扩展标记语言是一种元标记语言,即定义了用于定义其他特定领域有关语义的、结构化的标记语言,这些标记语言将文档分成许多部件并对这些部件加以标识。XML 文档定义方式有:文档类型定义(DTD)和XML Schema。DTD定义了文档的整体结构以及文档的语法,应用广泛并有丰富工具支持。XML Schema用于定义管理信息等更强大、更丰富的特征。XML能够更精确地声明内容,方便跨越多种平台的更有意义的搜索结果。它提供了一种描述结构数据的格式,简化了网络中数据交换和表示,使得代码、数据和表示分离,并作为数据交换的标准格式,因此它常被称为智能数据文档。
XML技术已经广泛应用于e-Learning应用系统的开发,大多数的商用e-Learning平台都支持XML标准。一些主要的网络设备制造商,如CISCO、JUNIPER等,生产的网络设备也已提供了对XML的支持,以利于今后基于XML的网络管理。
XML在e-Learning管理中的应用
一、兼容现有协议
XML文档格式的管理信息可以很容易地通过HTTP 协议传输,由于HTTP是建立在TCP之上的,故管理数据能够可靠传输。XML还支持访问XML文档的标准API,如DOM,SAX,XSLT,Xpath等。
二、统一的管理数据存取格式
XML能够以灵活有效的方式定义管理信息的结构。以XML格式存储的数据不仅有良好的内在结构,而且由于它是W3C提出的国际标准,因而受到广大软件提供商的支持,易于进行数据交流和开发。现有网络管理标准如TMN、SNMP等的管理信息库规范决定了网管数据符合层次结构和面向对象原则,这使得以XML格式存储网管数据也非常自然,易于实现。
三、不同应用系统间数据的共享和交互
只要定义一套描述各项管理数据和管理功能的XML语言,用Schema对这套语言进行规定,并且共享这些数据的系统的XML文档遵从这些Schema,那么管理数据和管理功能就可以在多个应用系统之间共享和交互。
四、底层传输的数据更具可读性
网络中传输的底层数据因协议不同而编码规则不同,虽然最终传输时都是二进制位流,但是不同的应用协议需要提供不同的转换机制。这种情况导致管理站在对采用不同协议发送管理信息的被管对象之间进行管理时很难实现兼容。如果协议在数据表示时都采用XML格式进行描述,这样网络之间传递的都是简单的字符流,可以通过相同的XML解析器进行解析,然后根据不同的XML标记,对数据的不同部分进行区分处理,使底层数据更具可读性。[3]
五、它和json都是一种数据交换格式
XML由3个部分构成,它们分别是:文档类型定义(Document Type Definition,DTD),即XML的布局语言;可扩展的样式语言(Extensible Style Language,XSL),即XML的样式表语言;以及可扩展链接语言(Extensible Link Language,XLL)。
(1)DTD
DTD规定了文档的逻辑结构。它可定义文档的语法,而文档的语法反过来也能够让XML语法分析程序确认页面标记使用的合法性。DTD定义了页面的元素、元素的属性及元素和属性间的关系。元素与元素间用起始标记和结束标记来定界,对于空元素,用一个空元素标记来分隔。每一个元素都有一个用名字标识的类型,也称为它的通用标识符,并且它还可以有一个属性说明集。每个属性说明都有一个名字和一个值。理想定义应该面向描述与应用程序相关的数据结构,而不是如何显示数据。就是说,应该把一个元素定义为一个标题行,之后让样式表和脚本定义显示标题行。
DTD不具强制性。对于简单的应用程序来说,开发商不需建立自己的DTD,可以使用预先定义的公共DTD或不使用。即使某个文档已经有DTD,只要文档组织是良好的,语法分析程序也不必对照DTD来检验文档的合法性。服务器可能己执行了检查,所以检验的时间和带宽将得以大幅度节省。
(2)XSL
XSL是用来规定XML文档样式的语言。XSL能使Web浏览器改变原有文档的表示法,例如改变数据的显示顺序,不必再与服务器进行交互通信。通过样式表的变换,同一文档可以显示得更大,或经过折叠只显示外面的一层,或者变为打印格式。
XSL凭借其本身的可扩展性,能够控制无穷无尽的标记,而且控制每个标记的方式也是无穷尽的,这也给Web提供了高级的布局特性。如文本的旋转、多列和独立区域。同时支持国际书写格式,可在一页上混合使用从左至右、从右至左及从上至下的书写格式。就如同XML介于HTML和SGML之间一样,XSL标准是介于CSS和SGMI的文档样式语义和规范语言之间的。
(3)XLL
XLL支持Web上已有的简单链接,而且将进一步扩展链接,包括终结死链接的间接链接及可从服务器中只查询某个元素的相关部分链接等。
超文本标记语言(HTML)仅仅执行历来与超文本系统概念相关的极少功能,仅支持最简单的链接形式,即指向硬编码位置的单向链接,这与XML相比有着很大的差别。在为XML所设想的真正超文本系统中,所有典型的超文本链接机制全部将得到支持,包括:与位置无关命名,双向链接,可在文档外规定和管理的链接,元超链接(如环路、多个窗口),集合链接(多来源),Transc1usion(链接目标文档是链接源文档的一部分),链接属性(链接类型)。
所有这些可通过XLL来实现。由于XML以SGML作为基础,因此,XLL基本上属于Hytime(超媒体/基于时间的结构语言,ISO10744)的一个子集,另外它还遵循文本编码所倡议规定的链接概念。
XML能方便有效地表示结构化数据,这就使得XML可以作为描述和传输数据的手段。使用XML进行数据交换已经成为计算机软件领域的标准技术模式。通过XML实现数据的标准化、结构化,解决了在不同平台、不同系统之间的数据结构/模式的差异,使得数据层在XML技术的支持下统一起来。
Web Service全部的规范,技术都是以XML为底层核心和构架基础的,对Web Service而言,SOAP、WSDL和UDDI,都是使用XML作为信息描述和交换的标准手段。XML技术的产生促使了Web Service技术的产生与发展。
‘伍’ 如何用XML实现高效管理数据
XML数据是Web上数据交换和表达的标准形式 和关系数据库相比 XML数据可以表达具有复杂结构的数据 比如树结构的数据 正因为此 在信息集成系统中 XML数据经常被用作信息转换的标准
管理三大领域数据
基于XML数据的特点 XML数据的高效管理通常有着以下的应用
复杂数据的管理
XML可以有效地表达复杂的数据 这些复杂的数据虽然利用关系数据库也可以进行管理 但是这样会带来大量的冗余 比如说文章和作者的信息 如果利用关系数据库 需要分别用关系表达文章和作者的信息 以及这两者之间的关系 这样的表达 在文章和作者关系的关系中分别需要保存文章和作者对应的ID 如果仅仅为了表达文章和作者之间的关系 这个ID是冗余信息 在XML数据中对象之间的关系可以直接用嵌套或者ID IDREF的指向来表达 此外XML数据上的查询可以表达更加复杂的语义 比如XPath可以表达比SQL更为复杂的语义 因此利用XML对复杂数据进行管理是一项有前途的应用
互联网中数据的管理
互联网上的数据与传统的事务数据库与数据仓库都不同 其特点可以表现为模式不明显 经常有缺失信息 对象结构比较复杂 因此在和互联网相关的应用 特别是对从互联网采集和获取的信息进行管理的时候 如果使用传统的关系数据库 存在着产生过多的关系 关系中存在大量的空值等问题 而XML可以用来表达半结构数据 对模式不明显 存在缺失信息和结构复杂的数据可以非常好的表达 特别在许多web系统中 XML已经是数据交换和表达的标准形式 因此XML数据的高效管理在互联网的系统中存在着重要的应用
信息集成中的数据管理
现代信息集成系统超越了传统的联邦数据库和数据集成系统 需要集成多种多样的数据源 包括关系数据库 对象 关系数据库以及网页和文本形式存在的数据 对于这样的数据进行集成 XML这样既可以表达结构数据也可以表达半结构数据的形式成为首选 而在信息集成系统中 为了提高系统的效率 需要建立一个cache 把一部分数据放到本地 在基于XML的信息集成系统中 这个cache就是一个XML数据管理系统 因此XML数据的管理在信息集成系统中也有着重要的应用
开发难点解决之道
在实际的XML数据库以及基于XML的信息集成系统的开发过程中 笔者遇到了一些技术难点 在解决这些难点的过程中 有一些经验是值得借鉴的参考的
关系数据库中复杂查询的优化
在基于关系数据库的XML数据管理系统中 在没有建立索引的情况下 系统的性能非常低 为了提高系统的性能 我们在编码上建立了索引 经过分析 由于在系统中最常做的操作是a x b y的join操作 最好的选择是建立二维索引 由于我们的后端数据库没有对二维索引的支持 我们选择了在x和y属性上分别建立B+树的方法 使得系统性能得到了提高 此外 我雀汪们发现 在对嵌套查询进行翻译的过程中 如果嵌套查询的结果可能过大 对嵌套查询的结果建立临时表可以提高系统的性能
经验总结 对于一个数据库应用 需要对其workload进行分析 根据workload建立索引 对于执行效率很慢的查询或查询集合 可以通过分析查询计划找出系统的瓶颈进行处理
复杂数据库系统的调试
在调试XML数据的管理系统中 多次出现了小规模数据执行准确 效率很高 而大规模数据执行错误或执行效率很低的情况 对于这种情况 我们采取顷尺仔了定位错误 猜测错误 继而加以解决的策略 也就是首先确定出现错误的操作 使得错误的出现具有可重复性 然后通过逐步删减数据 确定数据出现在哪些数据上 这样就使得调试设计的操作和数据的规模大大减小了 然后根据经验对错误进行猜测 逐步排除错误
经验总结 对于数据规模大 操作复杂的数据库系统的调困世试 首要任务是让错误可以重现 然后把次要因素逐步排除 最后发现问题的所在
复杂数据库系统的测试
由于系统需要处理各种各样的XML上的查询 为了确保系统的健壮性 需要选取多种具有代表性的查询对系统进行测试 为了选取这样的查询 我们考察了XML上影响查询的不同参数 包括查询的长度 查询中包含的关系种类 查询的选择性和查询中约束条件的选择性 根据这些参数 我们分别选择有代表性的查询对系统进行测试
lishixin/Article/program/net/201311/12558
‘陆’ xml数据库的简介
目前XML数据库有三种类型:
(1)XMLEnabledDatabase(XEDB),即能处理XML的数据库。其特点是在原有的数据库系统上扩充对XML数据的处理功能,使之能适应XML数据存储和查询的需要。一般的做法是在数据库系统之上增加XML映射层,这可以由数据库供应商提供,也可以由第三方厂商提供。映射层管理XML数据的存储和检索,但原始的XML元数据和结构可能会丢失,而且数据检索的结果不能保证是原始的XML形式。XEDB的基本存储单位与具体的实现紧密相关。
(2)NativeXMLDatabase(NXD),即纯XML数据库。其特点是以自然的方式处理XML数据,以XML文档作为基本的逻辑存储单位,针对XML的数据存储和查询特点专门设计适用的数据模型和处理方法。
(3)HybridXMLDatabase(HXD),即混合XML数据库。根据应用的需求,可以视其为XEDB或NXD的数据库,典型的例子是Ozone。
XML数据库是一个能够在应用中管理XML数据和文档的集合的数据库系统。XML数据库是XML文档及其部件的集合,并通过一个具有能力管理和控制这个文档集合本身及其所表示信息的系统来维护。XML数据库不仅是结构化数据和半结构化数据的存储库,像管理其它数据一样,持久的XML数据管理包括数据的独立性、集成性、访问权限、视图、完备性、冗余性、一致性以及数据恢复等。这些文档是持久的并且是可以操作的。
当前着重于页面显示格式的HTML标记语言和基于它的关键词检索等技术已经不能满足用户日益增长的信息需求。近年来的研究致力于将数据库技术应用于网上数据的管理和查询,使查询可以在更细的粒度上进行,并集成多个数据源的数据。但困难在于网上数据缺乏统一的、固定的模式,数据往往是不规则且经常变动的。因此,XML数据作为一种自描述的半结构化数据为Web的数据管理提供了新的数据模型,如果将XML标记数据放入一定的结构中,对数据的检索、分析、更新和输出就能够在更加容易管理的、系统的和较为熟悉的环境下进行,因而我们将数据库技术应用于XML数据处理领域,通过XML数据模型与数据库模型的映射来存储、提取、综合和分析XML文档的内容。这为数据库研究开拓了一个新的方向,将数据库技术的研究扩展到对Web数据的管理。
‘柒’ 如何进行数据库的设计
数据库设计(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) 检查设计
在开发期间检查数据库设计的常用技术是通过其所支持的应用程序原型检查数据库。换句话说,针对每一种最终表达数据的原型应用,保证你检查了数据模型并且查看如何取出数据。
‘捌’ XML与关系数据库的关系
数据库技术及其应用系统经历了从层次数据库、网状数据库到关系数据库以及面向对象数据库的发展,在传统的商业和事务处理领域内逐步成熟,取代了原有的基于文件系统的数据处理方式,成为计算机信息系统中的重要基础和支柱。但随着Internet的飞速发展,Web的出现改变了人们习惯的处理方式,也给数据库技术提出了必须面对的重要问题:即如何有效地存储和管理Web上的数据(文档),使其既能被高效地操作和维护,又能在Internet平台上方便地表示和交换。
XML技术自出现以来发展非常迅速,在许多领域内得到广泛的支持而有着广阔的应用前景。例如电子数据交换、电子商务等更是将XML作为一种基础性、支柱性的技术来看待。
1、数据库简史
数据库系统是随着计算机技术的不断发展,在特定的历史时期、特定的需求环境下出现的。在1946年的第一台计算机到20世纪60年代这漫长的20年里,计算机操作系统主要局限于文件的操作,对数据的管理也主要是通过文件系统来实现。进行计算所需要的各种数据存放在各自的文件里,使用这些数据时将文件打开,读取文件中的数据到内存中,当计算完毕后,将计算结果仍旧写入到文件中去,它的不足主要集中在无法对数据进行有效的统一管理。针对文件系统的重要缺点,人们逐步发展了以统一管理数据和共享数据为主要特征的系统,即数据库系统。1964年,美国通用电气公司开发成功了世界上的第一个数据库系统IDS(IntegratedDataStore)。IDS奠定了网状数据库的基础,并得到了广泛的发行和应用,成为数据库系统发展史上的一座丰碑。1969年,美国国际商用机器公司(IBM)也推出世界上第一个层次数据库系统IMS(InformationManagement System),同样在数据库系统发展史上占有重要的地位。
70年代初,E.F.Codd在总结前面的层次、网状数据库优缺点的基础上,提出了关系数据模型的概念及关系代数和关系演算。在70年代,关系数据库系统无论从理论上还是实践上都取得了丰硕的成果。在理论上确立了完整的关系模型理论、数据依赖理论和关系数据库的设计理论;在实践上,世界上出现了很多着名的关系数据库系统,比较着名的如SystemR、INGRES、Oracle等。
与文件系统相比,数据库系统有几个方面的特点:向用户提供高级的接口;向用户提供非过程化的数据库语言(即SQL语言);查询的处理和优化;并发控制;数据的完整性约束。
进入80年代之后,计算机硬件技术的飞速提高促使计算机应用不断深入,产生了许多新的应用领域,例如计算机辅助设计、计算机辅助制造、计算机辅助教学、办公自动化、智能信息处理、决策支持等。这些新的领域对数据库系统提出了新的要求。但由于应用的多元化,不能设计出一个统一的数据模型来表示这些新型的数据及其相互关系,因而出现了百家争鸣的局面,产生了演绎数据库、面向对象数据库、分布式数据库、工程数据库、时态数据库、模糊数据库等新型数据库的研究和应用。
2、XML简介
XML推荐标准1.0版发布于1998年2月,之后迅速在全球掀起了XML应用的浪潮。XML是一种描述型的标记语言,与HTML同为SGML(标准通用标记语言,ISO-8879国际标准)的一种应用。由于XML在可扩展性、可移植性和结构性等方面的突出优点,它的应用范围突破了HTML所达到的范围。
一篇XML文档由标记和内容组成。XML中有六种标记:元素(elements)、属性(attributes)、实体引用(entityreferences)、注释(comments)、处理指令(processinginstructions)和CDATA段(CDATAsections)。XML与HTML最显着的不同是XML文档中引入了“文档类型声明”(Document Type Declarations)。DTD使文档可以与分析器交流关于它的内容的元信息。DTD的出现,赋予了XML文档可扩展性、结构性和可验证性,使XML具备了类似于数据库的一些性质,可以利用XML来组织和管理信息;又可以与HTML一样在浏览器中方便地表示,在Internet上高效地传递和交换。考虑到与HTML的兼容,DTD并不是XML文档必需的成份。具有DTD的XML文档称作“Valid”,否则就是“Well-formed”。
目前,处理XML文档的方式主要有SAX与DOM两种。SAX(SimpleAPIforXML)是一种基于流的、以事件处理方式工作的接口。SAX 2.0在2000年5月发布,增强了许多功能,包括对名字空间的支持。DOM(Document Object Model)则是在对XML文档进行分析后,在内存中建立起一个完整的树结构,然后在此基础上进行各种操作。简单地比较来看,SAX对系统资源要求低、速度快,但对文档的操作是只读的;DOM的处理能力强大,但要求大量的系统资源,尤其是对于大的文档。而后还出现了Xpath和Xpointer用以完成XML的搜索和转换;XSL、XSLT和SOAP用以完成XML的远程对象访问,XML Query Languages的出现使XML查询语言可用于任何XML文档。
3、XML与数据库
XML文件是数据的集合,它是自描述的、可交换的,能够以树型或图形结构描述数据。XML提供了许多数据库所具备的工具:存储(XML文档)、模式(DTD,XMLschema,RE1AXNG等)、查询语言(XQuery,XPath,XQL,XML-QL,QUILT等)、编程接口(SAX,DOM,JDOM)等。但XML并不能完全替代数据库技术。XML缺少作为实用的数据库所应具备的特性:高效的存储、索引和数据修改机制;严格的数据安全控制;完整的事务和数据一致性控制;多用户访问机制;触发器、完善的并发控制等。因此,尽管在数据量小、用户少和性能要求不太高的环境下,可以将XML文档用作数据库,但却不适用于用户量大、数据集成度高以及性能要求高的作业环境。
随着Web技术的不断发展,信息共享和数据交换的范围不断扩大,传统的关系数据库也面临着挑战。数据库技术的应用是建立在数据库管理系统基础上的,各数据库管理系统之间的异构性及其所依赖操作系统的异构性,严重限制了信息共享和数据交换范围;数据库技术的语义描述能力差,大多通过技术文档表示,很难实现数据语义的持久性和传递性,而数据交换和信息共享都是基于语义进行的,在异构应用数据交换时,不利于计算机基于语义自动进行正确数据的检索与应用;数据库属于高端应用,需要昂贵的价格和运行环境。而随着网络和Internet的发展,数据交换的能力已成为新的应用系统的一个重要的要求。XML的好处是数据的可交换性(portable),同时在数据应用方面还具有如下优点:(1)XML文件为纯文本文件,不受操作系统、软件平台的限制;(2)XML具有基于Schema自描述语义的功能,容易描述数据的语义,这种描述能为计算机理解和自动处理;(3)XML不仅可以描述结构化数据,还可有效描述半结构化,甚至非结构化数据。
4、XML文件的存储
XML文件的存储方式有三大类:(1)将文件存储于文件系统(StoringDocumentsinthe File System);(2)将文件存储于BLOB(Storing Documents in BLOBs),利用数据库的事务管理、安全、多用户访问等优点。此外许多关系数据库提供的检索工具可以进行全文检索、近似检索、同义词检索和模糊检索。其中某些工具将会支持XML,这样就可消除将XML文件作为纯文本检索所带来的问题。(3)将文件存储于原生XML数据库(Native XML Databases,NXD)。NXD是专用于存储XML文件的数据库,支持事务管理、安全、多用户访问、编程API和查询语言等。与其它数据库的唯一区别在于其内部模型是基于XML的。其中,最重要的存储方式当属原生XML数据库。
4.1原生XML数据库
原生XML数据库(NativeXMLDatabases)为XML文档定义了一个(逻辑)模型,并根据该模型存取文件。这个模型至少应包括元素、属性、PCDATA和文件顺序。其例子有XPath数据模型、XMLIn-foset以及DOM所用的模型和SAX 1.0的事件。它以XML文件作为其基本存储单位,对底层的物理存储模型没有特殊要求。例如,它可以建在关系型、层次型或面向对象的数据库之上,或者使用专用的存储格式,比如索引或压缩文件。
NXD最适于存储以文档为中心的文件。这是由于NXD保留了文件、顺序、处理指令、注释、CDA-TA块以及实体引用等,而支持XML的数据库XED(XML-enableddatabase)无法做到。XED是在原有数据库基础上扩展了XML支持模块,完成XML数据和数据库之间的格式转换和传输。从存储粒度上,可以把整个XML文档作为RDBMS表中一行,或把XML文档进行解析后,存储到相应的表格中。为了支持W3C的一些XML操作标准,Xpath、XED提供一些新的原语(如Oracle9iR2增加了一些数据包来操作XML数据等),并优化了XML处理模块.
‘玖’ 怎样创建一个简单的XML数据库用什么软件最好是有程序~~急救~~
微软的 access