2017-08-04 10 views
0

私は現在2種類のユーザーがいるプロジェクトに取り組んでいます。さまざまな種類のユーザーテーブルの主キーを処理する方法は?

私はUser_ID、user_nameなどの一般的なUsersテーブルを持っています。両方のユーザーが同じようなデータを持っています。

私はオンラインで見て、共通の2つのテーブルを作成し、これらのテーブルの違いがあることがわかりました。

私は2つのテーブル(AとB)を持っているので、私の2番目のデータベースを持っている私のプライマリキーは私のUser_IDと同じにすることはできません。ユーザー1がアカウントAを作成した場合は一致しますが、ユーザー2がアカウントBを作成した場合、User_IDは2ですが、テーブルの主キーは1になります。

プライマリキーを手動user_IDとして?またはこれを処理する最善の方法は何ですか?

+1

「一般ユーザー」テーブルがあります。 。 。他に何がありますか? 'A'とは何ですか? 'B'とは何ですか? 「アカウントA」とは何ですか? 「アカウントB」?サンプルデータは実際にあなたがしようとしていることを伝えるのに役立ちます。 –

+0

表Bは、表Aの外部キーを持つ必要があります。これはマスター・ユーザー表にする必要があります。 – EJP

+0

すべてのユーザーに対して1つのテーブルを持たず、目的のために追加されたフィールドの値(たとえば、ユーザータイプの列挙型など)で区別するのはなぜでしょうか。 – RichGoldMD

答えて

1

私はオンラインで見て、共通の2つのテーブルを作成し、これらのテーブルの違いがあることがわかりました。

私は驚いています。これは正規化されたスキーマではありません。完全に正常化するとのテーブルがあります:ユーザーIDテーブル、および電話 - を

は、私はあなただけNULL可能列を持つ単一のテーブルを持っているか、あるいはthis answer hereあたりとして、または他の(狂った)全体の豚を行くべきだと思いますno +アドレステーブルと電子メールテーブル、どちらもUserID外部キーを使用していますが、これは明らかに重大な過度の攻撃です。セカンダリテーブルを使用する場合は、UserIDテーブルからUserIDの結合を行うだけです。

新しいユーザーIDをどちらにも挿入できる2つの等価なユーザーテーブルはありません。それは正規化されていません。

関連する問題