[SQL ] 鍊式資料的儲存方式?
現在有一個網路售貨系統,內有的商品類別五花八門
毎個類別都可能擁有更細的子類別,分支度無法事先估計
商品擁有多於一種的類別,可能只屬於某類別卻不屬於其子類別
子類別可能擁有多於一種的父類別
最複雜的狀態可能出現以下可能:
電腦─┬→桌電→IBM,Apple....etc
├→筆電→...........
└→平板電腦→A廠牌,B廠牌
↗
手機─┼→智慧型手機
└→一般手機
超值優惠┬→八折商品
├→五折商品
└→免費贈品
A商品可能屬於"平板電腦"但非A廠牌或B廠牌
所以當使用者點擊"平板電腦","手機","電腦"類別時都會出現A商品
但點擊A廠牌時不會出現A商品
而A商品除了"平板電腦"類別以外還可能擁有"八折商品"這個類別
所以在點擊"八折商品"或者"超值優惠"時也可能會出現
這些類別被要求能從後台隨意新增修改,所以不能用寫在檔案中的方式
過往我在遇到這種超複雜的資料結構時都是把資料變成json或者xml方式存到資料庫
但這裡會變成"需要把所有資料讀出解析才有辦法知道某某類別會出現哪些商品"
效率上行不通
目前想到的暫時解法是以兩個Table儲存類別與類別關係
Table:類別 Table:類別關係
ID Type Parent Child
1 超值優惠 1 2
2 八折商品 3 5
3 手機 4 5
4 電腦 5 6
5 平板電腦 5 7
6 A廠牌
7 B廠牌
要記錄商品的類別時則以特殊結構儲存(比如按階層順序儲存的CVS格式)
再透過字串比對的方式去找出哪些類別有哪些商品(LIKE '%(5)%')
但這個方法的缺點是....無論是要秀出"全商品類別一覽",或者後台要編輯全類別時
處理起來都會大費周章,要花許多功夫才能轉化為能夠理解的形式
請問在關聯式資料表資料庫下遇到這類複雜結構時
有更好的處理方式嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.46.134.109
→
12/06 13:36, , 1F
12/06 13:36, 1F
→
12/06 13:37, , 2F
12/06 13:37, 2F
→
12/06 17:55, , 3F
12/06 17:55, 3F
→
12/06 17:59, , 4F
12/06 17:59, 4F
→
12/06 18:04, , 5F
12/06 18:04, 5F
→
12/06 20:29, , 6F
12/06 20:29, 6F
→
12/06 21:24, , 7F
12/06 21:24, 7F
→
12/06 21:25, , 8F
12/06 21:25, 8F