2009-04-15 8 views
0

Ich versuche, die Datenbank hinter der Website meines Unternehmens zu sortieren.RDBMS Key Confusion

Wir beschäftigen uns mit Websites und Residents. Im Moment ist die Site-Referenz als Fremdschlüssel in der Residents-Tabelle enthalten, aber natürlich nur in 1NF.

Die Site-Referenzen haben die Form nnnnn (zum Beispiel 12345). Jeder Bewohner hat seine eigene Referenz innerhalb der Site des Formulars nnn (beginnend bei 001 bis endend bei maximal 999).

Das Problem ist, wenn ich es 2NF nehmen:

Website (Referenz, Name Charge)

Residency (SiteReference, ResidentReference,)

Einwohner (Referenz, Adresse, Benutzername, Passwort)

Der Resident Reference wi Ich werde niemals einen Bewohner eindeutig identifizieren, wenn es 2 Standorte gibt, dann wird es 2 001s geben. Ich kann den Benutzernamen nicht verwenden, da dieses Feld nur einmal (und wenn!) Für den Webservice registriert wurde. Ich würde einfach eine neue Nummer für die automatische Nummerierung der Bewohner einführen, aber da ist etwas, das mich nervt, dass es eine elegantere Lösung gibt. Kann jemand vorschlagen, was es ist?

+0

Bitte erläutern 1NF und 2NF – norbertB

+0

Siehe http://en.wikipedia.org/wiki/Database_normalization – Leonidas

Antwort

1

Sie müssen die residente Referenz von der Site "befreien" - z. Machen Sie es zu einer ResidentID und stellen Sie sicher, dass jede ResidentID in der Resident-Tabelle global eindeutig ist. Jede Site muss außerdem eine global eindeutige SiteID in der Site-Tabelle enthalten.

Dann und nur dann können Sie ein gutes DB-Schema erstellen.

Die Residency-Tabelle stellt die Verbindung zwischen den Residenten (identifiziert durch ihre ResidentID) und den Sites (wiederum - eindeutig durch ihre SiteID identifiziert) her.

Marc

+0

Das ist, was ich dachte. Danke für die Bestätigung. – Bailz