首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

XML 設計商品資訊:巢狀結構 (商品→顏色→尺寸/數量) 兩種模型對比

     編輯:程式設計綜合問答

需求

商品編號下有多顏色,顏色下有尺寸與數量。XML 存儲結構設計。

方案一:巢狀層級結構(語義清晰、易查詢單一商品完整資訊)


<?xml version="1.0" encoding="UTF-8"?>
<products>
  <product>
    <model>SKU001</model>
    <name>T恤</name>
    <color name="紅色">
      <size name="S" quantity="50"/>
      <size name="M" quantity="100"/>
      <size name="L" quantity="80"/>
    </color>
    <color name="藍色">
      <size name="S" quantity="30"/>
      <size name="M" quantity="60"/>
    </color>
  </product>
  <product>...</product>
</products>

優點:結構直觀、單一商品完整資訊一讀即得、適合「商品詳情頁」整包讀取。
缺點:跨顏色/尺寸彙總(如「所有紅色總庫存」)需遍歷全樹。

方案二:扁平化記錄結構(類關係表、易彙總、資料冗余)


<?xml version="1.0" encoding="UTF-8"?>
<products>
  <product>
    <name>T恤</name>
    <color>紅色</color>
    <size>S</size>
    <quantity>50</quantity>
  </product>
  <product>
    <name>T恤</name>
    <color>紅色</color>
    <size>M</size>
    <quantity>100</quantity>
  </product>
  <product>...</product>
</products>

優點:像 SQL 表,易用 XPath/XQuery 做 `sum(//product[color='紅色']/quantity)` 彙總。
缺點:商品名稱、顏色重複冗余、檔案大、修改商品名需改所有記錄。

選型建議

  • 配置檔/靜態目錄/前端直讀** → 方案一(巢狀),語義豐富、人類可讀、單次讀取完整物件。
  • 資料交換/ETL/大量彙總分析** → 方案二(扁平),或直接用 CSV/JSON Lines/Parquet,XML 非最佳。
  • 混合**:主檔巢狀 (商品主檔),附屬扁平 (庫存流水/異動日誌)。

XML 設計原則

  1. **屬性存元資料** (`name="紅色"`),**元素存資料內容** (`50`)。
  2. **ID/IDREF** 建立引用關係(如 `` → ``),減少冗余。
  3. **Schema (XSD) 定義結構約束**,生成/驗證時自動檢查。

總結

商品-顏色-尺寸 XML 設計:**巢狀結構適合單一商品完整讀取(目錄/詳情頁),扁平結構適合彙總分析(報表/ETL)**。按訪問模式選型,或混合使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved