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