2015-10-18 17 views
0

我目前有一個簡單的基於PHP的購物車,但我需要添加一個新功能,以便每個尺寸都有一個唯一的數量。例如,可能有1個大的,但有3個小的庫存。購物車數據庫設計:按大小添加功能數量

每個產品都有獨特的產品代碼,但具有多種尺寸和顏色。目前表中有一個數量字段。一旦訂購產品,我還需要能夠減少數量。

爲了提高靈活性,我目前參考選項單場的數據庫條目,這是一個JSON對象,看起來是這樣的:

{"colors":"Red,Blue","sizes":"S,M,L"} 

這讓我用不同的名字的多個選項,而靈活性必須在db中創建一個選項表。

我可以簡單地擴大JSON對象是這樣的:

{"colors":"Red,Blue","sizes":{"S":"1","M":"3","L":"0"}} 

我擔心這會導致無法預見的我問題的道路。我還擔心,在銷售變得更加複雜之後,這樣做會減少。

目前,我只需更新產品代碼匹配和減少數量的位置。通過上述更改,我必須檢索產品信息,解碼選項,查找大小並遞減,然後更新數據庫。這感覺過於複雜。

按尺寸處理產品數量是否有更好的方法?

回答

0

我永遠不會將字符串或json塊保存在單個產品行中,並且嵌入了大小/數量。

我會去產品表。

然後使用帶有size列和quantity列的productId的Junction表。

架構理念:

create table Products 
( prodId int auto_increment primary key, 
    prodName varchar(100) not null 
); 

create table ProductQuantities 
( -- table to store quantities for Product/Sizing combos 
    id int auto_increment primary key, 
    prodId int not null, 
    size varchar(10) not null, 
    quantity int not null, 
    constraint foreign key (prodId) references products(prodId), 
    key(prodId), 
    unique key (prodId,size) -- maintains sanity for no duplicates at the combo level, plus a general index 
); 

誠然,第二表是不是結表,但你的想法