2012-11-29 61 views
0

我創建一個購物籃類,並希望產品擁有的期權的未固化的量,例如顏色,大小等使用MySQL鏈接表,以允許在產品表中的多個選項

我知道我應該使用多個表以容納選項數據,但不知道如何去做。這是我迄今爲止的表格結構。

CREATE TABLE IF NOT EXISTS options (
     ID varchar(40) PRIMARY KEY, 
     Option int, 
     Value varchar(100), 
     Cost decimal(10,2) 
     ); 

CREATE TABLE IF NOT EXISTS products (
     ID int PRIMARY KEY AUTO_INCREMENT, 
     Title varchar(200), 
     Description text, 
     Specification text, 
     Price decimal(10,2), 
     CategoryID int, 
     Weight int, 
     OptionID int, 
     Discount int(2), 
     Featured boolean, 
     Images text, 
     Stock int, 
     Related text, 
     Offer boolean, 
     OfferDetails text, 
     Language int 
     ); 
CREATE TABLE IF NOT EXISTS basket (
     `ID` int(11) PRIMARY KEY AUTO_INCREMENT, 
     `ProductID` int(11), 
     `Quantity` int(11), 
     `OptionID` int(11), 
     `Cookie` varchar(40) 
     ); 

我要存儲在選擇表中的所有我的選項,通過一個唯一的ID將它們鏈接到該產品。

我猜我需要另一個表來存儲信息,當用戶選擇一個選項。然後使用此表來獲取選擇數據從輸出到籃子

另外我需要能夠看到是否相同的產品,即相同的選項和productID已經在籃子裏,所以我可以簡單地更新數量,而不是添加一個新行。

我可以通過使用大量的for循環和querys來做到這一點,但真的想限制這一點。

對不起,如果不清楚。

在此先感謝

回答

0

我假設你有另一個表的客戶。這些選項適用於產品。每個產品可以有一個或多個選項。這是多對一的關係。您可以爲每個用戶提供多種產品,這也是多對一的關係。你可以(應該?)關係分解這些。

此表(稱之爲purchase的例子)將持有的列對應以下(至少):

primary key, 
customer ID, 
product ID 
amongst other things. 

您可能會看到的問題,這筆最初是有可能爲0或多個選項。爲此,您需要另一個表格(例如,將其稱爲optSel)。這將具有對應於下列的(至少)列:

purchase table primary key, 
option id, 
and other things. 

則選擇一個選項時,可以在該optSel表拋出。稍後可以通過連接輕鬆訪問它。這將選項與用戶和產品鏈接起來。當然,你可以將它分開,這只是一種技術的一個例子。

相關問題