2013-12-23 69 views
0

如何最好地组织我的SQL表格提供电子商务网站的每个项目有多个变体?我经营电子烟业务,事情是由风味和力量组织的。这是我的SQL表粗略样机:为多项电子商务项目构建电子商务数据库

itemNum itemName itemPrice itemConc stockRemaining 
-------------------------------------------------- 
    1  Banana 10.99  0   5  
    2  Banana 10.99  6   42 
    3  Banana 10.99  12   12 
    4  Banana 10.99  18   0 
    5  Cherry 10.99  0   19 
    6  Cherry 10.99  6   36 
    ...  ...  ...  ...   ... 

BananaCherry是味道,与061218是实力。当一个人增加了一些自己的车,东西都存储在$_SESSION数据在两个数组:$productNumbers$productQuantities,所以当有人增加了5倍Cherry在0强度和2x香蕉在18强到他们的车,下面是初始化:

$productNumbers[] = {5, 4}; 
$productQuantities[] = {5, 2}; 

但是,这是管理繁琐,并且有太多的膨胀。当我认为它可以被优化时,我最终会得到四种味道。我最终需要为每个单独的物品/力量组合添加库存,而不是仅将库存添加到一种风味;当我只需要其中的1/4时,最终可能会有数百行。我正在考虑类似下面的东西:

itemNum itemName itemPrice zero six twelve eighteen 
--------------------------------------------------- 
    1  Banana 10.99 0 1  5  2 
    2  Cherry 10.99 6 3  42  3 
    ...  ...  ... ... ... ... ... 

但我不知道如何最好地实现这一点。 itemPrice右边的列将是每种口味的个人强度的库存水平,但是当考虑我的推车系统时,我将如何区分它们?这看起来非常有效,但实施起来很麻烦。我不能想办法让它没有做多阵列工作:

$productNumbers[]; //itemNum 
$zeroQty[]; //quantity order of zero 
$sixQty[]; //quantity order of six 
//etc 

这意味着我需要甚至初始化多个阵列时,甚至可以不使用它们。看起来我可以拥有一个钝的SQL结构,但是有一个初始化事物的简单方法,或者一个简单的SQL结构和一个对事物进行初始化的钝的方法。

+1

不这样做。 '(itemNum,itemName,itemPrice,strength)'是更好的方法。如果你最终得到了其他一些强度为“one”,“seven”和“eighty”的味道,那么你就不得不在桌子上添加更多的列并浪费大量的空间。通用强度字段可以让你拥有**任意**你想要的力量。然后你为这些记录添加一个itemID字段,并且每个强度都有自己的自动ID和问题解决。 –

+0

我想你需要看看什么样的数据规范化,这是ZZ-bb实现的。 – CAO

回答

2

是你的问题设计或实施? (现在看来你们都问了。)

你可以将你的香烟数据存储到两张表中。

item(如果实力不影响价格,PK:itemNum):

itemNum itemName itemPrice 
-------------------------- 
    1  Banana 10.99 
    2  Cherry 10.99 

itemStock(PK:itemNum,itemConc):

itemNum itemConc stockRemaining 
------------------------------- 
    1  0   0 
    1  6   5 
    1  12  7 
    1  18  25 
    2  0   3 
    2  6   10 
... 

现在,您可以轻松地检查为每个项目储备并增加新的优势。如果物品价格随每个强度而变化,您可以将其移至itemStock表格中。或者如果您想控制不同的香烟盒尺寸,请将其添加到新表中。

您的购物车可能包含(itemNum, itemName, itemPrice, strength)像Marc B建议的那样。

这就是您要找的内容?