转: 利用SQL SERVER2005的XML字段类型实现类似商品扩展属性
今天自己翻了兩頁自己的BLOG,發現真是越來越懶了,已經好長時間沒有寫技術相關的日志了,記得剛開始寫BLOG的時候還經常寫寫自己的技術積累的,現在除了發布ZJ-BLOG的程序更新信息外,好像全成了自己生活鎖事的流水帳了,真是慚愧呀。。。
??????? 去年剛換的這家公司是一家做網上商城的公司,商城功能目前還比較簡單,在我進去接到第一個任務是要加入商城中商品的擴展屬性功能,擴展屬性功能其實就是這個意思,例如手機和筆記本電腦兩種商品,我們可以定義手機類商品有“是否智能機”、“手機制式”、“外觀”等幾個特有屬性,而筆記本電腦類商品有“尺寸”、“CUP類別”、“是否獨立顯卡”等幾個特有屬性,網站的用戶可以利用這些擴展屬性對同一類別下的商品進行方便的篩選查詢,此功能相信大家在上一些網站時都已經用過了,比如“中關村在線”的商品詳細查詢功能。在設計此功能時,我第一次在實踐中使用的SQL SERVER2005中新的字段類型:XML。功能上線已經有一個月了,目前來說,效果應該還算理想的(沒有經過海量數據測試)。
??????? 先說說表的設計:
| 屬性定義表(表名:expand) | ||
| fid | 唯一標識 | int(自增) |
| fclassId | 商品類別ID | int |
| fexpandName | 擴展屬性名稱 | varchar(30) |
| forder | 排序值 | int |
?
| 屬性選擇值定義表(表名:expandItem) | ||
| fid | 唯一標識 | int(自增) |
| fexpandId | 擴展屬性ID | int |
| fname | 選擇項名稱 | varchar(30) |
| forder | 排序值 | int |
?
| 商品擴展屬性表(表名:productExpand) | ||
| fid | 唯一標識 | int(自增) |
| fproductId | 商品ID | int |
| fexpand | 商品擴展屬性 | xml |
??????? 頭兩個表:屬性定義表(表名:expand) 和 屬性選擇值定義表(表名:expandItem) 是各自的商品類別所具有的擴展屬性的定義,第一個表:屬性定義表(表名:expand),定義了每一種商品類別下的多個擴展屬性的名稱,是一對多的關系,而由于全部的擴展屬性都要控制著從多個選項中選擇,所以需要表2:屬性選擇值定義表(表名:expandItem),來定義每一個擴展屬性下的選擇項,同樣的,也是一種一對多的關系,這兩個表相信大家很容易理解的,在此就不廢話了。
??????? 本文的重點在于第三個表,就是記錄每一個商品的所具備的擴展屬性信息的表:商品擴展屬性表(表名:productExpand),最后一個字段使用了一個XML字段類型,用它來記錄每一個商品的所有的擴展屬性信息,比如我們對手機這個類別(假如手機類別ID為1234)以下定義:
| 1 | 1234 | 是否智能機 | 1 |
| 2 | 1234 | 手機制式 | 2 |
?
| 1 | 1 | 是 | 1 |
| 2 | 1 | 否 | 2 |
| 3 | 2 | GSM | 1 |
| 4 | 2 | CDMA | 2 |
??????? 數據表示手機類別定義了兩個擴展屬性:是否智能機(選項:是|否);手機制式(GSM|CDMA)。
??????? 如果我們要將以下數據(N73的擴展屬性)存入數據庫中:
| Nokia N73 | 4321 | 是 | GSM |
??????? 我們需要裝擴展屬性的信息組合成以下XML格式字符串:
程序代碼: <exp><item name="1" value="1" />
<item name="2" value="3" />
</exp>
?
??????? 而用SQL:insert into productExpand(fproductId,fexpand) values(4321,'<exp><item name="1" value="1" /><item name="2" value="3" /></exp>')添加到商品擴展屬性表(productExpand)中。此時商品擴展屬性表(productExpand)的數據如下:
| 1 | 4321 | <exp> <item name="1" value="1" /> <item name="2" value="3" /> </exp> |
??????? 以上就完成了對于商品擴展屬性信息添加,下篇文章將介紹如何通過SQL SERVER2005的函數實現網站用戶通過擴展屬性來方便的查詢商品。
轉載于:https://www.cnblogs.com/feihusurfer/archive/2008/12/23/1360483.html
總結
以上是生活随笔為你收集整理的转: 利用SQL SERVER2005的XML字段类型实现类似商品扩展属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 给生活一张漂亮的脸
- 下一篇: 八种方法防止数据库被下载