2011-07-22 4 views
1

私はStackoverflow'sに似た認証システムを作りたいと思います。このシナリオで1:1オプションデータをモデル化する最良の方法は何ですか?

ユーザーは、自分のサイトのアカウントで作成/ログインすることも、さまざまなプロバイダからopenidを使用して作成/ログインすることもできます。このスキーマでの問題は、電子メール/パスワードが私のサイトのアカウントに対してのみであるということです

Table: users 
==================== 

id 
email 
password 
date_created 

Table: users_openids 
==================== 

id 
user_id 
openid_url 

典型的なスキーマは次のようになります。

私はこれを行う最適な方法の下で提案しているスキーマはありますか?

Table: users 
==================== 
id 
account_type_id 
date_created 

Table: account_types 
==================== 
id 
account (enum('mine','openid')) 

Table: users_openids 
==================== 
id 
account_type_id 
user_id 
openid_url 

Table: user_mine 
==================== 
id 
account_type_id 
user_id 
username 
password 

Table: user_attributes 
==================== 
id 
user_id 
email 
nickname 
full_name 
dob 
gender 

私にはちょっと変わったようですが、どのような思考/批判/最適化/推奨事項も高く評価されます。

答えて

1

オプションのデータは、親表のNULL可能フィールドとして存在することも、複数の列が一緒にオプションである場合は、親表を参照する外部キーでもある2次表を作成する必要があります。

関連する問題