Speichern einer Postanschrift in einer Datenbank: Welche Struktur soll ich für internationale Apps verwenden?

8

Ich werde internationale Benutzer meine Datenbank verwenden lassen, aber ich weiß nicht, wie das Mailing-System außerhalb der USA funktioniert.

Reichen die Konzepte "Stadt", "Bundesland, Land und möglicherweise" Postleitzahl "aus, um eine Hierarchie zu erfassen (auch wenn sie nur zwei Ebenen tief war: (Stadt / Land)

goodguys_activate
quelle
1
Sie können jederzeit ein weiteres Feld intl_addrs_line_3für zusätzliche Informationen hinzufügen , die nicht nach Stadt, Bundesland / Provinz, Land oder Postleitzahl erfasst werden.
FrustratedWithFormsDesigner

Antworten:

8

Verwenden Sie ein einzelnes Klartextfeld!

Sofern Sie keine Datenbank für die Zustellungsoptimierung oder eine andere stark lokale Verwendung erstellen, sollten Sie einfach die vollständige Adresse als Textfeld mit Standardzeilenumbrüchen speichern.

Wenn Sie zusätzliche Informationen benötigen, z. B. eine Postleitzahl oder eine Straße zum Sortieren und Gruppieren, um einen Rabatt für Massenpost zu erhalten, können Sie diese entweder in einem zusätzlichen Feld speichern oder sie einfach zur Postzeit anhand einiger festlegen ziemlich einfache Logik. (Oder Sie können jeder Adresse einen permanenten Schlüssel geben und Rabattinformationen über andere Tabellen bereitstellen lassen.)

Nun, ich sage nicht, dass Sie kein mehrteiliges Adressformular mit Stadt- und Bundeslandlisten und möglicherweise einen automatischen Verweis auf die Post-Adressadresse eines Landes bereitstellen sollten , aber Sie haben nicht gefragt, wie ein Formular für erstellt werden soll Bei Benutzereingaben haben Sie gefragt, wie die Adresse in einer Datenbank gespeichert werden soll.


Wenn Sie dieses Formular ausführen, möchten Sie möglicherweise einen JSON- oder XML-Blob speichern, damit die Felder erneut ausgefüllt werden können. Dies sind jedoch keine Daten, die Ihre Datenbank selbst unbedingt berücksichtigen muss ...

DougM
quelle
... und welche 'einfache Logik' würde es Ihnen ermöglichen, die Postleitzahl aus einem einzelnen Blob zu bestimmen? Amerikanische Postleitzahlen sind 5-stellig (eigentlich 9) und stehen am Ende einer Adresse. Kanadische Postleitzahlen haben die Form A0A 0A0 und stehen am Ende; Japanische Postleitzahlen sind 7-stellig und stehen normalerweise am Anfang : Zumindest möchten Sie das Land speichern (obwohl dies politische Probleme hat), wenn Sie nur wissen möchten, wie das Format aussehen soll. Aus Performance - Gründen alles , was Sie suchen / sortieren nach sollten in einem separaten Feld sein, an welchem Punkt sollten Sie es wahrscheinlich auseinander brechen ...
Uhrwerk-Muse
SELECT * FROM Customers C INNER JOIN PostalCodes P ON C.Address LIKE '%'+P.code + '%' Und ich habe bereits bemerkt, dass Sie die verschiedenen Gruppierungs- und Sortierfelder entweder im selben Datensatz oder in einer separaten Tabelle mit einer Viele-zu-Viele-Beziehung zwischen Adressen und sortierbaren Aspekten einfügen können.
DougM
Wir hoffen, dass keine Adresse Daten mit Postleitzahl aus einem anderen Land enthält! Obwohl das größere Problem darin besteht, dass bei Datenbanken jeder Größe Indizes ignoriert werden ... sollten sie sich daher, wie Sie sagen, in separaten Feldern befinden.
Uhrwerk-Muse
6

Wie bei allem gibt es einen internationalen Standard. In diesem Fall handelt es sich um ISO / IEC 19773 Teil 08: Datenstruktur für UPU-Postdaten . Aber wie bei internationalen Standards üblich, sind sie wirklich komplex. Dieser hat 30 Seiten und definiert ungefähr 50 mögliche Elemente, die Teil einer vollständigen Postanschrift sein können, um jedes mögliche Adressierungsschema abzudecken, das irgendwo auf der Welt verwendet wird.

Dies ist möglicherweise der richtige Weg, um eine Adresse zu speichern, aber möglicherweise nicht der praktikable .

Um einen Überblick über das Aussehen von Adressen in verschiedenen Ländern zu erhalten, lesen Sie möglicherweise den Wikipedia-Artikel über Post-Adressen . Wie Sie sehen, verwenden fast alle Länder Person, Hausnummer, Straße und Stadt (aber es gibt einige seltsame Fälle wie den Iran, in denen Gebäude Namen anstelle von Zahlen haben, oder Japan, in dem einige Städte Koordinatensysteme verwenden ). Darüber hinaus sind einige Länder in Regionen und einige weiter in Unterregionen unterteilt. In den meisten Ländern werden Postleitzahlen unterschiedlicher Länge verwendet, und Sie können normalerweise erwarten, dass sie dieselben Informationen wie Region, Subregion und Stadt enthalten. Von diesen Informationen wird jedoch normalerweise erwartet, dass sie die Richtigkeit der Postleitzahl überprüfen.

Was bedeutet das für den Entwickler einer wirklich internationalen Adressdatenbank? Sei flexibel. Machen Sie kein Feld erforderlich und lassen Sie einige optionale Allzweckfelder zu, die zur Darstellung regionaler Macken verwendet werden können.

Philipp
quelle