一、實驗目的
- 本實驗關鍵之處在於,要求訓練並掌握書寫數據庫設計文檔的能力, 並且能利用學過的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 繪制物理模型 關系箭頭方向是子類指向父類;繪制概念模型的箭頭方向與物理模型相反;
- 數據庫德邏輯結構設計的結果不是唯一的,為了提高數據庫應用系統的性能,還應該根據應用需要適當的修改,調整關系模式,這就是數據模型的優化。