Hausnummer, PLZ, Telefonnummer - Integer oder String?

Zweipunktnull

Commander
Registriert
Dez. 2004
Beiträge
2.546
Hallo,

als ich letztens eine Art Mini-Kundenverwaltung programmiert habe, stellte sich mir mal wieder die Frage, welche Datentypen die persönlichen Daten haben sollten. Während sich diese Frage beim Vornamen, Nachnamen und Wohnort leicht beantworten lässt (String), fällt die Antwort bei der Hausnummer, PLZ und Telefonnummer schon nicht mehr so leicht.
Nach einigen Überlegungen kam ich zum Schluss, dass die Hausnummer ebenfalls in jedem Fall vom Typ String sein sollte, einfach weil gerade in Städten einige Hausnummer nicht nur aus Ziffern, sondern auch aus Buchstaben bestehen (Hausnr. 27a).
Doch wie sieht’s mit der PLZ und der Telefonnummer aus? String oder Integer? Je nach verwendeter Programmiersprache spricht gegen Integer, dass der Wertebereich nur bis 32767 bzw. 65535 UNSIGNED geht. Für eine die PLZ 75881 würde Integer noch nicht mal ausreichen. Für Telefonnummern natürlich noch weniger. Die Telefonnummer 0458947589526 übersteigt selbst den Integerbereich neuerer Technologien. Ein weiteres Argument wäre evtl. noch, dass die PLZ und Tel.-Nr. zwar aus Ziffern bestehen, aber eigentlich "Ausdrücke" und keine "richtige Zahlen" sind. Man möchte schließlich nicht mit ihnen rechnen, sondern brauch sie nur "so wie sie sind".

Wie würdet ihr PLZ und Telefonnummern speichern? Als Integer oder String? Bitte ausschließlich mit Begründung. ;)
 
Ich würde sie als String speichern weil du sonst bei einigen PLZ und Telefonnummern Probleme wegen einer vorranstehenden 0 bekommst.

Außerdem hast du ja schon richtig gesagt, dass du mit den Zahlen ja nicht rechnen brauchst.
 
@ Clocker 2800+

Eigentlich wollte ich eher auf die Frage String vs. Integer/Long/Float/Double hinaus. Dass Datentypen existieren, die größere Wertebereiche als Integer haben, ist mir schon klar. ;)
 
Naja, aber "so viel" Unterschied (bei der Speicherauslastung) ist das auch nicht.

Ich habe mal ein Visual-Basic Projekt gemacht, da war der Unterschied von Integer zu Double "nur" 100 KB bei der Speicherauslastung.
 
<edit>@clocker</edit>Darum geht es nicht.

Aufgrund der von RuL3R und dir schon angeführten Gründe würde ich auch zu string raten.
 
wie bereits gesagt wurde, alle Attribute sind als String anzulegen.
Die Regel dazu ist auch sehr einfach, mit allem was gerechnet wird: Zahl, ansonsten ein String. Man kann da auch sehr leicht auf anderem Weg drauf kommen:

Telefonnummern: führende 0 bzw Vanity-Telefonnummern
PLZ: die Nummern aus den neuen Bundesländern (außerdem gibts Länder die haben in der PLZ auch Buchstaben)

Hausnummer: auch simpel man dennke an Reihenhäuser, z.B. 47a, 47b, etc
 
Rate dir auch auf jedenfall zu Strings.

1. Aus den Oben genannten Grüngen, und
2. das es ja auch passieren kann das ein User die Telefonnummer als 5413/6546 eingibt.

Das würde dann ja total daneben gehen ;)

Grüße

tewes
 
Ich würde die Hausnummer übrigens mit bei der Strasse speichern. Die Hausnummer ohne Strasse macht wenig Sinn, wenn man nur die Strasse haben will (was wohl eher selten vorkommt), kann man mit 'LIKE' im SQL-Statement arbeiten.
 
Vielen Dank für die vielen Beiträge. Nun gut, da bin ich ja beruhigt, dass ihr meiner Meinung seid. ;)

>> mit allem was gerechnet wird: Zahl, ansonsten ein String.
Danke, das bringt's auf'n Punkt.

>> Ich würde die Hausnummer übrigens mit bei der Strasse speichern.
Hatte ich auch so gemacht - u.a. auch deshalb, weil ich mir dann keine Gedanken mehr um den Datentyp machen musste. ;) Aber auch sonst ist ja String für Hausnr. Pflicht, da es wie gesagt auch Hausnummern mit Buchstaben gibt.
 
Die Trennung in Straße und Hausnummer kann hilfreich sein, wenn man die Datenbank mal nach Dubletten durchsuchen will. Da spart man sich etwas Gehirnschmalz, wenn man die Information wieder auftrennen muss, insbesondere bei z.B. französischen Adressen wo die Hausnummer vorne steht.

Und genau, PLZ und Telefonnummer sind eine Verkettung von Ziffern, aber keine Zahlen an sich. Deshalb auf jeden Fall String.

Öhm und Integer hat seit Einführung von 32Bit-Rechnern üblicherweise einen Wertebereich von ca. 2 Mrd. bis -2 Mrd (bzw. 0 bis ca. 4 Mrd). Double ist hier zusätzlich eine denkbar schlechte Überlegung, da ein Double 1. auch nur eine eingeschränke Genauigkeit bietet und 2. eine einfache Zahl in einem Double keine exakte binäre Repräsentation haben muss (auch wenn das Problem erst ab sehr vielen Stellen zuschlägt).
 
Zuletzt bearbeitet:
Straße und Hausnummer zusammen als ein Feld verstößt doch schon gegen die 1.Normalform :)
Telefonnummer könnte man trennen in landesvorwahl ortsvorwahl anschlußnummer :p
 
Zurück
Oben