Aufteilung in Klassen und Unterklassen

Hallo,

In unserem Datenmodell tauchen unterschiedliche Personengruppen auf, die teilweise Eigenschaften gemeinsam haben, aber auch wieder nur spezifische Eigenschaften der jeweiligen Gruppe:

Ist es sinnvoll, die Klassenaufteilung (Klasse Person; Unterklassen Spieler, Trainer, Psychologe, Scout, Geschäftsführer, Manager usw.) auch in die Tabellen zu übernehmen?

3 Punkte gilt es zu berücksichtigen:

  1. Zukunftssicherheit und Flexibilität

  2. Programmieraufwand für die Anwendung

  3. Performance

  4. Ich möchte später bei Änderungen / Erweiterungen so wenig wie möglich am Datenmodell ändern, da man sonst mit der Anwendung nicht mehr hinterherkommt

  5. Bei einem einfachen select sind ja dann nicht alle benötigten Informationen vorhanden. Man muss halt mit joins arbeiten. Andererseits wird dadruch ja nur einer virtuelle Tabelle zusammengesetzt, die dann prinzipiell wieder einer „einfachen“ Tabelle entspricht"

  6. Das Kernstück ist eine Suchfunktion, die E I N E der Personengruppen nach bestimmten Eigenschaften durchsucht. Dabei sollen neben den übereinstimmenden Datensätzen auch Alternativen gefunden werden (z.b. Datensatz entspricht zu 93% den Suchkriterien)

Was ist hier die sinnvollste Lösung?

Danke im Voraus!

Hallo Christian,

Rein von der Modellierung her ist es durchaus üblich das so aufzuteilen. D. h. du hast eine Tabelle Person und dann jeweils eine Tabelle für die abgeleiteten Klassen die einen FK auf die Tabelle Person hat.

Vor- und Nachteile hast du eh gut erkannt. Für die Anwendung ist es ein bißchen komplizierter damit umzugehen (z. B. 2 INSERTs), aber es ist übersichtlicher und einfacher zu erweitern. Performanceeinbussen wirst du auch hinnehmen müssen, die Abfragen mit Joins sind natürlich auch langsamer.

Die Suche nach den Alternativen ist etwas was SQL nicht beherrscht, das musst du selber implementieren, aber das ist unabhängig davon ob du alles in eine Tabelle steckst oder in mehrere.

Grüße, Robert