Frage

Ich bin ein Programmierer und um ehrlich zu sein nicht Adresse Strukturen der Welt weiß, wie gerade in meinem Land strukturiert ist :) so das für die Speicherung von Straßenadressen das beste und gemeinsame Datenbank Design? Es sollte so einfach zu bedienen, schnell abfragen und dynamisch alle Straßenadressen der Welt zu speichern, die nur durch eine ID
Vielen Dank

ist die Identifizierung
War es hilfreich?

Lösung

Es ist möglich, Adressen aus vielen verschiedenen Ländern in einem Standardsatz von Feldern darstellen. Die Grundidee einer benannten Zugangsweg (Durchfahrt), die die genannten oder nummerierten Gebäude befinden, ist ziemlich Standard, außer in China manchmal. Andere in der Nähe von Universal-Konzepte beinhalten: die Benennung der Siedlung (Stadt / Stadt / Dorf), die allgemein als ein Ort bezeichnet werden kann; Benennung der Region und eine alphanumerische Postleitzahl zugeordnet wird. Beachten Sie, dass Postleitzahlen, die auch als Postleitzahlen bekannt ist, nur in einigen Ländern rein numerisch sind. Sie werden viele Felder benötigen, wenn Sie wirklich generisch sein wollen.

Die UPU Universal Postal Union liefert Adressdaten für viele Länder in einem Standardformat . Beachten Sie, dass das WPV-Format alle Adressen (bis auf das vorgesehene Feld precision) gilt für ein ganzes Land, ist es daher relational. Wenn Speichern von Kundenadressen, in denen nur ein kleiner Bruchteil aller möglichen Adressen gespeichert werden, ist es besser, die Verwendung einer einzigen Tabelle (oder flachen Format) enthält alle Felder und eine Adresse pro Zeile.

Ein angemessenes Format für Adressen speichern würde wie folgt aussehen:

  • Adresse Linien 1-4
  • Ort
  • Region
  • Postleitzahl (oder zipcode)
  • Land

Die Adressleitungen 1-4 können Komponenten halten, wie:

  • Gebäude
  • Sub-Gebäude
  • Premise Nummer (Hausnummer)
  • Premise-Bereich
  • Verkehrsweg
  • Unter Verkehrsweg
  • Double-Dependent Ort
  • Sub-Ort

Häufig nur drei Adressleitungen verwendet werden, aber das ist oft unzureichend. Es ist natürlich möglich, mehr Zeilen benötigen alle Adressen im offiziellen Format darzustellen, aber Kommas immer als Zeilenseparatoren verwendet werden, kann die Information Sinn noch erfasst werden.

In der Regel Analyse der Daten würde nach Ort, Region, Postleitzahl und Land und diese Elemente sind relativ einfach durchgeführt werden, für die Nutzer zu verstehen, wenn die Eingabe von Daten. Aus diesem Grund sollten diese Elemente als separate Felder gespeichert werden. Allerdings Benutzer nicht zwingen, Postleitzahl oder Region zu liefern, können sie nicht lokal verwendet werden.

Ort kann unklar sein, vor allem die Unterscheidung zwischen Karte Ort und Postlokalität. Der Post-Ort ist die von einer Postbehörde als die manchmal eine in der Nähe große Stadt sein kann. Allerdings wird die Postleitzahl löst in der Regel keine Probleme oder Unstimmigkeiten gibt, korrekte Lieferung auch wenn der offizielle Post-Ort verwendet wird, nicht möglich ist.

Andere Tipps

Hier finden Sie aktuelle Database Antworten rel="nofollow . Insbesondere diese deckt viele Fälle:

(All variabler Länge Zeichendatentyp)

AddressId
Line1
Line2
Line3
City
ZipOrPostcode
StateProvinceCounty
CountryId
OtherAddressDetails

Fragen Sie sich, was das Haupt ist Zweck , um diese Daten zu speichern? Beabsichtigen Sie unter der Adresse tatsächlich Mail an die Person senden? Verfolgen Sie Demografie, Bevölkerungs? Die Lage sein, Anrufer als Teil einer grundlegenden Authentifizierung / Verifizierung für ihre richtige Adresse zu fragen? Alles das oben Genannte? Keines der oben genannten?

Je nach tatsächlichem Bedarf, werden Sie feststellen, entweder a) es nicht wirklich wichtig, und Sie können für einen Freitext Ansatz gehen, oder b) strukturiert / spezifische Felder für alle Länder, oder c) länderspezifische Architektur .

Manchmal ist die nächstgelegene Sie an eine Adresse bekommen kann, ist die Stadt.

Ich hatte einmal ein Projekt alle Sekundarschulen in Indien in Google Maps zu setzen. Ich schrieb ein spiffy Programm des Google-API und dachte, es wäre ganz einfach sein.

Dann habe ich die Daten aus dem Client. Einige Schul Adressen waren Dinge wie „Across aus dem Markt, neben dem Barbier“ oder „in der Nähe von altem Bus steht“.

Es machte meine Aufgabe viel schwieriger, da leider die Google API nicht das Format nicht unterstützt.

Für internationale Adressen, es ist bemerkenswert schwer, einen Weg zu finden, um die Informationen zu formatieren, wenn es gebrochen ist in Felder nach unten. Als zum Beispiel eine italienische Adresse verwendet:

<street address>
<zip> <town> <region>
<country>

Wie

Via Eroi della Repubblica
89861 Tropea VV
Italy

Das ist ziemlich verschieden von dem Auftrag für US-Adressen -. In der zweiten Zeile

Siehe auch die SO Fragen:

Überprüfen Sie auch, tag ' Postcode '.


