【发布时间】:2013-11-26 21:10:24
【问题描述】:
我想知道将对象作为序列化数据(例如 json)存储在关系数据库中是否是一种好习惯。我知道这通常是一件坏事,而且我不打算广泛使用它,但我偶然发现了一个让我思考的案例。
所以,这是我的情况。我基本上是在构建一个移动订购系统,用于将物品从 A 点运送到 B 点。A 是起始地址,B 是目的地......两者都是用户的当前 GPS 坐标(以及街道名称、街道号码等可读数据) .
这些是要求:
- 每个订单都有一个起始地址
- 目标地址是可选的
- 一旦创建订单和地址,地址将永远不会更新
- 每个订单都会存储一组新的地址,这意味着如果有更多来自同一地址的订单,之前保存的地址将不会被重复使用
- 我不需要对地址数据进行任何查询,例如过滤、排序...
- 地址数据的结构(如果已修复)。我知道这就是序列化的优势所在,但我肯定不需要它。
那么,难题是是使用单独的表格存储地址数据(列:id、街道、街道编号、lat、lng...),还是简单地将地址存储为 JSON 字符串?
我看到,JSON 的唯一缺点是数据必须被序列化/反序列化。由于它只有几个字段,因此不会有太大的不同。
另一方面,我不喜欢单独的表格:
- 它可能有数百万行仅用于显示目的
- 如果所有内容都在一个表中,则更容易监控数据
- 无论在何处显示有关订单的信息,都需要数据,所以我需要一直加入这两个表
- 极不可能,但理论上,我可能会用完自动递增的 ID
我想我用标准的关系方法并将地址存储在单独的表中不会出错,但我看不出它有什么真正的优势。
【问题讨论】:
标签: mysql database json database-design serialization