2017-05-19 4 views
0

Ich erstelle ein Datenbankschema für Benutzer meiner App, und ich denke, den Benutzer-ID-Wert nach Benutzertyp festzulegen. Also, Käufer: 10.001-19.999 Verkäufer: 20.001-29.999 Versendern: 30.001-39.999Ist es eine gute Übung, der Benutzer-ID Bereiche zuzuweisen?

Als Nächstes weisen ich eindeutige E-Mail-Adressen an die Benutzer-ID: Login_table

Email ....... Passwort ....... Benutzer-ID

[email protected] ....... Passwort ....... 10005 ---> diese E-Mail an Benutzer gehören 10005 (ein Käufer)

[email protected] ....... passwort ....... 20008 ---> diese email gehört dem benutzer 20008 (ein verkäufer)

[email protected] ....... Passwort ....... 30187 ---> Diese E-Mail gehört Benutzer 30.187 (a Versender)

ich dann 3 Tabellen für Käufer haben, Verkäufer und Spediteure, weil jeder kann verschiedene Attribute haben:

buyer_table

buyerid ....... Name ....... Mutter

10005 ....... John ....... Mary

10006 ....... Chris ....... Nancy

seller_table

SellerID ....... Name ....... pet

20008 ....... Adam ....... Hund

20018 ....... Tony ....... Katze

shipper_table

ShipperID ....... Name ....... Auto

30187 ....... George ....... GMC

30188 ....... Larry ....... Honda

Der Vorteil hier ist, dass ich Eine einzige login_table für alle Benutzertypen. Ich möchte nicht 3 Login-Tabellen für jeden Typ haben. Basierend auf dem Benutzer-ID-Wert weiß ich, um welche Art von Benutzer es sich handelt. Wenn Sie drei Tabellen für jeden Benutzer (buyer_table, seller_table und shipper_table) aufbewahren, können Sie das Schema leichter verständlich machen und jedem Benutzertyp unterschiedliche Attribute zuweisen. Klingt gut? Könnte sein.

Allerdings habe ich ein Problem, dass die login_table bezieht sich auf "Benutzer-ID" während die drei Benutzer Tabellen jeweils einen anderen ID-Namen für den Benutzer, so in der Buyer_table Ich habe Käuferseite als Primärschlüssel, in der seller_table es ist Sellerid als Primärschlüssel und schließlich in der shipper_table ist der Shipperid der Primärschlüssel.
Wie kann ich diese drei Primärschlüssel mit der login_table verknüpfen? Die login_table hat Benutzer-ID als Fremdschlüssel für eine dieser drei Tabellen, aber sie heißt "Benutzer-ID", nicht "Käufer-ID", "Verkäufer-ID" oder "Absender-ID".

1) Ist es eine gute Idee, den Benutzer-ID-Wert nach Bereichen zu klassifizieren?

2) Wenn ja, wie kann ich das PK-FK Problem beheben, wie oben beschrieben?

3) Bin ich völlig aus?

+0

Ich habe das schon oft gesehen. Meine Erfahrung zeigt, dass Sie das bereuen werden. Früher als du dir das vorstellst. –

Antwort

0

Wertebereiche für verschiedene Arten von ähnlichen Objekten zu haben, ist nicht schlecht. Wenn Ihnen danach ist, könnten Sie Sequenzen verwenden, die Wertebereiche unterstützen. Auf diese Weise könnten Sie eine Käufer-Sequenz haben, die von 0-1000 geht, eine Verkäufer-Sequenz von 1001 bis 2000 und so weiter. Das würde Ihnen auch helfen, den zunehmenden Index der verschiedenen Arten im Auge zu behalten!

Verwandte Themen