如何表示数据库行的建议更改?

时间:2019-01-10 01:03:07

标签: database database-design

我想创建一个Web应用程序,该应用程序允许用户保留音乐专辑的数据库,并建议对该数据库进行更改。

我想知道什么是代表对数据库行的建议更改的好方法。

所以,我可能有一个数据库架构:

CREATE TABLE albums (
  id PRIMARY SERIAL,
  name TEXT,
  year INTEGER
);

其中包括音乐唱片:

id: 3
name: Lemonade
year: 2015

有人注意到碧昂斯的柠檬水实际上是在2016年问世的,所以他们会建议编辑:

  

将专辑ID 3的更改年份更改为2016

这是我考虑过的一些实现方式

存储在另一个表中

我考虑过一种实现,其中有一个辅助表来保存建议的更新:

CREATE TABLE album_suggested_changes (
  id PRIMARY SERIAL,
  album_id INTEGER REFERENCES(albums),
  name TEXT,
  year INTEGER
);

因此,先前建议的更改可能在此表中显示为一行:

 ----------------------
| id | album_id | year | 
------------------------
|  1 |        3 | null |
 ----------------------
该表中的

null列可能表示不会被修改的字段。但是,这是一个有问题的方案。如果您建议将字段设置为null怎么办?也许这里可以使用另一个特殊值来表示“请勿修改”。

存储为JSON

也许建议的更改可以用JSON表示:

[
  { "field": "year", "value": 2016 }
]

这给出了应该更改哪些特定字段的非常清晰的描述。

以JSON格式存储原始数据对我来说有点奇怪,但这也许是一个有效的用例吗?

0 个答案:

没有答案