[SQL ] 鍊式資料的儲存方式?

看板Database作者 (拒絕崩潰的蒲公英)時間14年前 (2011/12/06 09:32), 編輯推噓0(008)
留言8則, 3人參與, 最新討論串1/1
現在有一個網路售貨系統,內有的商品類別五花八門 毎個類別都可能擁有更細的子類別,分支度無法事先估計 商品擁有多於一種的類別,可能只屬於某類別卻不屬於其子類別 子類別可能擁有多於一種的父類別 最複雜的狀態可能出現以下可能: 電腦─┬→桌電→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
想問一下是MSSQL嗎?
12/06 17:55, 3F

12/06 17:59, , 4F
是MySQL...
12/06 17:59, 4F

12/06 18:04, , 5F
用 tag 的方法來做…?
12/06 18:04, 5F

12/06 20:29, , 6F
詳細希望?
12/06 20:29, 6F

12/06 21:24, , 7F
還沒辦法的話只好不靠mysql 自建物件導向式儲存進檔案
12/06 21:24, 7F

12/06 21:25, , 8F
反正都是讀/寫類別時需要耗資源....
12/06 21:25, 8F
文章代碼(AID): #1EtN2Shy (Database)