私は、各ユーザーが年齢、性別、趣味などの 20 を超える属性を持つ独自のプロファイルを持つ出会い系サイトを持っています。このために、すべての属性が 1 行にあるテーブル user_profile があります。
検索および一致計算の場合、属性値を varchar にするよりも int にする方がよいでしょう。しかし、名前も値ではない場合、すべての属性名を出力する方法がわかりません。
だから私は2つのテーブルを作成することを考えていました:
ユーザープロファイル ユーザー ID | 性別 | 好きなペット | ドリンク | ボディタイプ | 目 | 髪の色 | ... 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
次に、性別、および他の各属性についても同じです。
これは正しい方法ですか?