在MySQL数据库中有很多空值可以吗?

时间:2011-10-05 22:29:37

标签: php mysql

我不确定如何完美地说出来,但让我试一试。我正在建立一个库存控制应用程序,用于与许多不同的客户一起做任何事情,从检查他们自己的物品库存,获得价格,订购产品等。前端是Flex(Flash Builder),后面结束是MySQL和PHP。所以 - 这是我猜的真正问题。当客户订购产品时,我不确定他们订购了多少产品,但我需要将所有商品保存到一张“门票”上。 (示例:一个订单可能是2个苹果,3个橙子,一个香蕉和一个奇异果 - 下一个可能只是订购一个苹果。)因此,在我的“门票”数据库中,我有最多20个项目的空间(ticketItem1, ticketItem2等...) - 这里明显的缺点是,如果客户只订购了一个产品,我剩下19个空格。

什么类型的问题(如果有的话)通常与数据库中有很多NULL值有关?有没有办法帮助防止它们发生?是否有任何建议可以帮助解决这个问题?

此外,最后 - 订购的每件商品(让我们再次使用苹果)都有自己的UNIQUE条形码。因此,一个苹果可能编号为0001,另一个可能是4524 ......

感谢您提供任何帮助。

-CS

3 个答案:

答案 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可能是一个解决方案。然而,一个主要缺点是搜索变得非常困难。