目前要做一個手機版商城, 在設計資料庫時遇到該問題..
比如一件衣服,這件衣服有紅色、白色、藍色,
紅色又有X,XL,XLL尺碼,
白色有S,M,X,XL
藍色有M,X,XL
對於自己設計的資料庫一直感到不太滿意,望各路大神,賜教.
此問題的引申 一般商場不可能只出售衣服 , 還有會有電子產品等等亂七八糟的 後期擴充性 要怎麼辦呢?
回複內容:
目前要做一個手機版商城, 在設計資料庫時遇到該問題..
比如一件衣服,這件衣服有紅色、白色、藍色,
紅色又有X,XL,XLL尺碼,
白色有S,M,X,XL
藍色有M,X,XL
對於自己設計的資料庫一直感到不太滿意,望各路大神,賜教.
此問題的引申 一般商場不可能只出售衣服 , 還有會有電子產品等等亂七八糟的 後期擴充性 要怎麼辦呢?
尺碼(chimas)表
id | mark------------1 | X2 | XL3 | XLL4 | M5 | S
顏色(colors)表
id | color------------1 | 藍2 | 白3 | 紅4 | 紫5 | 灰
衣服(yifus)表
id | name------------1 | 大衣2 | 毛褲3 | 內衣4 | 內褲
衣服與顏色關聯(yifu_colors)表
id | color_id | yifu_id----------------------------1 | 1 | 12 | 1 | 23 | 2 | 14 | 2 | 2
衣服與尺碼關聯(yifu_chimas)表
id | chima_id | yifu_id----------------------------1 | 1 | 12 | 2 | 23 | 1 | 24 | 2 | 1
依你的需求裡衣服包含款式、顏色、大小三個屬性。 自然也就是對應四個邏輯資料表了。
你之前糾結的地方在於把顏色和大小附屬於款式了。
前三個表引用二樓的
尺碼(size)表
id | mark------------1 | X2 | XL3 | XLL4 | M5 | S
顏色(colors)表
id | color------------1 | 藍2 | 白3 | 紅4 | 紫5 | 灰
衣服(clothes)表
id | name------------1 | 大衣2 | 毛褲3 | 內衣4 | 內褲
第四個表可以是直接是衣服跟尺碼和顏色的關聯表
衣服樣式表(clothes_spec)
id | clothes_id | size_id | color_id------------------------------------ 1 | 1 | 1 | 2 2 | 2 | 1 | 2 3 | 1 | 3 | 1
第四個表這樣做的好處是更清晰,因為少了一個表,查起來速度也快一點。但是不足是擴充起來比較麻煩,每添加一個屬性就要向表中添加一個列。但是如果是商品量,使用者量很大的情況下,這種方式還是比較有優勢的。
擴充性是個問題,給出我的想法吧,坐等大牛給出擴充性好的方案:
| id(商品id) |
name(商品名稱) |
color(顏色) |
size(尺碼) |
count(數量) |
| 1 |
某衣服 |
red |
M |
0 |
| 1 |
某衣服 |
red |
X |
100 |
| 1 |
某衣服 |
red |
XL |
200 |
| 1 |
某衣服 |
red |
XLL |
300 |
查詢紅色衣服有哪些尺碼
select size from table where id={id} and color='red' and count > 0
建議你去網上找關於庫存SKU的文章和設計方法
商品表:
good_id, title, cate_id
類目屬性工作表:
cate_id, attr_id
商品屬性分類表:
attr_id, attr_label, attr_key(做alias用), attr_sort1, 顏色, COLOR, 02, 尺碼, SIZE, 1
商品屬性詳情表:
good_id, attr_value_id,attr_id, attr_value_title, attr_value_sort1, 1, 1, 紅色, 01, 2, 1, 藍色, 11, 3, 2, 19, 01, 4, 2, 20, 1
如果你要考慮後期的擴充性,建議採用MySQL的EVA結構,不然上面的幾種到擴充的時候,都比較麻煩。
這設計也太糟糕了。。SKU不能這麼設計。