高级数据库设计与应用 05 - XML数据库建模

一、实验目的

  1. 本实验关键之处在于,要求训练并掌握书写数据库设计文档的能力, 并且能利用学过的XML数据库进行模式的创建,实现学而致用的习惯。
  2. 同时,也要求梳理实验中所涉及到的实验重点和难点知识,即:XML数据库模式的设计和XML结构体系,要求在把数据存储形式转变为XML形式后,形成自己的关于XML数据库模式设计和创建的相关知识体系。

二、实验内容

实验背景导入:

某公司接到一个网购系统的项目,任命你做该任务的数据库设计师,对网购系统进行数据库整体的设计。Webshop就是一个B2C模式的电子商城,该电子商务系统能够实现包括前台用户和后台管理两大部分。

其中,前台购物系统包括会员注册、会员登录、商品展示、商品搜索、购物车、产生订单和会员资料修改等等功能。后台管理系统包括管理用户、维护商品库、处理订单、维护会员信息和其他管理功能。

根据系统功能描述和实际业务分析,进行电子商城的数据库相关设计,完成如下实验需求:

  1. 需求分析说明书。

在数据库设计初期,首先进行系统功能需求说明书编写。这一环节上需完成系统初步的功能需求说明文档。

  1. XSM模型设计。

进入XML逻辑设计阶段,需要进行实体关系模型的设计,将现实的系统经过抽象后运用学过的XML内容进行XSM建模。在这一环节中,需完成上述的四个实验内容才进行。

三、实验平台

软件:POWER DESIGNER,WORD

四、实验步骤

由于在实验一时,已经完成了相关的需求分析说明书,此处便不再反复。在数据库设计初期,进行系统功能需求说明书编写。此部分详见实验一。

  1. XSM模型设计。

下面列举的是整个实验过程中,涉及到的一些操作步骤,和关于POWER DESIGNER在本实验中的某些需求的实现方法:

①   打开powerdesigner,点击“文件”菜单,再选择“新建模型”;

②   在“新建模型”界面,在“类型”中选择“信息”,在“类型项”中选择“XML”,然后点击“OK”;

③   在右侧的工具栏中,在“XML模型图”下点击“元素”图标,然后在主窗口上点击一次,就生成一个元素;

④   双击某个元素,在弹出窗口中选择“属性”标签,可以增加属性,然后“预览”标签,可以查看元素定义的XML文本;

⑤   在右侧的工具栏中,在“XML模型图”下点击“元素”图标,然后在某个元素上点击一次,即可以在该元素下增加一个子元素;

⑥   在右侧的工具栏中,在“XML模型图”下点击“复杂类型”图标,然后在主窗口上点击一次,就生成一个复杂类型;

⑦   双击某个复杂类型,在弹出窗口中选择“属性”标签,可以增加属性,然后“预览”标签,可以查看复杂类型定义的XML文本。

五、运行结果

  1. 需求分析说明书。关于此部分,详见实验1的设计部分,略。
  2. XSM模型设计

如图5-1所示,是本实验的整体XSM模型。本实验关于XSM模型设计,所采用的是复杂数据类型中组的定义方法,也就是组的参照来源可以是整个元素的对象,也可以是单个复杂类型。但和单个复杂类型不同的是,使用组的方法的时候,既可以将一个目标实例化成一个对象,也能实例化为一个复杂的类型。

高级数据库设计与应用 05 - XML数据库建模 

图5-1 整体XSM模型

        在上面这个整体XSM模型中,出于设计稿面的需求,而没有列举末梢元素的详细数据类型。以下,是将整个XSM模型进行拆分为七个模块,也将这七个模块分别实例化成xml形式的文档。

这七个模块分别是:商品类型、员工用户、商品信息、会员用户、订单详情、订单信息,以及支付类型,具体详见以下内容:

1)      RD_COMMODITY_TYPES商品类型模型,如下:

 高级数据库设计与应用 05 - XML数据库建模

<?xml version="1.0"?>

<RD_COMMODITY_TYPES>

 <ROW>

  <COMMODITY_TYPE_ID>0001</COMMODITY_TYPE_ID>

  <STATUS>推荐</STATUS>

  <COMMODITY_TYPE>01</COMMODITY_TYPE>

 </ROW>

 <ROW>

  <COMMODITY_TYPE_ID>0002</COMMODITY_TYPE_ID>

  <STATUS>热点</STATUS>

  <COMMODITY_TYPE>02</COMMODITY_TYPE>

 </ROW>

</RD_COMMODITY_TYPES>

2)      RD_EMPLOYEES员工用户模型,如下:

