用户设置,使用EAV模式或仅添加列

我正在使用MySQL数据库。

我有一个用户可以拥有很多属性,我称之为设置。 每个用户具有完全相同的50个设置。 系统中可能永远不会超过2000个用户。

我可以用两种方法处理这个问题:为每个选项添加一列,或使用EAV(实体属性值)模型。 用户应该可以通过其任何设置进行搜索。


仅添加列将如下所示:

id | name | pass   | color | beta  | .. 
----------------------------------------
1  | bob  | 94jf8d | red   | true  | ..
3  | sue  | fja928 | pink  | false | ..

使用EAV模型将如下所示:

用户

id | name | pass
------------------
1  | bob  | 94jf8d
3  | sue  | fja928

设置

id | key   | default_value
--------------------------
1  | color | red
2  | beta  | false
.. | ..    | ..

user_setting

id | user_id | setting_id | value
---------------------------------
1  | 1       | 1          | pink
2  | 1       | 2          | true
3  | 2       | 1          | green
4  | 2       | 2          | false
.. | ..      | ..         | ..

我意识到EAV增加了一整层的复杂性。 这包括必须处理多个连接以进行过滤。 将50列添加到用户表似乎很肮脏。

最后,你认为我更擅长添加列,还是转向EAV模型?

谢谢!

链接地址: http://www.djcxy.com/p/68637.html

上一篇: User settings, use EAV pattern or just add columns

下一篇: alter table add MULTIPLE columns AFTER column1