【发布时间】:2021-08-16 03:01:16
【问题描述】:
我有一个设计问题,我知道 JSON 是最佳选择,但仍面临实施问题。
要求:
我需要存储业务实体信息。属性有(registration_NO(主键)、地址、电话号码(多个电话号码)、董事(多人)等。 由于registration_number和(电话号码,董事)之间是一对多的关系,我决定使用jsonb数据类型。
有两个条件。
- 电话号码、董事可以添加、删除等。
- 对记录的任何新更改都需要批准。在获得批准之前,将显示旧值。
我面临的问题: 比如说: 当前记录:Regno:directors,record_status(故意没有显示电话号码)
100: {John, Joe}, current; ok to display
当我添加新董事时,此条目必须是注册的新分支#主键状态为“尚未批准”,因此不应出现在查询中。
100: {john, joe, jane}, updated; not yet approved.
但是,当我更新该行时,directors 的旧值被覆盖。 当我插入状态为“更新;尚未批准”时,它会插入重复的注册记录#。
理想情况下,我希望有 2 个分支进行注册# 100 ;一个获准展示,一个未获批准展示。
我应该如何处理这个问题?任何帮助表示赞赏。
【问题讨论】:
-
旁注:架构对我来说看起来很静态。所以 JSON 不是“最好的选择”。您应该考虑不要滥用 JSON,而是使用关系方式,例如(查找和/或链接)表和列。
-
Blue Star 和 Sticky bit 绝对正确:不要存储 JSON。进程之间的通信很好,但存储很糟糕。将您的数据标准化存储,然后如果需要,您可以导出为 JSON。请参阅 JSON Functions and Operators 上的 Postgres 文档。
标签: json postgresql