我想创建一个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表示:
[
{ "field": "year", "value": 2016 }
]
这给出了应该更改哪些特定字段的非常清晰的描述。
以JSON格式存储原始数据对我来说有点奇怪,但这也许是一个有效的用例吗?