高级数据库设计与应用 05 - XML数据库建模
一、实验目的
- 本实验关键之处在于,要求训练并掌握书写数据库设计文档的能力, 并且能利用学过的XML数据库进行模式的创建,实现学而致用的习惯。
- 同时,也要求梳理实验中所涉及到的实验重点和难点知识,即:XML数据库模式的设计和XML结构体系,要求在把数据存储形式转变为XML形式后,形成自己的关于XML数据库模式设计和创建的相关知识体系。
二、实验内容
实验背景导入:
某公司接到一个网购系统的项目,任命你做该任务的数据库设计师,对网购系统进行数据库整体的设计。Webshop就是一个B2C模式的电子商城,该电子商务系统能够实现包括前台用户和后台管理两大部分。
其中,前台购物系统包括会员注册、会员登录、商品展示、商品搜索、购物车、产生订单和会员资料修改等等功能。后台管理系统包括管理用户、维护商品库、处理订单、维护会员信息和其他管理功能。
根据系统功能描述和实际业务分析,进行电子商城的数据库相关设计,完成如下实验需求:
- 需求分析说明书。
在数据库设计初期,首先进行系统功能需求说明书编写。这一环节上需完成系统初步的功能需求说明文档。
- XSM模型设计。
进入XML逻辑设计阶段,需要进行实体关系模型的设计,将现实的系统经过抽象后运用学过的XML内容进行XSM建模。在这一环节中,需完成上述的四个实验内容才进行。
三、实验平台
软件:POWER DESIGNER,WORD
四、实验步骤
由于在实验一时,已经完成了相关的需求分析说明书,此处便不再反复。在数据库设计初期,进行系统功能需求说明书编写。此部分详见实验一。
- XSM模型设计。
下面列举的是整个实验过程中,涉及到的一些操作步骤,和关于POWER DESIGNER在本实验中的某些需求的实现方法:
① 打开powerdesigner,点击“文件”菜单,再选择“新建模型”;
② 在“新建模型”界面,在“类型”中选择“信息”,在“类型项”中选择“XML”,然后点击“OK”;
③ 在右侧的工具栏中,在“XML模型图”下点击“元素”图标,然后在主窗口上点击一次,就生成一个元素;
④ 双击某个元素,在弹出窗口中选择“属性”标签,可以增加属性,然后“预览”标签,可以查看元素定义的XML文本;
⑤ 在右侧的工具栏中,在“XML模型图”下点击“元素”图标,然后在某个元素上点击一次,即可以在该元素下增加一个子元素;
⑥ 在右侧的工具栏中,在“XML模型图”下点击“复杂类型”图标,然后在主窗口上点击一次,就生成一个复杂类型;
⑦ 双击某个复杂类型,在弹出窗口中选择“属性”标签,可以增加属性,然后“预览”标签,可以查看复杂类型定义的XML文本。
五、运行结果
- 需求分析说明书。关于此部分,详见实验1的设计部分,略。
- XSM模型设计
如图5-1所示,是本实验的整体XSM模型。本实验关于XSM模型设计,所采用的是复杂数据类型中组的定义方法,也就是组的参照来源可以是整个元素的对象,也可以是单个复杂类型。但和单个复杂类型不同的是,使用组的方法的时候,既可以将一个目标实例化成一个对象,也能实例化为一个复杂的类型。
图5-1 整体XSM模型
在上面这个整体XSM模型中,出于设计稿面的需求,而没有列举末梢元素的详细数据类型。以下,是将整个XSM模型进行拆分为七个模块,也将这七个模块分别实例化成xml形式的文档。
这七个模块分别是:商品类型、员工用户、商品信息、会员用户、订单详情、订单信息,以及支付类型,具体详见以下内容:
1) RD_COMMODITY_TYPES商品类型模型,如下:
<?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员工用户模型,如下:
<?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商品信息模型,如下:
<?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会员用户信息模型,如下:
<?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订单详情信息模型,如下:
<?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订单信息模型,如下:
<?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支付类型信息模型,如下:
<?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>
六、实验总结
通过本实验,相关总结和经验收获,可分点总结如下:
- 本实验在XML逻辑设计阶段中,主要是利用PowerDesigner进行实体关系模型的设计,将实现的系统经过抽象后得到XSM模型;
- 在正式开始实验前,由于自身对XSM模型的绘制有所短缺,需得经过学习https://wenku.baidu.com/view/e104602652d380eb62946da7.html,即:XML模型及PowerDesigner实现的知识点后,形成了一定的认识,以及关于XSM模型如何绘制的相关知识体系;
- powerdesigner 绘制物理模型 关系箭头方向是子类指向父类;绘制概念模型的箭头方向与物理模型相反;
- 数据库德逻辑结构设计的结果不是唯一的,为了提高数据库应用系统的性能,还应该根据应用需要适当的修改,调整关系模式,这就是数据模型的优化。