Wg. Geschäftskunden die die Daten in einer bestimmten Form haben wollen - ich sehe wenig Probleme darin, die Daten bei Bedarf in einer gewünschten Form abzubilden - wie die Daten am Ende in der DB gehalten werden, sollte da eigentlich keine Rolle spielen.
Wg. Otto-Normal-Verbraucher - ich sehe da jetzt keinen Unterschied ob der seine Kraut und Rüben Eingaben in der einen oder anderen Datenbank vornimmt. Das User-Interface muss den User bei der Eingabe so oder so so (sososo

) gut wie es nur irgendwie geht unterstützen, damit gewisse Dinge eben atomar abgebildet bleiben. Mit dem heutzutage allgegenwärtigen autosuggest kann man doch schon einigen Dingen entgegenwirken. Ein gewisser "Schwund" wird aber trotz aller Maßnahmen nicht vermeiden lassen - damit muss man wohl irgendwie leben.
Des Pudels Kern ist halt, dass ich sozusagen ein Framework für Adressen haben möchte, dass ich für ein Projekt einfach nur installiere, konfiguriere und dann damit loslegen kann. Evtl. lässt sich ein gewisse Basis auch im Sinne von CoC erstellen sodass weitere Konfigurationen nur für spezielle Anwendungsfälle gebraucht werden.
Ich hab gestern damit begonnen mich mit damit etwas zu beschäftigen und rausgekommen ist erst einmal eine Basis-Tabelle und eine weitere Detail-Tabelle, die verschiedenste Daten eben komplett vertikal hält. Dazu hab ich entsprechende Klassen erstellt, die die Eingabe neuer Datensätze handlen und dafür sorgen, dass es keine doppelten Einträge von Land/Plz/Ort/Strasse gibt, wenn z.B. eine weitere Adresse eingetragen wird, die sich eben genau in der gleichen Strasse befindet. Eine gleichlautende Strasse würde nur eingetragen, wenn sie sich nicht im gleichen Ort befindet usw.
Aber je weiter ich meine Gedanken stricke, um so mehr merke ich, dass selbst die Daten aus der Basistabelle komplett in die Untertabelle hinein aufgedröselt werden sollten, bis am Ende nur noch die 'Detail'-Tabelle übrig bleibt.
Die Klassen die dann Datensätze schreiben, bearbeiten und löschen müssen allerdings schon äusserst Sorgfältig erstellt und ausgiebig getestet werden damit am Ende nicht mal aus Versehen ein Datensalat produziert wird, der sich nicht mehr entwirren lässt.