2016-04-27 12 views
2

schnelle Frage.Adressen in einer Datenbank gespeichert sollten Sie normalisieren?

betrachten die folgende Tabelle (UK):

  • CustomerID (PK)
  • Vorname
  • Nachname
  • House_No/name
  • Straße
  • Stadt
  • Postleitzahl

Möchten Sie die Adresse in eine andere Tabelle aufteilen? Grundlegende Geschäftsannahme ist, dass ein Kunde nicht mehr als eine Adresse haben kann.

ursprünglich getrennt ich dies aus so etwas wie folgt aussehen:

Kunden Tabelle

  • CustomerID (PK)
  • Vorname
  • Name
  • AddressID (FK)

Adresstabelle

  • AddressID (PK)
  • Postleitzahl (FK)
  • House_Number_name

Postleitzahl Tabelle:

  • Postleitzahl (PK)
  • Street
  • CityID (FK)

Stadt Tabelle

  • CityID (PK)
  • Cityname

es sei denn, ich meine Annahmen falsch haben, dass eine Postleitzahl identifiziert eindeutig eine Strasse- und Stadt ist dies nicht in 3NF?

+2

MySQL und MS-Zugang? Markieren Sie keine nicht betroffenen Produkte. – jarlh

+0

Für welches Land ist das gedacht? Zumindest in den USA gibt die Postleitzahl keine Straße oder gar eine Stadt an. Ich kann jedoch anderer Länder nicht sicher sein. –

+0

Hallo Kumpel, das ist für UK. – satkin859

Antwort

0

Grundlegende Geschäftsannahme ist, dass ein Kunde nicht mehr als eine Adresse haben kann.

Wenn dies eine tatsächliche Regel und keine Annahme ist, würde ich sie nur in der einen Tabelle behalten.

Nehmen wir jedoch an, dass der 'ass' in 'du' und 'ich' steckt.

So spielen Sie sicher und sperre die Adresse in eine andere Tabelle. Aber es sieht so aus, als würden Sie die Normalisierung zu weit von Ihrem Beispiel nehmen.

+0

Großartig, danke. Sie schlagen vor, einfach eine Tabelle mit Kunde, Name, Adresse zu erstellen, statt sie zu trennen? – satkin859

+0

Nur wenn Sie sicher sind, dass jeder Kunde nur 1 haben kann und es wird sich nicht ändern. Aber ich habe gesagt, um auf Nummer sicher zu gehen, habe es in einem separaten Tisch. – AntDC

+0

Warum sollte eine separate Tabelle benötigt werden, wenn sich die Adresse geändert hat? Sicher würde es in der Kundentabelle aktualisiert werden? – satkin859

0

Es kommt ganz auf Ihre Anforderungen an, aber wie Sie oben erwähnt, kann der Kunde nicht mehr als eine Adresse haben, so dass es keine Notwendigkeit für eine andere Beziehung gibt, weil Sie es in die gleiche Beziehung setzen können.
Aber nach meiner Erfahrung schlage ich vor, Sie brechen es zu einem anderen zu vielen Beziehung wegen der zukünftigen Anforderungen.

+0

Danke für die Antwort. aber in Bezug auf 3NF, hängt Hausnummer, Straßenname und Stadt von der Postleitzahl ab. denn wenn das der Fall ist, müsste ich mich auf eine andere Tabelle trennen, würde ich nicht? – satkin859

+0

oh okay, also Kundentabelle, AddressTable mit FK des Kunden in Adresstabelle? Gibt es einen geeigneten natürlichen Schlüssel, denke oder sollte ich AddressID verwenden? – satkin859

0

Ja, ich würde die Adresse in eine separate Tabelle aufteilen.

Der Grund ist jedoch keine Normalisierung per se (unter den meisten Umständen). Der Hauptgrund ist, dass es sich um eine sich langsam ändernde Dimension handelt, und es könnte nützlich sein, vorherige Adressen nachzuschlagen.

Ob Sie weitermachen, normalisieren Dinge wie Postleitzahl ist eine Frage des Geschmacks. In einer "Amateur" -Datenbank glaube ich nicht, dass es notwendig ist. Für eine große Datenbank mit echten Kunden wäre ich jedoch geneigt, sie abzuzweigen. Es hilft sicherzustellen, dass die Postleitzahlen korrekt sind. Außerdem ändern sie sich im Laufe der Zeit. Möglicherweise kaufen Sie zusätzliche Informationen beispielsweise auf Postleitzahlenebene.

2

persönlich würde ich Adresse in einer anderen Tabelle setzen und sie zusammen verknüpfen.

Die geschäftliche Annahme/Regel kann sich ändern, und wenn Sie diese Dinge aufteilen, haben Sie die beste Chance, jede mögliche Geschäftsregel ohne größere Wiederholung zu akzeptieren.

zum Beispiel - oops, hat der Kunde eine andere Rechnungsadresse als ihre Lieferadresse oder oops, müssen wir wissen, wo etwas tatsächlich im vergangenen Jahr sogar ausgeliefert, obwohl der Kunde seine Adresse für dieses Jahr geändert, usw.

+0

Vielen Dank für den Kommentar, meine nächste Frage ist, ob: Hausnummer, Straßenname und Stadt von Postleitzahl abhängen, denn wenn sie es tun, müssen ID diese in eine separate Tabelle setzen, um in 3NF zu sein – satkin859

Verwandte Themen