2011-11-26 65 views
0

用戶的帳戶設置可能相當長,具體取決於您希望得到多少詳細信息(例如接收新聞簡報TINYINT(1),允許搜索TINYINT(1)等)。我想知道這樣做的最佳方式是什麼,因爲現在所有這些設置都放在我的用戶表中,該用戶表已經有大約30列,並且可能會很快增長。MySQL:設計用戶的帳戶設置表

回答

0

您可以考慮使用set數據類型: - http://dev.mysql.com/doc/refman/5.0/en/set.html

profile set ('newsletter', 'searchable', ....) 

做查詢時,這將是: -

select ... from user 
where find_in_set('searchable', profile)>0 and ... 

或者,您可以創建一個配置文件表正常化的每個配置文件成爲一個記錄

user (id, ...); 
user_profile (user_id, profile_id, profile_value); 
profile (id, name); 

搜索: -

select ... from user 
inner join user_profile on user.id=user_profile.user_id 
inner join profile on profile.id=user_profile.profile_id 
where profile.name='searchable' and user_profile.profile_value=1 ... 
+0

您的意思是使用多對多關係。聽起來不錯。 – enchance