我有一个约会网站,每个用户都有自己的个人资料,其中包含 20 多个属性,如年龄、性别、爱好等。为此,我有一个表 user_profile,其中所有属性都在 1 行中。
对于搜索和匹配计算器,将属性值放在 int 中可能比在 varchar 中更好。但是现在我不确定如果 name 不是一个值,如何打印所有属性名称。
所以我想创建两个表:
用户资料 用户 ID | 性别 | 喜欢宠物 | 饮料| 身体类型 | 眼睛| 高分辨率照片| CLIPARTO 头发颜色 | ... 1 | 1 | 3 | 2 | 4 | 5 | 5 | ... 2 | 2 | 4 | 2 | 3 | 3 | 5 | ...
user_attributes
id | attr_group | value_name | attr_value
1 | 1 | male | 1
2 | 1 | famale | 2
3 | 2 | Like pets | 1
4 | 2 | Have pets | 2
5 | 2 | Don't like pets | 3
6 | 3 | Blue | 1
7 | 3 | Gray | 2
8 | 3 | Green | 3
9 | 3 | Brown | 4
...
但这意味着我需要创建 20 个查询来打印所有属性的所有值名称。例如要打印我需要的眼睛颜色
SELECT * FROM user_attributes WHERE attr_group=3
然后对于性别和彼此的属性再次相同。
这是正确的方法吗?