用户设置,使用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