1. 程式人生 > >(二)購物商城資料庫設計-商品表設計

(二)購物商城資料庫設計-商品表設計

大家好,今天我們來設計一下購物商城的商品表。

我們的目標是表結構能夠滿足下面這張圖的搜尋:

搜尋

在設計表之前,我們先來了解下商品中的兩個概念:SPU和SKU

  • SPU
    SPU(Standard Product Unit):標準化產品單元。是商品資訊聚合的最小單位,是一組可複用、易檢索的標準化資訊的集合,該集合描述了一個產品的特性。通俗點講,屬性值、特性相同的商品就可以稱為一個SPU。

  • SKU
    SKU=Stock Keeping Unit(庫存量單位)。即庫存進出計量的基本單元,可以是以件,盒,托盤等為單位。

舉個例子:iPhone6是一個SPU,iPhone6 32G 白色是一個SKU,iPhone6 128G 白色是另一個SKU。

因此,不難發現,這裡需要一張SPU表。

SPU

SPU表有了,這裡還是以iPhone6為例,iPhone6有記憶體16G的,有32G的,有黑色,有白色等資訊,這些資訊我們稱之為規格,比如記憶體是一種規格,顏色是一種規格。這些規格放在那裡呢,放在SPU表裡面自然是不合適的,因為每個SPU的規格都不一樣。因此這裡需要一張規格表,用來存放記憶體,顏色(不是存放32G,黑色,就存放“記憶體”,“顏色”這個值,表示這個SPU具有記憶體,顏色規格),然後用一張中間表,把SPU表和規格表關聯起來,如圖:

SPU規格

接下來需要解決的是,如何存放“32G”,“黑色”這些值呢?這些時具體規格的值,只需要新建一張規格值表即可。規格表和規格值表是一對多的關係,即一個規格有多個值,記憶體有32G,64G等。

規格值
到這裡還是沒有涉及到SKU的概念,先別急,我們再回到最開始的那張搜尋表:

搜尋

發現還少了品牌的概念,SPU與品牌的關係是一對一的關係,一個SPU具有一個品牌(iPhone6的品牌是蘋果),這點好理解,因此只要新建一張品牌表,然後SPU表裡新增一個品牌id。

品牌

至此,我們似乎已經可以通過規格搜尋出大部分的商品,螢幕尺寸,網路,機身記憶體這三項都是規格,品牌我們也知道了。

但是,購物商城中不可能只賣手機,還會賣電腦,衣服等。這裡我們衍生出另一個概念:分類。其中手機是一種分類。因此,我們要新建一張分類表,裡面存放各種分類名稱,然後在SPU表裡面新增一個分類id,如圖:

分類

現在,我們已經把SPU相關的表設計好了,現在來設計SKU相關的表。

根據SKU的定義得知,SKU是SPU的一種詳細說明,因此SPU與SKU的關係是一對多的關係,即一個SPU對應多個SKU,首先我們要有一張SKU表:

SKUADD

其中SKU表中有一個spu_id。然後我們來看下SKU需要哪些欄位,上面說到了SPU有規格,那SKU就落實到了具體的規格值,即具體的記憶體,顏色等。規格值表已經有了,因此需要建一張SKU與規格值的關聯表:

SKU-規格值

這樣,SKU就有具體的規格了。接下來,我們在根據實際的SKU圖看下還缺少哪些東西。下面一張截圖來自京東商城

sku

大部分的內容我們都有了,但還缺少幾樣東西,如果是C2C的商城,那應該有個店鋪,還有一個增值保障。一個SKU對應一個店鋪,可直接在SKU表裡加一個店鋪id,然後有一張獨立的店鋪表。

店鋪

至於增值保障,肯定需要一張表來存放增值保障資訊,然後它跟SKU的關係是多對多的關係,需要一張中間表來關聯

增值保障

至此,商品表的核心內容已經設計得差不多了,當然還有其它內容。篇幅有限我們就不一一展開討論了。大家有問題和意見可以在下面留言討論。下一篇文章我們根據本篇的設計來做具體的建表,並來一次實際演練。