Eine Telefon Vorwahl fühlt sich wie ein Ortsstempel an. Sie steht im selben Formular direkt neben einer Adresse, sie ist oft der einzige geografisch aussehende Teil der Nummer, und es liegt nahe, sie als weiteres Feld zu behandeln, das gegen einen Ort abzugleichen ist. Dieser Instinkt war vor Jahrzehnten vernünftig und ist heute unzuverlässig.
Dieser Artikel erklärt, wie Ländervorwahlen und nationale Ortsvorwahlen tatsächlich aufgebaut sind, warum Mobilnummern und Rufnummernmitnahme die geografische Verbindung zerstören und was eine Konsistenzprüfung zwischen Adresse und Telefonnummer in Testdaten oder im Produktivbetrieb ehrlicherweise erzwingen kann.
Ländervorwahl, Ortsvorwahl und Teilnehmernummer
Eine internationale Telefonnummer hat drei Teile: eine Ländervorwahl, einen nationalen Zielbereich, der eine regionale Ortsvorwahl enthalten kann, und die Teilnehmernummer. Ländervorwahlen sind kurz — eine bis drei Ziffern — und werden als Teil eines globalen Nummerierungsplans zugeteilt, weshalb internationale Anwahl berechenbar ist.
Innerhalb eines Landes legt die zuständige Stelle den Aufbau des nationalen Teils fest, und er variiert enorm. Manche Länder verwenden eine nationale Nummer fester Länge mit einem regionalen Präfix, das immer dieselbe Länge hat. Andere verwenden Nummern variabler Länge, bei denen Ortsvorwahl und Teilnehmerbereich je nach Region und Dienst Ziffern tauschen. Manche kürzen das Präfix bei der Anwahl im Inland ab und verlangen es bei der Anwahl aus dem Ausland.
Für alle, die diese Daten speichern, folgen daraus zwei Konsequenzen. Erstens hat dieselbe Nummer mehrere gültige Schreibformen, und sie unterscheiden sich in mehr als der Zeichensetzung: Die internationale Form kann ein Präfix enthalten, das die nationale Form weglässt, und die Gruppierung der Ziffern kann wechseln. Zweitens hat die Gesamtlänge einer Nummer ein definiertes Maximum, aber keinen einheitlichen globalen Wert, eine starre Längenregel weist also irgendwo gültige Nummern zurück.
Ist die Vorwahl noch ein Ort?
Schwächer als früher, und jedes Jahr schwächer. Mehrere gewöhnliche Entwicklungen höhlen die Verbindung zwischen Nummer und Ort aus.
- Mobilnummern tragen häufig überhaupt keine geografische Information. In vielen Ländern werden sie aus Blöcken vergeben, die an keine Region gebunden sind, eine Nummer sagt dann nichts darüber, wo ihre Inhaberin oder ihr Inhaber sich aufhält.
- Die Rufnummernmitnahme erlaubt es, eine Nummer beim Wechsel zwischen Anbietern zu behalten, und in mehreren Ländern auch beim Wechsel zwischen Regionen. Eine an einem Ort vergebene Nummer kann anderswo in Gebrauch sein.
- Telefonie über das Internet löst die Nummer von jeder physischen Leitung. Eine Nummer lässt sich in einem Land erwerben und in einem anderen beantworten, ohne dass die anrufende Seite es bemerkt.
- Menschen ziehen um und behalten ihre Nummern. Festnetznummern werden nach einem Umzug innerhalb desselben Landes häufig weitergeführt.
Die zutreffende Aussage lautet, dass eine Ortsvorwahl bestenfalls festhält, wo eine Nummer ursprünglich vergeben wurde. Sie ist kein aktueller Aufenthaltsort und kein Beleg für einen Wohnsitz.
Was kann eine Konsistenzprüfung tatsächlich durchsetzen?
Nicht viel, und die Grenzen zu kennen ist genau das, was die Prüfung nützlich macht. Drei Stärken stehen zur Verfügung, und sie sollten bewusst gewählt werden.
Eine harte Regel lässt sich ohne falsche Zurückweisungen durchsetzen: Die Nummer entspricht der erwarteten Form für das angegebene Land, sie enthält nur die erlaubten Zeichen, und ihre Länge liegt im Bereich, den dieses Land zulässt. Das ist an der Eingabestelle sicher zu erzwingen.
Ein weiches Signal verdient es, angezeigt und nicht blockiert zu werden: Die Ortsvorwahl gehört zu einer anderen Region als die Adresse, oder die Nummer ist eine Mobilnummer, während das Formular eine Festnetznummer nahelegt. Das ist einen Hinweis in einem internen Werkzeug wert und niemals einen harten Fehlschlag in einem öffentlichen Formular.
Eine statistische Vermutung — aus einer Nummer einen Ort ableiten, einen Anbieter erschließen und beides als Tatsache speichern — ist die eine Sache, die ganz zu vermeiden ist. Sie liegt oft genug falsch, um Schaden anzurichten, und weil das Ergebnis wie ein sauberes Feld aussieht, wird niemand nachgelagert danach fragen.
Warum Testdaten die Konsistenzprüfung trotzdem brauchen
Testdaten sind der Ort, an dem eine lockere geografische Annahme den größten Schaden anrichtet, denn Fixtures entstehen von Hand und werden danach geglaubt. Paart eine Fixture eine Nummer aus dem Nummerierungsplan eines Landes mit einer Adresse in einem anderen, besteht jeder Test, der die Nummer berührt, während er nichts prüft, und ein echter Defekt im Telefonfeld bleibt bis zur Produktion verborgen.
Die nützlichen Prüfungen für einen Fixture-Satz sind bescheiden. Die Ländervorwahl passt zum Land der Adresse. Länge und Zeichensatz der Nummer passen zum Plan dieses Landes. Der nationale Teil ist für die Art der Nummer plausibel, die das Feld zu führen behauptet, und das Präfix passt in den vorgesehenen Rahmen, ohne einen Ort zu behaupten. Alles darüber hinaus — die Behauptung, die Ortsvorwahl bilde den Ort im Datensatz ab — behauptet etwas, das für echte Daten ebenso wenig gilt, und eine Fixture, die es erzwingt, trainiert das Team auf eine falsche Regel.
Fixtures sollten auch die unbequemen Fälle enthalten: eine Nummer in internationaler Schreibweise und dieselbe Nummer in nationaler Schreibweise, eine Nummer mit einem regionalen Präfix, das nicht zur Adresse passt, und eine Mobilnummer ganz ohne regionale Information. Der Unterschied zwischen diesen Fällen und den Gegenbeispielen ist der Sinn des Satzes. Wie ein gut geordneter Fixture-Satz aussieht, beschreibt Adressdaten in Testfixtures.
Für Entwickler: Speicherung, Gruppierung und Anzeige
Speichern Sie die Ländervorwahl getrennt von der nationalen Nummer. Das Paar ist eindeutig; ein einzelnes Feld mit einer internationalen Nummer in lokal üblicher Schreibweise ist es nicht, und jeder Konsument implementiert dann das Parsing neu, um die Teile zurückzugewinnen.
Speichern Sie die nationale Nummer als Ziffernzeichenkette, ohne Zeichensetzung und ohne Gruppierung. Zeichensetzung ist eine Anzeigefrage, und Gruppierungsregeln unterscheiden sich zwischen Ländern und sogar zwischen Nummerarten, das Speichern der gruppierten Form zementiert also eine Formatierungsentscheidung, die irgendwo falsch sein wird. Normalisieren Sie bei der Eingabe, an einer Grenze, wie bei jedem Identifikator.
Für die Anzeige halten Sie die Formatierungsregeln je Land neben den übrigen Konventionen dieses Landes. Und seien Sie vorsichtig mit dem internationalen Präfix — das Pluszeichen und die darauffolgenden Ziffern sind die einzige weltweit eindeutige Form, während das Präfix für den Zugang zu einer internationalen Leitung sich von Land zu Land unterscheidet und nicht zur Nummer gehört.
Behandeln Sie eine Telefonnummer schließlich als personenbezogenes Datum, genau wie eine Adresse. Sie identifiziert eine Person, die Regeln zur Datenminimierung, zur Aufbewahrung und für Testumgebungen, die für Adressen gelten, gelten also auch hier. Die gemeinsamen Pflichten sind in Adressdaten und Datenschutz dargestellt. Trägt Ihre Datenbasis auch Ländercodes, sind die Fallstricke der verschiedenen Formen in ISO-Ländercodes und Unterteilungscodes beschrieben.
Nächste Schritte
Nehmen Sie die Telefonspalte in Ihrem Schema und prüfen Sie drei Dinge: dass die Ländervorwahl getrennt gespeichert wird, dass der nationale Teil Text und unpunktiert ist und dass die Prüfung auf Form statt auf Geografie beschränkt bleibt. Ergänzen Sie dann eine Fixture, in der Nummer und Adresse absichtlich aus verschiedenen Regionen stammen, und stellen Sie sicher, dass Ihre Tests erwarten, dass sie mit einer Warnung akzeptiert und nicht abgewiesen wird. Adresse und Nummer eines Beispieldatensatzes liefert der Adressgenerator. Dieser Datensatz ist synthetisch — zusammengestellt, um das Formular zu prüfen, nicht um anzurufen oder zuzustellen.