使用多种项目构建电子商务数据库

时间:2013-12-23 18:51:00

标签: php sql database data-structures

如果电子商务网站的每个项目都有多个变体,那么如何最好地组织我的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,所以当有人添加5x Cherry in 0 strength和2x Banana in 18 strength时在他们的购物车中,以下内容已初始化:

$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 个答案:

答案 0 :(得分: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表中。如果您想控制不同的香烟盒尺寸,请将其添加到新表中。

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

这是你想要的吗?