3

ユーザーが自分の Web サイトでアカウントを作成する方法は 2 つあります。

を。通常の登録フォーム (電子メール、パスワード) b. Facebook Connect 経由の登録 (fb_userid、email)

MySQL (InnoDB エンジン) を使用してこれを実装するベスト プラクティスはどれですか?

私のアプローチ:

[USER]
user_id
user_type (normal/facebook)

[USER_NORMAL]
user_normal_id
user_id
email
password

[USER_FACEBOOK]
user_facebook_id
user_id
email
fb_userid

何を指示してるんですか?

4

5 に答える 5

4

この単一のテーブルはより単純になります (私の意見では):

ユーザー(user_id、user_email、user_password、user_fbid)

「タイプ」は必要ありません。a を使用して、それが「通常の」アカウントかどうか、そうでない場合はFacebook アカウントCASEかどうかを判断できるからです。user_fbidNULLuser_passwordNULL

于 2012-11-16T20:46:21.840 に答える
3

私は2つのテーブルを持っています。

1 つのテーブルには、基本的なユーザー情報が含まれている必要があります。

ユーザー(user_id、user_email、user_password)

もう 1 つのテーブルは一般的なもので、サード パーティのアカウントをこれらのユーザーにリンクする必要があります。例:

user_ext (タイプ、user_id、uid)

type フィールドには、サービスのタイプ (この場合は Facebook) と、サービスの一意の識別子 (この場合は Facebook ユーザー ID) を含める必要があります。次に、user_id にリンクする必要があります。

この戦略により、ユーザーが将来的に認証できるサービスを追加できます。

于 2012-11-16T20:51:49.080 に答える
1

すべてを 1 つのテーブルにまとめ、Facebook ID を持っているかどうかで区別します。

于 2012-11-16T20:47:23.013 に答える
0

それらが唯一のフィールドである場合、すべてのフィールドを 1 つのテーブルに配置し、必要に応じて NULL を設定するのがおそらく最も簡単です。

ただし、正規化された設計が必要な場合は、次のようになります。

[USER]
user_id (PK)
email
(Other fields common to both)

[USER_NORMAL]
user_id (PK, FK to USER.user_id)
password
(Other fields specific to 'normal')

[USER_FACEBOOK]
user_id (PK, FK to USER.user_id)
fb_userid
(Other fields specific to FB)

「パスワード」が「通常の」ユーザーに固有の唯一のフィールドであり、FB ユーザーに固有のフィールドが多数ある場合、妥協点は 2 つのテーブルを持つことです: USER (上記のように「パスワード」を含む) と USER_FACEBOOK

于 2012-11-16T20:49:01.457 に答える
0

おそらく、すべてのユーザーを 1 つのテーブルに保持することをお勧めします。そのユーザーのタイプにそのフィールドがない場合は、null のフィールドを持つことができます。たとえば、ユーザーが通常の場合、fb_userid は null になる可能性があります。

[USER]
user_id
user_type (normal/facebook)
email
password    
fb_userid (can be null: yess)
于 2012-11-16T20:46:27.690 に答える