我应该将产品列表存储到MySQL中具有数组的用户吗?

时间:2016-10-25 07:38:39

标签: php mysql arrays

好吧,当我需要将这些列表链接到ID或类似内容时,我的生活中存在一个关于如何存储产品列表的巨大困境。
对于第一个例子,我将使用用户购物车。

我一直都在使用它,甚至从不喜欢它:

ID  |  PRODUCT
12  |  Ring
12  |  Necklace
12  |  Bracelet

但最近我一直在思考MySQL中的商店数组。虽然这听起来是个好主意(在第一个视图中),通过使用数组,我只能通过PHP管理购物车,通过创建某种控制面板或其他东西。

不幸的是,它有一个骗局。虽然整个系统占用的空间比其他方式少,但我无法通过MySQL本身处理事情。比如,如果有人下订单,我将无法SUM价格*数量来获得订单价值。

最好的方法是什么?还有另一种方式吗?

3 个答案:

答案 0 :(得分:0)

如果您需要对元素进行此操作:

  • 搜索
  • 排序
  • 过滤元素
  • 汇总功能

我建议您将元素存储在不同的行中。通过这种方式,您可以对“您的阵列”中的元素进行完全控制

答案 1 :(得分:0)

只要您在MySQL中存储非结构化信息,您就会失去使用关系数据库的大部分好处,而您只有一个过度设计的文件系统(这是真的,优秀的多用户功能)。如果您不熟悉SQL(我怀疑是这种情况),您最初会认为您正在加速开发。但是有一天,如果商店有望增长,你会发现为进一步的PHP后期处理检索所有内容并不能很好地扩展。

如果您有一个高并发站点,将某些功能(不是完整的应用程序)外包到nosql数据库当然是有意义的,如果您使用关系数据库,最好使用它,因为它意味着要使用它:有正确的结构化和规范化的信息。

答案 2 :(得分:0)

  

我无法通过MySQL本身处理事情。比如,如果有人下订单,我就无法按价格*数量来获得订单价值。

您似乎明白为什么您的阵列'想法不是一个好主意:)

考虑到XML(或JSON或类似的)是由于分布式系统断开连接而发明的。可以存储这样的复杂的'数据库中的值,如果DBMS支持XML作为数据类型,则更好。

但是,如果您需要查询'复杂'在DBMS中你应该寻找对这些数据类型的一流支持。例如,大多数SQL DBMS都支持timestamp / datetime临时类型:能够声明该类型的列并比较该类型的两个值是一回事,但您真正需要的是例如,时间函数获得时间颗粒(年,日等),格式(工作日等),支持UTC和时区等。

对于您的阵列'我猜你自己需要处理序列化和存储,加上所有这些需要,例如:转换为分隔字符串,转义分隔字符,并存储在文本列中。完成这项工作后,您将无法在DBMS方面获得支持。