在数据库中存储用户设置

时间:2017-01-14 17:57:57

标签: sql database postgresql database-design

在数据库中存储用户设置的最佳方法是什么(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: 没有一个人。

2 个答案:

答案 0 :(得分:1)

从"应用程序读入数据"的角度来看,我投票支持选项1;应用程序通常知道密钥并知道相应的数据类型;然后将值分成不同的列可能会使读取/写入数据库的方式变得复杂。

从以不仅仅检索具有特定id的完整用户记录的方式查询数据的角度来看,我投票选择选项2.这是因为值的条件需要选项1中的数据转换,但不是在选项2中。因此,查询可能变得更容易。

无论如何,如果只是存储和检索完整的用户记录,并且您从不或很少查询用户的值,也可以考虑将它们存储为DB中的json或xml。

答案 1 :(得分:1)

如果您对使用以下任何字段进行查询不感兴趣:

  • DATA_TYPE
  • value_bool
  • value_int
  • VALUE_STRING

然后我建议您选择选项3:使用JSON / JSONB将其存储为数据库中的对象。

它不仅可以让您灵活地在以后添加更多字段,而且还不会限制数据类型。

在某些情况下,这可以派上用场。