如果电子商务网站的每个项目都有多个变体,那么如何最好地组织我的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
... ... ... ... ...
Banana
和Cherry
属于口味,0
,6
,12
,18
是力量。当一个人在他们的购物车中添加内容时,所有内容都存储在$_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结构和一种初始化事物的钝方式。
答案 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)
。
这是你想要的吗?