技术开发 频道

使用DB2 pureXML实现动态模型定制


如何使用 XML 描述数据模型

    在传统意义上,数据模型即为数据库的表结构,系统设计师要考虑业务逻辑,然后利用数据库理论将业务逻辑抽象出来,拆分为若干数据表;越是复杂的业务逻辑,抽象出来的数据表以及之间的关联关系也越复杂,千丝万缕的关联关系给数据库设计和维护都带来了麻烦。而特别地,当复杂的数据模型处于容易发生变化的场景下,更是给数据建模工作带来了极大的挑战。

    DB2 pureXML 考虑到了这种复杂性,在数据库层面对 XML 提供了更强有力的支持。从而减轻数据建模的复杂度。

    XML 作为自我描述的可扩展标记语言,无疑是用来描述数据模型的首选载体。首先 XML 文档内部即为可无穷嵌套的元素,可用以满足复杂逻辑结构的构建;且 XML 规范为 XML 元素提供了丰富的数据类型,可以满足普通数据模型的类型需求; XML 元素本身在文档中就是按照顺序排列的,这种特性则满足了数据模型对于数据元素之间逻辑顺序的要求。

    用来描述 XML 逻辑结构的 XML Schema 则成为了描述数据模型的非常好的选择。除了定义数据元素,数据元素的数据类型,数据元素的顺序关系之外,XML Schema 同时提供了更加丰富的限制约束,允许定义元素的枚举范围,数值元素的小数位数,总位数,最大值,最小值等,对于特殊需求,还可以用正则表达式定义字符元素的模式。

    依照前面举的病例的例子,下面的 XML 文档片段可用于描述该病例模型:

清单 1. 用于描述病例模型的 XML

<?xml version="1.0" encoding="UTF-8"?> <病例> <病史> <现病史 /> <过去史 /> <个人史 /> </病史> <主诉 /> <体格检查> <头部检查 /> <胸部检查 /> <腹部检查 /> </体格检查> </病例>

    可见,使用 XML 可以很自然清晰的表达模型的内容,以及互相之间的结构关系。不管模型包含多少内容,结构如何复杂,通过 XML 都可以轻松的描述。

    另一方面,XML 的结构可以使用 XML Schema 来描述,包括如上所述的模型内容,模型结构,还可以定义各个模型的数据类型,例如数值型,字符型,时间日期型等。给模型定义者充分的自由度。

    下面给出描述上述模型结构的 XML Schema 片段:

清单 2. 病例模型 XML Schema 片段

<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com/NewXMLSchema" xmlns:tns="http://www.ibm.com/NewXMLSchema" elementFormDefault="qualified"> <element name="病例"> <complexType> <sequence> <element name="病史"> <complexType> <sequence> <element name="现病史" type="string"></element> <element name="过去史" type="string"></element> <element name="个人史" type="string"></element> </sequence> </complexType> </element> <element name="主诉" type="string"></element> <element name="体格检查"> <complexType> <sequence> <element name="头部检查" type="string"></element> <element name="胸部检查" type="string"></element> <element name="腹部检查" type="string"></element> <element name="颈部检查" type="string"></element> </sequence> </complexType> </element> </sequence> </complexType> </element> </schema>

 

0
相关文章