Ich erwarte, dass die Spalte in meiner Oracle-Datenbank eine VARCHAR2 ist.
US-Reißverschlüsse sind 9.
Kanadier ist 7.
Ich denke, 32 Zeichen wären eine vernünftige Obergrenze
Was vermisse ich?
[EDIT] TIL: 12 ist eine vernünftige Antwort auf die Frage. Vielen Dank an alle, die dazu beigetragen haben.
database
oracle
globalization
postal-code
EvilTeach
quelle
quelle
Antworten:
Beim Durchblättern der Postleitzahlenseite von Wikipedia sollten 32 Zeichen mehr als genug sein. Ich würde sogar sagen, dass 16 Zeichen gut sind.
quelle
Wie bereits von @ neil-mcguigan angesprochen, hat Wikipedia eine anständige Seite zum Thema. Basierend darauf sollten 12 Zeichen dies tun: http://en.wikipedia.org/wiki/List_of_postal_codes
Der Wikipedia-Artikel listet ~ 254 Länder auf, was in Bezug auf UPU (Universal Postal Union) mit 192 Mitgliedsländern ziemlich gut ist.
quelle
Warum sollten Sie ein Feld deklarieren, das größer ist als die tatsächlichen Daten, die Sie voraussichtlich darin speichern werden?
Wenn die ursprüngliche Version Ihrer Anwendung US- und kanadische Adressen unterstützt (was ich aus der Tatsache ableite, dass Sie diese Größen in Ihrer Frage angeben), würde ich das Feld als VARCHAR2 (9) (oder VARCHAR2 () deklarieren. 10) wenn Sie den Bindestrich in ZIP + 4-Feldern speichern möchten). Selbst wenn man sich die Beiträge anderer Länder zu Postleitzahlen in verschiedenen Ländern ansieht, würde VARCHAR2 (9) oder VARCHAR2 (10) für die meisten, wenn nicht alle anderen Länder ausreichen.
In der Folge können Sie die Spalte jederzeit ÄNDERN, um die Länge zu erhöhen, falls dies erforderlich sein sollte. Aber es ist im Allgemeinen schwer zu verhindern, dass sich jemand aus irgendeinem Grund dafür entscheidet, "kreativ" zu werden und 50 Zeichen in ein VARCHAR2 (50) -Feld zu stecken (dh weil er eine andere Zeile auf einem Versandetikett haben möchte). Sie müssen sich auch mit dem Testen der Grenzfälle befassen (wird jede Anwendung, die eine Postleitzahl anzeigt, 50 Zeichen verarbeiten?). Und mit der Tatsache, dass Clients beim Abrufen von Daten aus der Datenbank im Allgemeinen Speicher basierend auf der maximalen Größe der abzurufenden Daten und nicht auf der tatsächlichen Länge einer bestimmten Zeile zuweisen. In diesem speziellen Fall wahrscheinlich keine große Sache, aber 40 Bytes pro Zeile könnten in manchen Situationen ein anständiger Teil des Arbeitsspeichers sein.
Nebenbei können Sie auch in Betracht ziehen, die Postleitzahl und die + 4-Erweiterung (zumindest für US-Adressen) separat zu speichern. Es ist im Allgemeinen nützlich, Berichte nach geografischen Regionen erstellen zu können, und Sie möchten häufig alles in einer Postleitzahl zusammenfassen, anstatt es nach der Erweiterung +4 aufzuschlüsseln. An diesem Punkt ist es nützlich, nicht versuchen zu müssen, die ersten 5 Zeichen für die Postleitzahl zu SUBSTREN.
quelle
Was Sie vermissen, ist ein Grund, warum Sie die Postleitzahl speziell behandeln müssen.
Wenn Sie nicht wirklich brauchen WORK mit einer Postleitzahl, würde ich vorschlagen , um es nicht besorgniserregend. Mit Arbeit meine ich eine spezielle Verarbeitung, anstatt nur Adressetiketten zu drucken und so weiter.
Erstellen Sie einfach drei oder vier Adressfelder von VARCHAR2 (50) [zum Beispiel] und lassen Sie den Benutzer eingeben, was er will.
Haben Sie wirklich brauchen Ihre Aufträge oder Geschäfte von Postleitzahl zu einer Gruppe? Ich denke nicht, da verschiedene Länder sehr unterschiedliche Systeme für diesen Bereich haben.
quelle
Normalisierung? Postleitzahlen können mehrmals verwendet werden und sich auf Straßennamen oder Städtenamen beziehen. Separate Tabelle (n).
quelle
Kanadische Postleitzahlen bestehen nur aus 6 Zeichen in Form von Buchstaben und Zahlen (LNLNLN).
quelle
Großbritannien hat Standards veröffentlicht: UK Government Data Standards Catalogue
Internationale Postanschrift:
Die Postleitzahl in Großbritannien beträgt:
quelle
Wenn Sie Postleitzahlen in die Datenbank integrieren möchten, verwenden Sie am besten die geonames-Datenbank. Obwohl es schwer zu bedienen und zu verstehen ist, ist es die größte geografische Datenbank, die Benutzern wie uns frei zur Verfügung steht.
Alle anderen derartigen Datenbanken haben mehr oder weniger wahrscheinlich die gleichen Daten und Strukturen. Sie entfernen nur einige zusätzliche / redundante Informationen aus der Datenbank. Wenn Sie dies nur für Systeme mit geringer Last tun, die ihre kostenlosen Dienste nutzen, sind die Grenzwerte attraktiv und bieten eine einfachere Benutzeroberfläche mit json und ajax. Sie können die Grenzen anzeigen hier
Zu Ihrer Information: varchar (20) reicht aus, um Postleitzahlen zu speichern
quelle