我的MySQL数据库上有一个"ticket"表。
我需要存储8个价格值。(例如:总价、折扣价等)
我应该:
- 为每个价格值创建一个新列
- 将值存储在序列化数组中
永远不要在数据库中存储序列化的数据。大多数情况下,由于查询引擎中不存在非序列化功能,这是一件令人头疼的事情。正因为如此,你将无法:
- 更改它
- 搜索它
- 查阅
如果你想使用关系数据库来存储多个/可变数量的价格,比如你谈到的8个项目,但可以有16个、32个甚至64个,那么你必须使用一个自适应结构,将每个价格存储在一个类似键/值的表中,该表引用了你以前的父项目。这样,你可以有很多价格,但实际上没有定义的结构,这是一种高度规范化的方法,通常可以解决手头的问题,但不能提供很好的性能或可扩展性!
如果你真的想要一个伸缩性好的自适应结构,可以考虑像MongoDB这样的无sql方法!
每个价格一列,您可以直接从查询进行查询、计算等
想象一下,你想要所有折扣价>X的产品,你可以用这样的查询来实现
SELECT * FROM products WHERE discount_price > X
如果将它们序列化在一列上,则需要获取所有产品,解析它们并检查值