创建多个价格列或将其全部序列化


Create a multiple price columns or serialize them all

我的MySQL数据库上有一个"ticket"表。

我需要存储8个价格值。(例如:总价、折扣价等)

我应该:

  1. 为每个价格值创建一个新列
  2. 将值存储在序列化数组中

永远不要在数据库中存储序列化的数据。大多数情况下,由于查询引擎中不存在非序列化功能,这是一件令人头疼的事情。正因为如此,你将无法:

  • 更改它
  • 搜索它
  • 查阅

如果你想使用关系数据库来存储多个/可变数量的价格,比如你谈到的8个项目,但可以有16个、32个甚至64个,那么你必须使用一个自适应结构,将每个价格存储在一个类似键/值的表中,该表引用了你以前的父项目。这样,你可以有很多价格,但实际上没有定义的结构,这是一种高度规范化的方法,通常可以解决手头的问题,但不能提供很好的性能或可扩展性!

如果你真的想要一个伸缩性好的自适应结构,可以考虑像MongoDB这样的无sql方法!

每个价格一列,您可以直接从查询进行查询、计算等

想象一下,你想要所有折扣价>X的产品,你可以用这样的查询来实现

SELECT * FROM products WHERE discount_price > X

如果将它们序列化在一列上,则需要获取所有产品,解析它们并检查值