我不确定如何完美地说出来,但让我试一试。我正在建立一个库存控制应用程序,用于与许多不同的客户一起做任何事情,从检查他们自己的物品库存,获得价格,订购产品等。前端是Flex(Flash Builder),后面结束是MySQL和PHP。所以 - 这是我猜的真正问题。当客户订购产品时,我不确定他们订购了多少产品,但我需要将所有商品保存到一张“门票”上。 (示例:一个订单可能是2个苹果,3个橙子,一个香蕉和一个奇异果 - 下一个可能只是订购一个苹果。)因此,在我的“门票”数据库中,我有最多20个项目的空间(ticketItem1, ticketItem2等...) - 这里明显的缺点是,如果客户只订购了一个产品,我剩下19个空格。
什么类型的问题(如果有的话)通常与数据库中有很多NULL值有关?有没有办法帮助防止它们发生?是否有任何建议可以帮助解决这个问题?
此外,最后 - 订购的每件商品(让我们再次使用苹果)都有自己的UNIQUE条形码。因此,一个苹果可能编号为0001,另一个可能是4524 ......
感谢您提供任何帮助。
-CS
答案 0 :(得分:7)
不要使用20列ticketItem1, ticketItem2, ...
,而是引入一个表order_item
,如下所示:
表订单:
id customer
1 42
2 23
表项目:
id name
1 banana
2 kiwi
3 apple
4 oranges
表 order_item :
order_id item_id multiplicity
1 1 1 # 1 banana
1 2 1 # 1 kiwi
1 3 2 # 2 apples
1 4 3 # 3 oranges
2 3 1 # 1 apple in the second order
然后,在表格上JOIN获取订单中的所有订购商品。
答案 1 :(得分:1)
您应该有一个列出Order的表,一个用于OrderDetails,其OrderID指向Order表
因此,如果订单中有10个产品。 Order中有1行,OrderDetails中有10行
答案 2 :(得分:0)
如果您希望在存储的内容中保持动态,可以使用json数组。我完全同意其他人认为数据库规范化是第一件事。我会遵循Codd的规则。
但是如果你不确切知道你需要存储什么json可能是一个解决方案。然而,一个主要缺点是搜索变得非常困难。