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

时间:2015-04-21 00:28:15

标签: mysql sql database database-design entity-attribute-value

我正在使用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模型?

谢谢!

0 个答案:

没有答案