Also wenn das Model definiert, dass Personen zu den Adressen gehört, und Firmen zu einer Person, nicht aber Firmen zu den Adressen, dann gibt es keine valide Abfrage der Firmen zu den Adressen, denn dann könnte ich auch einen SELECT * auf die Adressen machen.
Von daher ist dein Beispiel nicht realistisch.
Ja, Realität und Beispiel gehen oft nicht unter einen Hut.
Deine Formulierung hätte ich auch nicht gewählt. Mein Beispiel war eine Person gehört zu einer Firma, viele Personen gehören zu einer Firma und zu jeder Person gehört eine oder mehrere Adressen.
Firma 1: Person N, Persom 1: Adresse N
Real könnte man sich ein großes Paketzustellerunternehmen vorstellen, 1000e Filialen/Firmen/Subunternehmer in D, >10T Mitarbeiter. weltweit noch mehr. Die Mitarbeiter bekommen Schulungsmaterial, die Filialen sind nach Umsatz, Fläche, Standort, Standortbewertung usw. kategoriesiert. Die MItarbeiter können sich aussuchen, wohin sie welche Unterlagen bekommen wollen.
Dann gibt es sowas wie Postoptimierung (Pressepost), Anschreiben werden gebündelt nach PLZ verschickt. Oder es gibt besondere Standorte, deren Einzugs /Liefergebiet auf Bundeslandgrenzen liegt mit unterschiedlichen Feiertagen.
Die Realität ist meist verrückter als das Drehbuch.
Wie auch immer, benötige ich die Adressen der MItarbeiter spezifischer Firmen/Filialen, dann reicht das Select auf Adressen nicht.
Es ist letztlich auch nicht relevant, wie realistisch das Beispiel ist. Dafür sind Beispiele ja da, sie stecken eine definierte Umgebung ab.
Wenn man sich ein Datenmodell für einen riesigen Online Händler vorstellt, mit dessen Händlern, deren Kunden und Lieferadressen, deren Versandmechnismen und Retourenverwaltung, dann findet man sicher ähnliche oder "schlimmere" Fälle.