私は年齢、性別、趣味などの20以上の属性を持つ各ユーザーが独自のプロファイルを持っている出会い系サイトを持っています。このために、すべての属性が1行にあるuser_profileテーブルがあります。ユーザー属性の値は、dbテーブル - intまたはvarchar?
検索と計算の計算では、属性値をintにする方がよいでしょう。これは、varcharで行うよりもよいでしょう。しかし、名前が値でない場合、すべての属性名をどのように表示するかはわかりません。
user_profile user_id | gendre | like_pets | drinks | body_type | eyes | hair_color | ... 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個のクエリを作成する必要があることを意味:
は、だから私は2つのテーブルを作成することを考えていました。目の色を印刷するたとえば、私は性別のため、お互い属性に同じ再びSELECT * FROM user_attributes WHERE attr_group=3
が必要になります。
これは正しい方法ですか?
おそらくあなたは自分の投稿を慎重に読まなかったでしょう。私は列を使用しますが、列ではint値を使用します。だから私は各列の値の値の名前を印刷するために余分なテーブルが必要です。だから "1"は "煙を出さない"に、 "2"は "煙を出す"になります。 varcharを使用するよりも高速です。 – user1324762