高级数据库设计与应用 05 - XML数据库建模 

<?xml version="1.0"?>

<RD_EMPLOYEES>

 <ROW>

  <EMPLOYEE_ID>0001</EMPLOYEE_ID>

  <EMPLOYEE_PASSWORD>123456</EMPLOYEE_PASSWORD>

  <EMPLOYEE_NAME>张三</EMPLOYEE_NAME>

  <BIRTH>03-3月 -19</BIRTH>

  <ADDRESS>北京八达岭</ADDRESS>

  <MOBILE>1109635</MOBILE>

  <WECHAT>53425223</WECHAT>

  <REPUTATION>98</REPUTATION>

  <DEPARTMENT>销售部门</DEPARTMENT>

  <SEX>男</SEX>

  <COMPANY>北京岭科技有限公司</COMPANY>

 </ROW>

 <ROW>

  <EMPLOYEE_ID>0002</EMPLOYEE_ID>

  <EMPLOYEE_PASSWORD>123456</EMPLOYEE_PASSWORD>

  <EMPLOYEE_NAME>李四</EMPLOYEE_NAME>

  <BIRTH>03-3月 -19</BIRTH>

  <ADDRESS>杭州西湖边</ADDRESS>

  <MOBILE>1109635</MOBILE>

  <WECHAT>53425223</WECHAT>

  <REPUTATION>98</REPUTATION>

  <DEPARTMENT>作坊</DEPARTMENT>

  <SEX>男</SEX>

  <COMPANY>西湖臭豆腐西施作坊</COMPANY>

 </ROW>

</RD_EMPLOYEES>

3)      RD_GOODS商品信息模型,如下:

高级数据库设计与应用 05 - XML数据库建模 

<?xml version="1.0"?>

<RD_GOODS>

 <ROW>

  <GOOD_ID>0001</GOOD_ID>

  <DISCOUNT>0.8</DISCOUNT>

  <GOODS>豆浆</GOODS>

  <UNIT_PRICE>23.5</UNIT_PRICE>

  <PURCHASE_DATE>2017-32-23</PURCHASE_DATE>

<GOOD_TYPE>0000220208257F4C4F5E8846809E167003A33DE7567903A3E017164E92B6AEB24EFC68ACB0</GOOD_TYPE>

 </ROW>

 <ROW>

  <GOOD_ID>0002</GOOD_ID>

  <DISCOUNT>0.8</DISCOUNT>

  <GOODS>无人机</GOODS>

  <UNIT_PRICE>23.5</UNIT_PRICE>

  <PURCHASE_DATE>2017-32-23</PURCHASE_DATE>

<GOOD_TYPE>0000220208257F4C4F5E8846809E167003A33DE7567903A3E017164E92B6AEB24EFC68ACB0</GOOD_TYPE>

 </ROW>

</RD_GOODS>

4)      RD_MEMBERS会员用户信息模型,如下:

高级数据库设计与应用 05 - XML数据库建模 

<?xml version="1.0"?>

<RD_MEMBERS>

 <ROW>

  <MEMBER_ID>0001</MEMBER_ID>

  <MEMBER_PASSWORD>123456</MEMBER_PASSWORD>

  <MEMBER_NAME>昊哥</MEMBER_NAME>

  <BIRTH>18-11月-19</BIRTH>

  <ADDRESS>广西南宁</ADDRESS>

  <MOBILE>1008611</MOBILE>

  <WECHAT>10010</WECHAT>

  <REPUTATION>100</REPUTATION>

  <HOBBY>喜欢电子产品</HOBBY>

  <SEX>男</SEX>

  <JOBE>教师</JOBE>

 </ROW>

 <ROW>

  <MEMBER_ID>0002</MEMBER_ID>

  <MEMBER_PASSWORD>123456</MEMBER_PASSWORD>

  <MEMBER_NAME>小弟</MEMBER_NAME>

  <BIRTH>18-11月-19</BIRTH>

  <ADDRESS>广西藤县</ADDRESS>

  <MOBILE>10010</MOBILE>

  <WECHAT>1008611</WECHAT>

  <REPUTATION>100</REPUTATION>

  <HOBBY>喜欢麻婆豆腐</HOBBY>

  <SEX>男</SEX>

  <JOBE>学生</JOBE>

 </ROW>

</RD_MEMBERS>

5)      RD_ORDER_DETAILSS订单详情信息模型,如下:

高级数据库设计与应用 05 - XML数据库建模 

<?xml version="1.0"?>

