Frage

Wenn ich zwei Tabellen - Logins und Benutzer wie folgt:

Logins
 LoginIdNo
 UserIdNo
 HashedPassword 

Users
 UserIdNo
 LoginIdNo
 Username

Jede Login „einen Benutzer“ und jeder Benutzer „hat einen Login“, aber die „gehört“ das?

Ist es einfach ein Urteil Anruf oder gibt es eine clearcut Formel zur Bestimmung, wo der Fremdschlüssel sollte residieren?

War es hilfreich?

Lösung

Dies ist eine Eins-zu-Eins-Beziehung. Wo Sie die Fremdschlüssel setzen wahrscheinlich von Optionalität in diesen Fällen entschieden wird.

Gibt es einen besonderen Grund, warum Sie diese in zwei Einheiten aufgeteilt haben? Ich bin kein großer Fan von eins-zu-eins-Zuordnungen, insbesondere auf ORMs wie JPA, wo sie umständlich sind, zu implementieren (wenn Sie den Primärschlüssel von einem als Fremdschlüssel zu einem anderen verwendet werden).

Was, in Ihrem System, ist der Unterschied zwischen einer Anmeldung und einem Nutzer?

Wenn Anmeldung ist, um jedes Mal, wenn ein Benutzer-Logins in vorkommen (dh es ist ein Audit-Trail der Benutzeraktivität), dann haben Sie eine Eins-zu-viele-Beziehung zwischen Benutzern und Anmeldung und Anmeldung sollen eine Benutzer-ID Fremdschlüssel verwenden.

Aber in diesem Fall, in dem der Benutzername in einer Tabelle und das Kennwort in einer anderen und es gibt eine Eins-zu-Eins-Beziehung betwene den beide muss man sich fragen, warum sie getrennt sind.

Andere Tipps

Da eine Anmeldung wird nie mit mehr als einem Nutzer (und umgekehrt) in Verbindung gebracht wird, ist es eine willkürliche Entscheidung, wie Sie die Beziehung definieren (und somit in dem Sie den Fremdschlüssel setzen). Es sei denn, Sie auch andere Attribute (Firleds) oder verwenden Sie Rollen hinzufügen wollen, könnte es einfacher sein, einfach es zu definieren wie folgt:

Users 
    UserIdNo 
    Username
    HashedPassword
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top