Bearbeiten : Umgekehrte Reihenfolge der Region und Stadt - pro UPU

Vielleicht ist nützlich: https://gist.github.com/259744 Für ein Projekt sammelte ich eine Tabelle mit Informationen über alle Länder der Welt, einschließlich der ISO-Codes, Top-Level-Domain, Telefonvorwahl, Autokennzeichen, Länge und regex Zip. Ländernamen und Kommentare leider nur in deutscher Sprache ...

Abhängig von wie Freiform Sie bereit sind, mit den Feldern zu gehen. Ein Freiform-Adressfeld wird natürlich immer tun, aber seine relativ wenig Hilfe Geographie Eingrenzung.

Das Problem haben Sie, dass es in der Ebene der geografischen Hierarchie zwischen den einzelnen Ländern zu viel Variation ist. Heck, einige Länder haben noch nicht einmal ‚Straßenadressen‘ überall.

Ich empfehle Ihnen, versuchen Sie nicht, es zu schlau zu machen.

Im Unterschied von anderen Antworten hier, ich glaube, es ist möglich, eine strukturierte Adressdatenbank zu haben.

Nur der Hut aus, ich kann die folgende Struktur denken:

  • Land
  • Region (Staat / Provinz)
  • Ort (Stadt / Gemeinde)
  • Sub-Ort (Landkreis / andere Unterteilung eines Ortes)
  • Straße

Aber wie es die Abfrage schnell genug?

Ein Weg, denke ich immer, kann es erreicht werden, ist für die Postleitzahl (oder Postleitzahl), die sich von Land zu Land unterschiedlich ist zu fragen, aber ist fest innerhalb des Landes.

So können Sie Ihre Daten rund um die Informationen, die von den Postämtern auf der ganzen Welt strukturieren können.

Len Silverston von Universal Data Modell Ruhm empfiehlt eine separate Hierarchie von GEOGRAPHIC BOUNDARIES und je nachdem, wie viel Frei gebildet-ness Sie bereit sind, entweder einfach STREET ADDRESS LINEs oder pro Land Derivate zu übernehmen.

Nein, absolut nicht. Wenn Sie die Art und Weise USA und japanischen Adressen Arbeit vergleichen, sehen Sie, dass es ist nicht möglich.

UPDATE:

Am zweiten Gedanken, kann alles getan werden, aber es ist ein Kompromiss.

Ein Ansatz ist es, das Problem mit Adresse und address_attribute Tabellen, mit einer 1 zu modellieren: m Beziehung zwischen ihnen, alles kann modelliert werden. Die address_attribute Tabelle würde einen pk, einen Namen, einen Wert, und eine fk, die an seine Adresse Eltern pk zurückverweist. Es ist fast wie eine Karte mit Namen, Wert-Paaren verwendet wird.

Der Kompromiss ist mit einem jedes Mal tun JOIN Sie eine Adresse mögen. Sie müssen auch die Namen der address_attributes abfragen, um herauszufinden, was Sie mit jeder Zeit zu tun hat.

Ein weiterer Ansatz wäre seine umfassende Forschung zu tun, wie Adressen auf der ganzen Welt modelliert. In einer objektorientierten Welt haben Sie vielleicht die westliche Adresse Klasse (Street1 / STREET2 / Stadt / Land / zip) und andere für Japan, China, so viele wie gekachelt den Adressraum benötigt. Dann würden Sie eine Master-Adresstabelle und Kind haben Tabellen zu den anderen Typen mit einer 1:. 1 Beziehung zwischen ihnen

Wie Amazon oder eBay es tun? Sie liefern international. Haben sie locale-spezifische UI-Funktionen? Ich habe nur die US-locale.

Nein, es gibt kein Standard-Adressierungsschema. Sie variiert in der Regel von Land zu Land. Auch die Universal Postal Union , sagte auf die Welt Adressiervolumen eine Adresse für alle, , dass es keine gibt. Die beste Lösung hierfür ist die 03.02-Ländercode-Standards wie ISO 3166 bekannt zu verwenden und behandeln alles andere von Landes-Standards.

Wenn Sie jedoch wirklich verzweifelt sind für Ihr Projekt leicht zugängliche Tools zu verwenden, können Sie Google Platz versuchen API .

Ihr Design sollte stark von Ihrem Zweck abhängen. Einige Leute haben geschrieben, wie die Daten zu strukturieren. Also, wenn Sie wollen einfach s-Mail an jemanden schicken, wird es tun. Dinge beginnen zu erschweren, wenn Sie diese Daten für die Navigation verwenden möchten. Auto-Navigationssystem werden zusätzliche Strukturen erfordern Verkehrsinformationen (zB Einbahnstraßen) enthalten, während Fuß Navigation eine Menge zusätzlicher Daten erfordern. Hier ist kleines Beispiel: in meiner Stadt, meine Nachbarschaft ist in der Nähe des Parks. Direkt neben dem Park ist der ehemalige Flugplatz (in der Tat, eine der ältesten in Europa) verwandelte sich in Luftfahrtmuseum. Neben Luftfahrtmuseum ist ein Business-Park. Straßennummer für Museum ist 39, während Business-Park Zahlen mit 39A beginnen. So mag es scheinen, dass 39 und 39A sind in der Nähe - aber es dauert etwa eine Meile von einem zum anderen zu gehen (und noch länger, wenn mit dem Auto zu gehen)
. Dies ist nur ein kleines Beispiel aus meiner Stadt genommen, ich glaube, Sie wahrscheinlich eine Menge von Ausnahmen (vor allem in ländlichen oder wilderen Teilen eines jedes Landes) finden können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top