Wir haben ein Team, das die Tabellen und Relationen für Softwareentwickler erstellt. In unserer Organisation ist die Durchsetzung der 3NF-Normalisierung recht streng. Um ehrlich zu sein, stimme ich angesichts der Größe unserer Organisation und der Veränderungen der Bedürfnisse oder Kunden im Laufe der Zeit zu. Es gibt nur einen Bereich, bei dem mir die Gründe für ihre Designentscheidung nicht klar sind: Adressen.
Während sich dies hauptsächlich auf Adressen in den Vereinigten Staaten konzentriert, könnte dies meines Erachtens auf jedes Land zutreffen, das dies tut. Jedes Stück einer Adresse erhält eine eigene Spalte in der Adresstabelle. Nehmen Sie zum Beispiel diese knorrige US-Adresse:
Attn: Jane Doe
485 1/2 N Smith St SW, APT 300B
Chicago, IL 11111-2222
Es würde in der Datenbank wie folgt aufgeteilt werden:
- Hausnummer: 485
- Straßenbruchteil: 1/2
- Straße in Fahrtrichtung: N (Nord)
- Straßenname: Smith
- Straßentyp: ST (Straße)
- Straße in Fahrtrichtung: SW (Südwesten)
- Stadt: Chicago
- Bundesstaat: IL (Illinois)
- Postleitzahl: 11111
- Postleitzahl 2222
- Land (vermutlich USA)
- Achtung: Jane Doe
- Postfach: NULL
- Wohnungstyp: APT (Wohnung)
- Wohnungsnummer: 300B
Und es würde einige andere Spalten geben, die sich auf ländliche Routen und Vertragsrouten beziehen. Darüber hinaus enthält unsere spezifische Anwendung wahrscheinlich einige internationale Adressen. Die Datenmodellierer sagten, sie würden Spalten hinzufügen, die für internationale Adressen spezifisch sind. Dies wären die normalen Felder für Zeile 1 und Zeile 2.
Zuerst dachte ich, das wäre WEG über Bord. Online-Recherchen beziehen sich wiederholt auf die Verwendung der Adresszeile 1, 2, 3 und möglicherweise 4 und die Aufteilung von Stadt, Region und Postleitzahl. Wir haben einen Anwendungsfall für unsere neue Anwendung, bei dem diese Granularität von Vorteil ist. Wir müssen überprüfen, ob der Benutzer ein Duplikat erstellt, und die Überprüfung der Adresse ist eine der Überprüfungen. Wir können es mit Adresszeile 1 und 2 zum Laufen bringen, aber es wäre schwieriger.
Für unsere spezifische Anwendung müssen wir mehrere Arten von Adressen für Unternehmen und Personen speichern (physisch, per Post, Versand usw.). Möglicherweise müssen wir druckbare Serienbriefe generieren, aber diese Anforderung wurde bisher noch nicht erörtert.
Einige andere Dinge, die Anwendungen in unserer Organisation unterstützen müssen:
- Auditing (mit vollständigen Verlaufstabellen)
- Drucken von Versandetiketten
- Gedruckte Formulare erstellen
- Berichterstattung (für nationale und regionale Regierungen)
Während unsere Anwendung möglicherweise nicht alles tut, was jede andere Anwendung tut, ist das Aufteilen von Adressen in mehrere Komponenten ein Unternehmensstandard, in dem ich arbeite. Unabhängig davon, ob unsere Anwendung davon profitieren würde, sind wir dazu gezwungen.
Teilweise verwandte StackOverflow-Frage: Wo ist ein guter Adress-Parser, der geschlossen wurde, aber zeigt, wie schwierig das Parsen von Adressen sein kann?
Damit ich ihre Designentscheidung besser verstehe und unseren Kunden von der Idee überzeugen kann ...
Welche Probleme werden durch die Aufteilung der Straße in einzelne Spalten gelöst?
Bonuspunkte für alle, die ein solches System implementiert haben, weil sie auf Probleme gestoßen sind.