资源描述
学士学位毕业论文
目 录
摘要 1
1 概述 2
1.1 引言 2
1.2 XML简介 2
1.2.1 XML概述 2
1.2.2 XML优点 3
1.2.3 为何要把关系数据转化为XML文档 3
1.2.4 XML和数据库 3
2 转化技术简介 4
2.1 目前存在的转化技术 4
2.1.1 XML视图 4
2.1.2 FOR XML statement 6
2.2 本文转化方法简介 9
2.2.1 映射策略 9
2.2.2 标记化和结构化策略 10
2.2.3 转化的基本思想 10
2.3 各种转化技术的比较 11
3转化系统的设计 12
3.1 功能划分 12
3.2 总体功能图 12
3.3 样本数据库模式 13
4 实现的关键难点 13
4.1 系统初始化 13
4.2 自定义结果XML文档模式 17
4.3 生成SQL查询语句 19
4.4 将查询出的记录集转化成XML文档 25
5 界面介绍 30
5.1 自定义XML文档模式界面 30
5.2 设置查询条件界面 30
5.3 生成XML文档界面 31
6 总结 32
7 致谢 32
参考文献 32
将关系数据库数据转化为XML文档
【摘要】
在网络上,XML作为一种交换商务数据的标准越来越流行。在我们可预见的未来,大部分的商务数据仍将继续存储在关系数据库中。所以将关系数据转化成XML文档是十分必要和有意义的。本文主要介绍将对关系数据库查询后的关系数据,根据用户自定义的模式,转化成XML文档。其中的主要技术有以下几点:将一个关系数据库的模式转化成虚拟的XML文档模式,为用户自定义模式提供参考;根据自定义模式和用户设置的查询条件生成相应的SQL查询语句,对关系数据库查询;将查询后的结果通过算法转化成XML文档。
【关键字】
XML, for XML statement, XDR Schema, IIS, 虚拟目录.
Publishing Relational Data As XML Documents
【Abstract】
XML is becoming more and more popular as a standard for exchange business data on the world wide web. For the foreseeable future, however, most business data will continue to be stored in relational database systems. So it is necessary and significant to publish relational data as XML documents. The thesis mainly introduces one technique referring to publishing relational data queried from relation database as XML documents, according to user-defined schema. There are several technologies involved: changing a relational schema to a virtual XML document schema, in order to provide a reference to users when they define their schemas; creating SQL query statement corresponding to user-defined schema and query conditions; publishing relational data after executing above SQL statement as XML document by a algorithm.
【Keywords】
XML, for XML statement, XDR Schema, IIS, virtual directory.
1 概述
1.1 引言
众所周知,虽然Internet的发展不过十年,但它对我们工作、学习、生活的方方面面却产生了深远的影响。一时间,电子商务、网上出版、网络通信,许许多多的新名词如潮水般涌来。在这个网络大潮之下,XML,这一以第二代网页发布语言而著称的新标准,凭借着它的勃勃生机与强大优势,为网络应用注入了新的活力。一年前的今天,或许还有很多人对“XML”这个名词感到陌生;但一年后的今天,如果谁还不懂XML,那么很可能他就已经在网上弄潮儿的行列中落伍了。
XML为开发者提供了一个途径来创建他们自己的格式,将这些格式用于文档和数据时,使得它们组织严密而且标签清晰;同时这种格式使得应用开发者们无论是否在网页上进行开发,使用XML来存储各种不同的信息都将变得十分方便。XML最初起源于文档处理,但它现在更多应用于数据交换。XML最简单的应用是作为一个在两个不同系统之间的交换格式。XML可以当作几乎所有基于文本的信息的容器,简化了把信息从一个应用程序传送到另一个应用程序的任务。
凭借着自身的特点和优势,现在XML作为一种在网络上交换商业数据的标准运用得越来越广泛。而大部分的商业数据在我们可以预计的未来一段时间内将仍然存储在关系数据库中。因此,将关系数据库中的数据转化成XML文档具有十分重要的实际应用价值。本文将对这一转化技术进行探讨。
1.2 XML简介
1.2.1 XML概述
XML[6]是eXtensible Markup Language的缩写,意为可扩展的标记语言。XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它不像超文本标记语言HTML(Hypertext Markup Language)或是格式化的程序。这些语言定义了一套固定的标记,用来描述一定数目的元素。XML是一种元标记语言,用户可以定义自己需要的标记。这些标记必须根据某些通用的原理来创建,XML标记描述的是文档的结构和意义,而不描述页面元素的格式化。可用样式单为文档增加格式化信息。文档本身只说明文档包括什么标记,而不是说明文档看起来是什么样的。
1.2.2 XML优点
⑴ XML遵循严格的语法要求。如果语法有丝毫差错,分析器都会停止对它的进一步处理,相应地,除了错误提示外,你看不到任何的显示信息。
⑵ XML允许各种不同的专业(如音乐、化学、数学等)开发与自己的特定领域有关的标记语言。
⑶ XML的最大能量来源于它不仅允许你定义自己的一套标记,而且这些标记不必仅限于对于显示格式的描述。XML允许你根据各种不同的规则来制定标记,比如根据商业规则,根据数据描述甚至根据数据关系来制定标记。
⑷ 由于XML是非专有的并易于阅读和编写,就使得它成为在不同的应用间交换数据的理想格式。
⑸ 由于标记是有含义的,所以即使过了很长时间用户仍然可以很容易的理解XML文档。
⑹ XML是基于W3C定制的开放标准,从而使得基于XML的应用具有广泛性。
⑺ 在因特网上如果Web页是XML格式的,则搜索会更高效,而且不仅可以搜索数据,还可以在搜索中加入与数据相关的上下文信息,这样就形成了更精确的搜索机制。
1.2.3 为何要把关系数据转化为XML文档
显然通过直接交换关系数据库中的表来实现在网络或者不同系统间的信息交换是不方便,也是不可行的。而综上所述XML具有如此多的优点,如果将对关系数据库查询的结果转化成XML 文档,就可以很方便的通过网络传送信息了。通过把XML作为交换和存储的数据格式,因特网上的业务到业务型的电子商务就变得容易进行。只要某一行业关于一种特定的XML格式达成协议,该行业的商家就不必再为把文件由一种格式转化到另一种格式而烦恼。最终,把数据和文档转化到XML后,在因特网上进行商务活动的顾客和商家都直接从中受益。所以将关系数据转化成XML文档具有重要的意义。
1.2.4 XML和数据库
数据存储是描述任何用来存储数据的存储介质的术语。数据存储可以是结构化的文本文件、XML文档、关系数据库表,或者,甚至可以是某种专用的二进制格式[4]。
⑴ 数据库和XML的共同点:两者都提供了构造和存储信息的方法。关系数据库以记录和字段的形式存储信息,而且,它的特点在于字段或记录之间的顺序和关系并不需要一定有意义。同样,可以用构造XML文档的方法来存储信息,其存储方式与数据库相似。也就是说,可以构造XML文档来模拟关系数据库。
⑵ 数据库和XML的不同点: XML文档是层次结构的,而关系数据库是平坦的表结构。
⑶ 对两者的选择:如果存储的数据是用来提供大量的信息子集,并且对检索速度要求比较高,最好采用数据库来存储数据。而如果数据形式很复杂,或者数据在位置或顺序上与其他数据相关,那么最好是以XML的形式存储数据。
由于上面所讲的用数据库和XML来存储数据的优劣,就决定有时候需要使用XML作为存储数据的方式,有时候需要使用XML作为存储数据的方式,而有时就需要结合数据库和XML。事实上,XML和数据库在一起工作时,它们结合的紧密程度是非常令人满意的,而大多数应用就是结合了二者各自的优势。
2 转化技术简介
2.1 目前存在的转化技术
2.1.1 XML视图
⑴ XDR纲要(XML-Data Reduced Schema) [1]
可以用XDR纲要来创建关系数据库的XML视图,并且可以用XPath来对视图进行查询,以XML文档的形式返回查询结果。这类似于使用 CREATE VIEW 语句创建视图并指定对视图的 SQL 查询。一个纲要不仅描述了一个XML文档的结构,而且也为XML文档定义了不同的限制。当您声明XPath查询并应用在纲要上的时候,返回XML文档的结构是由纲要所定义的。在一个XDR 纲要中,<Schema>元素包含了整个的纲要,您可以用属性的方式在<Schema>元素中为纲要命名并且定义该纲要所在的名字空间。在XDR语言之中,所有的元素声明都必须包含在<Schema>内。一个最简单的XDR纲要如下所示:
<?xml version=”1.0” ?>
<Schema xmlns=”urn:schemas-microsoft-com:xml-data”>
……
</Schema>
<Schema>元素使用urn:schemas-microsoft-com:xml-data名字空间。
对关系数据库而言,将XDR纲要对应到关系数据是很有用的,可以给XDR纲要加注释,加注释的XDR纲要包含如何将XML数据对应到关系数据的所有相关信息。在一个XDR纲要中,所有的注释声明都使用urn:schemas-microsoft- com:xml-sql名字空间。数据类型声明使用urn:schemas-microsoft-com:datatypes名字空间。
⑵ 虚拟目录管理
虚拟目录指的是一个在IIS(Internet Information Server)的WWW根目录下的一个目录,如果要通过IE 5.X浏览器以XML的形式存取关系数据库中的数据,首先必须为数据库创建一个虚拟目录。
在SQL Server 2000中,通过“在IIS中配置SQL XML支持”来创建虚拟目录。具体步骤这里不作详细介绍。本文中用到的虚拟目录名称是“hlserver”,主机名为“huangli”。
⑶ 转化方法简介
设置IIS,创建虚拟目录,用XDR纲要新建一个自定义的XML视图,对这个视图写一个XPath查询,该查询可以直接写在IE浏览器的地址栏URL (Uniform Resource Locator)中,也可以将其作为一个模板文件的形式放在虚拟目录对应的文件夹下(如:template)。直接利用IE浏览器就可以查询得到按纲要定义的结果XML文档。另外还可以在URL中直接声明SQL查询。
⑷ 一个简单的例子
这个例子中用到的city表和distributors表如图3所示。
纲要为:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="distributors" sql:relation="distributors">
<AttributorType name="distri_num"/>
<AttributorType name="company"/>
<attribute type="distri_num"/>
<attribute type="company"/>
<element type="order">
<sql:relationship key-relation="distributors" key="distri_num"
foreign-relation="orders" foreign-key="distri_num"/>
</element>
</ElementType>
<ElementType name="order" sql:relation="orders">
<AttributeType name="order_num"/>
<AttributeType name="order_date"/>
<AttributeType name="paid_date"/>
<attribute type="order_num"/>
<attribute type="order_date"/>
<attribute type="paid_date"/>
</ElementType>
</Schema>
将这个纲要存储在前面所讲的template文件夹下,文件名为1.xml,再在这个文件夹下新建下面的文件,文件名为2.xml。
<Root xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:xpath-query mapping-schema="1.xml">
/distributors
</sql:xpath-query>
</Root>
在URL中执行上面的模板,即在URL中输入http://huangli/hlserver/template /2.xml,就可以得到如图1所示的结果。
图1 使用IIS得到的结果XML文件
2.1.2 FOR XML statement
用SQL Server提供的FOR XML statement的机制也可以直接将执行SQL查询得到的结果集合用XML文档的形式表示出来。这种FOR XML机制有三种模式(MODE):FOR XML RAW、FOR XML AUTO和FOR XML EXPLICIT。这三种模式可以生成不同“结构化程度”的XML文档。
⑴ RAW 模式
将查询结果集合中的每一行转化为带有标记row的 XML元素。非 NULL 的任何字段值均被映射为元素row的属性,该元素中的属性名与字段名相同。
下面举一个简单的例子,例子中的orders表和distributors表如图3所示,其SQL语句为:
SELECT d.distri_num,pany,o.order_num
FROM orders o,distributors d
WHERE d.distri_num=o.distri_num
ORDER BY d.distri_num,o.order_num
FOR XML RAW
对应的结果为:
<row distri_num="1001" company="贝特计算机" order_num="102"/>
<row distri_num="1004" company="志欣信息" order_num="101"/>
<row distri_num="1004" company="志欣信息" order_num="103"/>
……
<row distri_num="1021" company="南阳实业" order_num="118"/>
⑵ AUTO 模式
将查询结果作为嵌套的XML元素返回。每个在 SELECT 子句中被涉及的表都被表示为一个XML元素,元素标记名为表名。SELECT 子句中出现的列被映射为对应的表元素中的属性,属性名为列名。当指定了 ELEMENTS 选项后,在SELECT子句中出现的字段被映射为子元素而非属性。默认情况下,AUTO 模式将表中的字段映射为XML属性。下面举一个简单的例子,例子中的orders表和 distributors表如图3所示,其SQL语句为:
SELECT distributors.distri_num,pany,orders.order_num
FROM orders,distributors
WHERE orders.distri_num=distributors.distri_num
ORDER BY distributors.distri_num,orders.order_num
FOR XML AUTO
对应的结果为:
<distributors distri_num="1001" company="贝特计算机">
<orders order_num="102"/>
</distributors>
<distributors distri_num="1004" company="志欣信息">
<orders order_num="101"/>
<orders order_num="103"/>
<orders order_num="111"/>
<orders order_num="113"/>
</distributors>
……
<distributors distri_num="1021" company="南阳实业">
<orders order_num="118"/>
</distributors>
注意:XML文档元素的嵌套关系由select子句中表名出现的先后顺序决定。若将上面的SQL 语句改为:
SELECT orders.order_num,distributors.distri_num,pany
FROM orders,distributors
WHERE orders.distri_num=distributors.distri_num
ORDER BY distributors.distri_num,orders.order_num
FOR XML AUTO
则对应的结果就变为:
<orders order_num="102">
<distributors distri_num="1001" company="贝特计算机"/>
</orders>
<orders order_num="101">
<distributors distri_num="1004" company="志欣信息"/>
</orders>
<orders order_num="103">
<distributors distri_num="1004" company="志欣信息"/>
</orders>
……
<orders order_num="118">
<distributors distri_num="1021" company="南阳实业"/>
</orders>
⑶ EXPLICIT 模式
将查询执行所得到的记录集转换为XML 文档。为使EXPLICIT 模式能够生成 XML 文档,记录集必须具有特定的格式。这需要以某种方式编写SELECT 查询语句以生成具有特定格式的记录集(称为通用表),再对该记录集进行处理以生成结果XML文档。这种模式功能最强大,可以生成相对前两种模式更复杂的XML文档。在SELECT语句中可以定义结果XML文档的模式,如:有哪些元素,这些元素有哪些属性等。下面举一个简单的例子,例子中的orders表和distributors表如图3所示,其SQL语句为:
SELECT 1 AS TAG,
NULL AS PARENT,
distributors.distri_num AS [distributor!1!distri_num],
pany AS [distributor!1!company!element],
NULL AS [order!2!order_num]
FROM distributors
UNION ALL
SELECT 2,
1,
distributors.distri_num,
pany,
orders.order_num
FROM distributors,orders
WHERE distributors.distri_num=orders.distri_num
ORDER BY [distributor!1!distri_num],[order!2!order_num]
FOR XML EXPLICIT
对应的通用表如表1所示:
表1 通用表
TAG
PARENT
distributor!1!distri_num
distributor!1!company!
element
order!2!
order_num
1 NULL 1001 贝特计算机 NULL
NULL
1001
贝特计算机
NULL
2 1 1001 贝特计算机 102
1
1001
贝特计算机
102
1 NULL 1002 迅美科技 NULL
NULL
1002
迅美科技
NULL
……
……
……
……
……
1 NULL 1026 明湖科技 NULL
NULL
1026
明湖科技
NULL
1 NULL 1027 长甫企业 NULL
NULL
1027
长甫企业
NULL
对应的结果为:
<distributor distri_num="1001">
<company>贝特计算机</company>
<order order_num="102"/>
</distributor>
<distributor distri_num="1002">
<company>迅美科技</company>
</distributor>
<distributor distri_num="1003">
<company>亚都计算机</company>
</distributor>
……
<distributor distri_num="1027">
<company>长甫企业</company>
</distributor>
2.2 本文转化方法简介
2.2.1 映射策略
把数据库模式映射为XML视图时,存在两种基本策略[5]:
· 把完整的数据库映射为一个XML文档。
· 把查询的结果集映射为一个XML文档。
⑴ 完整模式
当把数据库模式映射到XML视图时,每个用户都映射为由数据库实例的SID所标识的顶层元素的子元素。代表用户模式的元素及其子元素使用唯一的名字空间,以避免与其他用户模式中定义的模式对象冲突。
⑵ 结果模式
查询的结果集也可以映射到XML文档,这与把数据库映射到XML文档类似。查询的结果是记录集合,你可以自定义XML模式来指定XML文档的结构等。
本文是采用将这两种策略结合的方法。先由系统提供一个XML视图,在此基础上,用户定义一个结果XML文档模式,并设置查询条件,然后自动产生查询语句并执行这个查询语句,最后查询得到的结果集将按照定义的结果XML文档模式生成结果XML文档。
2.2.2 标记化和结构化策略
一个XML文档是由一系列嵌套的元素节点构成的,并且只有一个元素根节点。每一个元素节点都有一个标记,元素节点可以有属性,并且元素节点的内容可以是文本或子元素。在将关系数据转化成XML文档时,我们需要注意关系数据库表中的数据和XML文档的主要区别:XML文档有标记和嵌套结构。因此将关系数据转化成XML文档的过程中就存在何时对数据进行标记化和结构化的问题。标记化和结构化都存在两种时机:在查询过程晚期或者初期。因此共有四种标记化和结构化的方法:Late-tagging and Late-structuring,Early-tagging and Early-structuring,Late-tagging and Early-structuring,Early-tagging and Late- structuring。并且标记化和结构化既可以在数据库内部完成(inside the engine),也可以在数据库外部完成(outside the engine),显然在数据库内部完成这些操作比在数据库外部完成效率要高[3]。因为如果在数据库内部完成标记化和结构化,就需要一个对我们开放的数据库,而实际上由于条件有限,我们无法获得这样的数据库,所以本文讨论的转化采用的方法是Late-tagging and Late-structuring,并且是outside the engine。
2.2.3 转化的基本思想
为了使得这个转化更具有通用性,系统有一些初始化文件。这些初始化文件本来应该由系统自动产生,但是由于时间有限,没有实现这个功能。这里只能暂时手工编写这些初始化文件。它们主要是针对用户的数据库模式编写的。根据调入的初始化文件,系统生成一个XML视图。在此基础上,用户可以定义想要的结果XML文档模式,并设置查询条件;然后系统根据用户定义的结果XML文档模式和查询条件自动生成SQL语句;最后执行该查询语句,并将查询结果按照用户自定义的结果XML文档模式转化成结果XML文档(转化过程中仅需对查询结果集进行一次扫描)。
2.3 各种转化技术的比较
⑴ XML视图的优缺点
优点:
Microsoft® SQL Server™ 2000 及其组件(如 Analysis Services 和English Query)与 Microsoft IIS一起使用时,提供很多方法在Web上查询和更新数据。SQL Server 2000 引入了对XML 功能的支持,可以通过HTTP 连接,使用XML、简化 XML-Data (XDR) 架构和XPath查询存储、检索和更新信息。这就不需要再专门编写转化程序。
缺点:
① 在URL中可以声明SQL查询,也可以声明一个模板,但在URL上编写SQL查询是很麻烦的事,所以可以将模板写入一个文件,而且在URL中声明一个模板文件,使用模板文件可以增加系统的安全性。
② 用这种方法直接使用HTTP存取关系数据库(这里用的数据库是SQL Server 2000)的数据时,特别是在将XPath查询应用于XDR纲要时,用户需要知道XPath的基本用法。
⑵ SQL Server中提供的FOR XML Statement机制的优缺点
优点:
用FOR XML RAW和FOR XML AUTO模式的时候,编写SQL查询语句很简单,只要在一般的SQL查询语句加上FOR XML RAW或者FOR XML AUTO就可以。
缺点:
① 用FOR XML EXPLICIT模式可以生成结构比较复杂的XML文档,但是用这种模式需要按照规定的方式编写SQL查询语句,而且这种编写方式也比较复杂。
② 虽然用RAW和AUTO模式简单,但是用这两种模式只能生成结构很简单的XML文档。
③ 虽然用FOR XML方法可以直接从数据库中通过查询获得XML文档,但是由这种方式获得XML文档的结构不能过于复杂。例如:对两个层次的节点元素,若下一层节点元素与上层元素处于两个表中,且这两个表有主外键关系,当上层元素所在表引用下层元素所在表的主键时,用FOR XML方法很难得到想要的结果;而当上下层元素所在表没有直接关系时,也很难直接生成定义的结构等,这些都是FOR XML机制存在的缺陷。
⑶ 本文转化方法的优缺点
优点:
① 给用户提供了一个简单的操作界面。
② 方便用户,用户不需要熟练掌握以上现存的技术就可以很容易达到目的。
③ 克服了现有转化技术的一些不足。
缺点:
由于在调入数据库模式这一部分上做得还不够自动化,无论对什么数据库都需要按特定得格式编写一些初始化文件,这比较麻烦,仍然需要改进。
3转化系统的设计
3.1 功能划分
本文转化方法从功能上主要可以分为四个部分。
⑴ 根据数据库模式产生XML视图:系统根据初始化文件完成这个过程。
⑵ 用户自定义结果XML文档模式:基于XML视图,用户定义想要的结果XML文档模式。
⑶ 设置查询条件:向用户提供一个设置查询条件界面,用户可以直接选择要设置的查询条件,查询条件之间可以是“与”、“或”关系。
⑷ 生成结果XML文档:根据用户自定义的结果XML文档模式和查询条件产生查询语句,再执行该查询语句,最后将查询结果按照用户定义的结果XML文档模式生成结果XML文档,并显示生成该文档所花费的时间。
将关系数据转化成XML文档
根据数据库模式生成XML视图
设置查询条件
转化成XML文档
用户定义结果XML文档模式
自动生成查询语句
将查询结果转化成结果XML文档
3.2 总体功能图
图2 总体功能图
3.3 样本数据库模式
在这个转化程序中使用的样本数据库反映的是一家电脑公司的经销状况,其中包括六张表,它们分别是:经销商表(distributors)、定单表(orders)、订单项目表(items)、产品表(products)、供应商表(suppliers)和经销商所在城市表(city)。在这些表中,经销商表的主键是经销商编号(distri_num),订单表的主键是订单编号(order_num),订单项目表的主键是订单编号(order_num)和项目编号(item_num),产品表的主键是产品编号(prod_num)和供应商代码(supp_code),供应商表的主键是供应商代码(supp_code),经销商表所在城市表的主键是城市代码(city_code)。其中订单表中的字段经销商编号(distri_num)引用了经销商表的主键经销商编号(distri_num),订单项目表中的字段订单编号(order_num) 引用了订单表的主键订单编号(order_num),订单项目表中的字段产品编号(prod_num)和供应商代码(supp_code)引用了产品表的主键产品编号(prod_num)和供应商代码(supp_code),经销商表中的字段城市代码(city_code) 引用了经销商表所在城市表的主键城市代码(city_code),产品表中的字段供应商代码(supp_code)引用了供应商表的主键供应商代码(supp_code)。具体的数据库模式如图3所示。
图3 样本数据库模式
4 实现的关键难点
4.1 系统初始化
⑴ 系统初始化文件(都是文本文件)
这些初始化文件本来是要由系统自动产生的,但由于时间的关系,这一部分功能尚未完成,为了代替这个功能,这里只能暂时手工编写这些初始化文件。
下面介绍这些初始化文件的结构:
① 表示整体数据库模式的文件(structure.txt)。XML视图就是通过这个文件调入程序的。文件中每行表示初始XML视图中的一个元素节点,中括号中给出元素节点在视图中的层次号,中括号后是元素名称,元素名称后是由小括号构成的,其中注明元素名称是表中的字段名称,还是单纯的元素名称,即它不对应表中的任何字段。若它是表中的字段就还要写出该字段所在的那些表的表名。例如:[1]distributor(elementname)表示该元素名称是distributor,处于视图第一层,不对应数据库表中的任何字段;而[2]distri_num(field,distributors|orders)表示该元素名称是distri_num,处于第二层,是表中的字段,它存在于distributors和orders表中。并且一个元素的子元素一定要紧接在它的后面。下面就举一个简单的例子:
[1]distributors(elementname)
[2]distributor(elementname)
[3]distri_num(field,distributors|orders)
[3]boss_name(field,distributors)
[3]company(field,distributors)
……
[7]quantity(field,items)
[7]total_price(field,items)
这就是样本数据库大概的总体“结构”。
② 表文件。数据库中每个表都要对应一个以表名为文件名的文本文件,文件中记录了表中的字段名以及对应的
展开阅读全文