Die universelle Möglichkeit, eine geografische Adresse / einen geografischen Standort in einer Datenbank zu speichern, ist die folgende:
[Address] nvarchar(max) not null
Dies erfordert die geringste Menge an Programmcode (und reduziert so die Wartungskosten) und ist mit jeder Adresse voll kompatibel. Es hat jedoch drei große Probleme:
Das Fehlen einer Datenvalidierung bedeutet, dass das Feld für andere Zwecke als zum Speichern der Adresse verwendet werden kann. Einer der Zwecke ist ein DOS-Angriff, der den Speicherplatz Ihrer Datenbank ausfüllt, indem 2 GB Daten in das Adressfeld eingegeben werden.
Die auf diese Weise gespeicherten Daten können nicht für Business Intelligence- und Data Mining-Zwecke verarbeitet werden. Wie viele Benutzer kommen beispielsweise aus Indien? Es ist nicht einfach zu sagen, da diese Adressen nicht normalisiert werden.
Die Benutzer können versehentlich eine unvollständige oder eindeutig falsche Adresse eingeben.
Begrenzen Sie das Feld auf ein Ihrer Meinung nach angemessenes Limit, um das erste Problem zu beheben. Persönlich würde ich mit 1000 Zeichen beginnen und es dann basierend auf der Länge der Adressen reduzieren, die von den ersten Benutzern eingegeben wurden, sobald Sie einen Datensatz erhalten, der groß genug ist.
Um die beiden anderen Probleme zu beheben, können Sie eine Drittanbieter-API verwenden, die Adressen analysiert und Ihnen die Daten anzeigt, die Land, Stadt, Postleitzahl usw. enthalten. Wenn möglich, sollte die API in der Lage sein, die Adresse anzuzeigen Eine Karte an den Benutzer zurück, um das Risiko zu verringern, dass der Benutzer eine unvollständige oder falsche Adresse eingibt: Die meisten Benutzer wissen, wo sie leben, und wenn sie eine andere Position auf einer Karte sehen, erhalten sie sofort einen Hinweis, dass sie ihre Eingaben überprüfen sollten.
Beachten Sie, dass die von Ihnen verwendete API nicht perfekt ist. Es werden die meisten Adressen gefunden, aber nicht alle. Dies bedeutet , dass , wenn die API sagt , dass die Adresse nicht existiert, aber der Benutzer besteht darauf , dass dies der Fall, sollten Sie von vornherein das Vertrauen der Benutzer, selbst wenn er könnte falsch sein.
Dies bedeutet auch, dass Sie die Eingaben des ursprünglichen Benutzers neben dem Ergebnis der API speichern sollten. Dies bedeutet, dass das Schema wie folgt lautet:
[RawAddress] nvarchar(max) not null
[ParsedAddress] xml null