你們好,今天咱們來設計一下購物商城的商品表。網絡
咱們的目標是表結構可以知足下面這張圖的搜索:設計
在設計表以前,咱們先來了解下商品中的兩個概念:SPU和SKU3d
SPU SPU(Standard Product Unit):標準化產品單元。是商品信息聚合的最小單位,是一組可複用、易檢索的標準化信息的集合,該集合描述了一個產品的特性。通俗點講,屬性值、特性相同的商品就能夠稱爲一個SPU。blog
SKU SKU=Stock Keeping Unit(庫存量單位)。即庫存進出計量的基本單元,能夠是以件,盒,托盤等爲單位。內存
舉個例子:iPhone6是一個SPU,iPhone6 32G 白色是一個SKU,iPhone6 128G 白色是另外一個SKU。產品
所以,不難發現,這裏須要一張SPU表。it
SPU表有了,這裏仍是以iPhone6爲例,iPhone6有內存16G的,有32G的,有黑色,有白色等信息,這些信息咱們稱之爲規格,好比內存是一種規格,顏色是一種規格。這些規格放在那裏呢,放在SPU表裏面天然是不合適的,由於每一個SPU的規格都不同。所以這裏須要一張規格表,用來存放內存,顏色(不是存放32G,黑色,就存放「內存」,「顏色」這個值,表示這個SPU具備內存,顏色規格),而後用一張中間表,把SPU表和規格表關聯起來,如圖:搜索
接下來須要解決的是,如何存放「32G」,「黑色」這些值呢?這些時具體規格的值,只須要新建一張規格值表便可。規格表和規格值表是一對多的關係,即一個規格有多個值,內存有32G,64G等。im
到這裏仍是沒有涉及到SKU的概念,先別急,咱們再回到最開始的那張搜索表:d3
發現還少了品牌的概念,SPU與品牌的關係是一對一的關係,一個SPU具備一個品牌(iPhone6的品牌是蘋果),這點好理解,所以只要新建一張品牌表,而後SPU表裏添加一個品牌id。
至此,咱們彷佛已經能夠經過規格搜索出大部分的商品,屏幕尺寸,網絡,機身內存這三項都是規格,品牌咱們也知道了。
可是,購物商城中不可能只賣手機,還會賣電腦,衣服等。這裏咱們衍生出另外一個概念:分類。其中手機是一種分類。所以,咱們要新建一張分類表,裏面存放各類分類名稱,而後在SPU表裏面添加一個分類id,如圖:
如今,咱們已經把SPU相關的表設計好了,如今來設計SKU相關的表。
根據SKU的定義得知,SKU是SPU的一種詳細說明,所以SPU與SKU的關係是一對多的關係,即一個SPU對應多個SKU,首先咱們要有一張SKU表:
其中SKU表中有一個spu_id。而後咱們來看下SKU須要哪些字段,上面說到了SPU有規格,那SKU就落實到了具體的規格值,即具體的內存,顏色等。規格值表已經有了,所以須要建一張SKU與規格值的關聯表:
這樣,SKU就有具體的規格了。接下來,咱們在根據實際的SKU圖看下還缺乏哪些東西。下面一張截圖來自京東商城
大部分的內容咱們都有了,但還缺乏幾樣東西,若是是C2C的商城,那應該有個店鋪,還有一個增值保障。一個SKU對應一個店鋪,可直接在SKU表裏加一個店鋪id,而後有一張獨立的店鋪表。
至於增值保障,確定須要一張表來存放增值保障信息,而後它跟SKU的關係是多對多的關係,須要一張中間表來關聯
至此,商品表的核心內容已經設計得差很少了,固然還有其它內容。篇幅有限咱們就不一一展開討論了。你們有問題和意見能夠在下面留言討論。下一篇文章咱們根據本篇的設計來作具體的建表,並來一次實際演練。