<RD_ORDER_DETAILSS>

 <ROW>

  <ORDER_DETAILS_ID>0001</ORDER_DETAILS_ID>

  <ORDER_DETAILS>OK</ORDER_DETAILS>

<GOOD_INFO>0000220208A9FA6DA5A45442C389A2FE43D4FEC10A4592F3AFBA0847778C2C3007B8E9CC54</GOOD_INFO>

<PAYMENT_TYPE_INFO>000022020805638F9B0CAE4903AB0741146B880F2A9C2E9B64584D420E92F38A5D0ABC39DA</PAYMENT_TYPE_INFO>

<EMPLOYEE_INFO>0000220208764E2860152D4F70B3A869DD82361E5379225ACE0AC44544B0230F4854E6C588</EMPLOYEE_INFO>

<MEMBER_INFO>0000220208CEDFD42D87E34731BA8D5CA01813BD16C3C3FD52C4354F53825B30F61E7C3015</MEMBER_INFO>

 </ROW>

 <ROW>

  <ORDER_DETAILS_ID>0002</ORDER_DETAILS_ID>

  <ORDER_DETAILS>OK</ORDER_DETAILS>

<GOOD_INFO>000022020838B293D236AE443AA95C6B45B00D22954592F3AFBA0847778C2C3007B8E9CC54</GOOD_INFO>

<PAYMENT_TYPE_INFO>000022020806D23EC66465455182841041FA8756779C2E9B64584D420E92F38A5D0ABC39DA</PAYMENT_TYPE_INFO>

<EMPLOYEE_INFO>00002202084786E2C886A0498E844CFF540F88CC9879225ACE0AC44544B0230F4854E6C588</EMPLOYEE_INFO>

<MEMBER_INFO>000022020830F85A99C86E4F41AC84767197DE1B6AC3C3FD52C4354F53825B30F61E7C3015</MEMBER_INFO>

 </ROW>

</RD_ORDER_DETAILSS>

6)      RD_ORDERS订单信息模型,如下:

高级数据库设计与应用 05 - XML数据库建模 

<?xml version="1.0"?>

<RD_ORDERS>

 <ROW>

  <ORDER_ID>0001</ORDER_ID>

  <GOODS_NUMBER>4</GOODS_NUMBER>

  <TOTAL_PRICE>23</TOTAL_PRICE>

  <SETUP_TIME>2017-23-07</SETUP_TIME>

<ORDER_DETAILS>0000220208E611B44D00F44C299E8E37AE78D4CC04DED32AE083314F0DA4AF683A627A2E58</ORDER_DETAILS>

 </ROW>

 <ROW>

  <ORDER_ID>0002</ORDER_ID>

  <GOODS_NUMBER>4</GOODS_NUMBER>

  <TOTAL_PRICE>23</TOTAL_PRICE>

  <SETUP_TIME>2017-23-07</SETUP_TIME>

<ORDER_DETAILS>00002202084ED2795A47C8479B8C9D1010A2641A2CDED32AE083314F0DA4AF683A627A2E58</ORDER_DETAILS>

 </ROW>

</RD_ORDERS>

7)      RD_PAYMENT_TYPES支付类型信息模型,如下:

高级数据库设计与应用 05 - XML数据库建模 

<?xml version="1.0"?>

<RD_PAYMENT_TYPES>

 <ROW>

  <PAYMENT_TYPE_ID>0001</PAYMENT_TYPE_ID>

  <PAYMENT_TYPE>支付宝</PAYMENT_TYPE>

 </ROW>

 <ROW>

  <PAYMENT_TYPE_ID>0002</PAYMENT_TYPE_ID>

  <PAYMENT_TYPE>微信</PAYMENT_TYPE>

 </ROW>

</RD_PAYMENT_TYPES>

六、实验总结

通过本实验,相关总结和经验收获,可分点总结如下:

  1. 本实验在XML逻辑设计阶段中,主要是利用PowerDesigner进行实体关系模型的设计,将实现的系统经过抽象后得到XSM模型;
  2. 在正式开始实验前,由于自身对XSM模型的绘制有所短缺,需得经过学习https://wenku.baidu.com/view/e104602652d380eb62946da7.html,即:XML模型及PowerDesigner实现的知识点后,形成了一定的认识,以及关于XSM模型如何绘制的相关知识体系;
  3. powerdesigner 绘制物理模型 关系箭头方向是子类指向父类;绘制概念模型的箭头方向与物理模型相反;
  4. 数据库德逻辑结构设计的结果不是唯一的,为了提高数据库应用系统的性能,还应该根据应用需要适当的修改,调整关系模式,这就是数据模型的优化。