2017-05-19 8 views
0

私は自分のアプリケーションのユーザー用にデータベーススキーマを構築していますが、ユーザータイプに応じてuserid値を設定しようと考えています。だから、 バイヤー:10001 19999への売り手:20001 29999への荷主:30001次 範囲をuseridに割り当てるのは良い方法ですか?

39999に、私はユーザーIDに一意の電子メールアドレスを割り当てる: Login_table

メール.......パスワード.......ユーザーID

[email protected] .......パスワード....... 10005 --->このメールは、ユーザー10005に属している(買い手)

[email protected] .......パスワード....... 20008 --->このメールはユーザー20008に属します

[email protected] .......パスワード....... 30187 --->このメールは、ユーザー30187(荷主)

に属している私は、バイヤーのための3つのテーブルを持っています、

buyer_table

buyerid .......名.......母

10005 .......ジョン:売り手、及び荷主は、それぞれ異なる属性を持っている可能性があるため、 .......メアリー

10006 .......クリス.......ナンシー

seller_table

sellerid .......名.......ペット

20008 .......アダム.......犬

20018 .......トニー.......猫

shipper_table

shipperid .......名.......車

30187 .......ジョージ....... GMC

30188 .......ラリー.......ホンダ

ここでの利点は、私が持っているということですすべてのユーザータイプに対して1つのlogin_table。私は各タイプごとに3つのログインテーブルを持つことは望ましくありません。ユーザーIDの値に基づいて、ユーザーのタイプがわかります。各ユーザー(buyer_table、seller_table、およびshipper_table)ごとに3つのテーブルを保持することは、各ユーザータイプに異なる属性を割り当てることができるだけでなく、スキーマを理解しやすくするためにも有効です。 いいですか?多分。

しかし、私はlogin_tableが "userid"を参照するという点で問題がありますが、3つのユーザーテーブルはそれぞれユーザーのID名が異なるため、buyer_tableではbuyeridがプライマリキーとして、seller_tableでは主キーとしてのsellerid、そして最後にshipper_tableで、shipperidが主キーです。
これらの3つの主キーをlogin_tableにリンクするにはどうすればよいですか? login_tableは、これらの3つのテーブルのいずれかへの外部キーとしてuseridを持っていますが、buyerid、またはsellerid、またはshipperidではなく、「userid」と呼ばれています。

1)範囲に応じてユーザーIDの値を分類することをお勧めしますか?

2)上記のようにPK-FKの問題を解決するにはどうすればよいですか?

3)私は完全にオフですか?

+0

私はこれを何度も見ました。私の経験はあなたがこれを後悔することを示唆しています。あなたが想像するよりも早く。 –

答えて

0

類似したオブジェクトの異なる種類の値の範囲は悪くありません。そのように感じる場合は、値の範囲をサポートするシーケンスを使用できます。このようにして、0-1000の買い手順序、1001から2000までの売り手順序などを持つことができます。それはまた、さまざまな種類の増加する指標を把握するのに役立ちます!

関連する問題