Ich möchte eine Hierarchie von Daten (Standardbeispiel: Person -> Angestellter -> Manager) so in SQL modellieren, dass ein Tupel immer nur Element einer Unterklasse sein kann. Damit schließt sich schon einmal der Standardansatz (mehrere Kindtabellen, die jeweils als PK den PK der Elterntabelle referenzieren) aus.
Nach einigem Googlen bin ich jetzt auch noch nicht so auf den grünen Zweig gekommen. Gefunden habe ich z. B. Implementing Table Inheritance in SQL Server - SQLTeam.com, das sieht mir mit diesen "Magic Numbers" aber etwas geschustert aus und scheint auch nur beim MS SQL Server gut zu funktionieren.
Ein anderer Ansatz wäre mittels PostgreSQL, siehe dort: PostgreSQL: Documentation: Manuals: PostgreSQL 8.1: Inheritance. Folgendes Verhalten gefällt mir aber nicht:
Ein weiterer Punkt ist, dass ich aufgrund der Hardware, auf der das Ganze laufen soll, SQLite verwenden möchte. Mit dem Funktionsumfang von SQLite kenne ich mich aber gar nicht aus, und würde eigentlich auch nur ungern Trigger verwenden. Verlange ich da zu viel? Wie ist das Standardvorgehen?
Nach einigem Googlen bin ich jetzt auch noch nicht so auf den grünen Zweig gekommen. Gefunden habe ich z. B. Implementing Table Inheritance in SQL Server - SQLTeam.com, das sieht mir mit diesen "Magic Numbers" aber etwas geschustert aus und scheint auch nur beim MS SQL Server gut zu funktionieren.
Ein anderer Ansatz wäre mittels PostgreSQL, siehe dort: PostgreSQL: Documentation: Manuals: PostgreSQL 8.1: Inheritance. Folgendes Verhalten gefällt mir aber nicht:
Es wäre allerdings schon wünschenswert, wenn das Einfügen eines Tupels des Subtyps dies nach oben propagieren würde (oder habe ich das einfach falsch verstanden?).Inheritance does not automatically propagate data from INSERT or COPY commands to other tables in the inheritance hierarchy.
Ein weiterer Punkt ist, dass ich aufgrund der Hardware, auf der das Ganze laufen soll, SQLite verwenden möchte. Mit dem Funktionsumfang von SQLite kenne ich mich aber gar nicht aus, und würde eigentlich auch nur ungern Trigger verwenden. Verlange ich da zu viel? Wie ist das Standardvorgehen?