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