在数据库中存储用户设置的最佳方法是什么(PostgreSQL)?
选项1:
id serial
user_id int
key varchar
value varchar
选项2:
id serial
user_id int
data_type regtype
key varchar
value_bool boolean
value_int int
value_string varchar
选项3: 没有一个人。
答案 0 :(得分:1)
从"应用程序读入数据"的角度来看,我投票支持选项1;应用程序通常知道密钥并知道相应的数据类型;然后将值分成不同的列可能会使读取/写入数据库的方式变得复杂。
从以不仅仅检索具有特定id的完整用户记录的方式查询数据的角度来看,我投票选择选项2.这是因为值的条件需要选项1中的数据转换,但不是在选项2中。因此,查询可能变得更容易。
无论如何,如果只是存储和检索完整的用户记录,并且您从不或很少查询用户的值,也可以考虑将它们存储为DB中的json或xml。
答案 1 :(得分:1)
如果您对使用以下任何字段进行查询不感兴趣:
然后我建议您选择选项3:使用JSON / JSONB将其存储为数据库中的对象。
它不仅可以让您灵活地在以后添加更多字段,而且还不会限制数据类型。
在某些情况下,这可以派上用场。