Ich erstelle eine Site ( "The Site" ) und überlege, wie ich das DB-Schema dafür entwerfen soll.
Ich habe einige Szenarien, die sich auf das Ergebnis auswirken:
- Der Benutzer kann ein natives Konto auf der Site registrieren , wodurch er dieses Konto künftig für die Anmeldung bei seinem Konto auf der Site verwendet .
- Der Benutzer kann sich über eine andere Site ( "externe Site" ) (wie Facebook Connect, Google, Foursquare usw.) anmelden. Dadurch kann er sich künftig in seinem Konto auf der Site anmelden .
- Unabhängig davon, welche Anmeldemethode er gewählt hat (natives Konto oder externes Site-Konto), kann der Benutzer sein Konto auf der Site mit externen Sites (wie Facebook, Twitter, Instagram usw.) für die Verwendung authentifizieren die Daten, die er auf der externen Website hat (wie seine Tweets von Twitter, seine Fotos von flickr usw.), auf der Website .
Wie soll ich das Schema der DB entwerfen?
In den ersten beiden Szenarien dachte ich daran, eine Tabelle Users
mit einem id
und einem type
Feld zu haben. Die Typenbezeichnung eine andere Tabelle, wie FacebookUsers
oder GoogleUsers
, die jeweils eine hat user_id
Feld - , die ein fremdes Verhältnis zum hat Users.id
Feld - und andere Bereiche , wie beispielsweise die first_name
, profile_picture
usw ..
Jedoch:
- Ich bin mir nicht sicher, wie klug es ist, diesen Ansatz zu verwenden.
- Ich weiß nicht, wie ich das dritte Szenario in einem solchen Ansatz implementieren soll.
best-practices
schema
Doron
quelle
quelle
Antworten:
Es gibt eine ähnliche Frage im Stapelüberlauf
Und die Lösung ist
quelle