Hallo,
ich möchte ein Datenmodell erstellen, welches für die spätere Anwendung auch Metadaten zur Beschaffenheit der Daten selbst bereit hält. Einen Entwurf habe ich bereits, aber an einer Stelle haperts noch.
Ich erkläre kurz den Entwurf: Die Anwendung soll Produktdatenblätter verwalten. Es gibt die "Wurzel"-Relation 'Eintrag', an der beliebige viele Attribute der Relation 'Eintrag_Datenfelder' hängen können. Jedes Tupel aus 'Eintrag_Datenfelder' enthält einen Verweis auf einen entsprechenden Metadateneintrag der Relation 'Datenfeld', Datenfelder sind über 'Datenblatt' gruppiert. Weiterhin wird jedem 'Datenfeld' ein 'Feldtyp' zugeordnet. Ein Feldtyp beschreibt entweder einen Basis-Datentypen wie Integer, Boolean, String oder ist ein Verweis auf einen Stammdateneintrag. 'Stammdaten' ist eine Relation, die später für feste Auswahllisten genutzt werden soll.
Nun zum eigentlichen Problem: Dadurch, dass ich den Datentyp eines Datenfeldes über die Metadatenrelationen beschreibe, kann ich natürlich in der Relation 'Eintrag_Datenfelder' für das Attribut 'wert' nicht den konkreten Datentyp verwenden, da es ja verschiedene Datentypen gibt. Ich nehme also den Datentyp VARCHAR, da er am flexibelsten ist. Trotzdem verliere ich natürlich so alle Vorzüge der eigentlichen Datentypen im Zusammenspiel mit SQL. Aggregationsfunktion über Integer-Datentypen oder der SORT-Befehl werden nicht wie gewünscht nutzbar sein.
Wüsste jemand eine elegantere Lösung, welche die geschilderten Probleme umgeht?
ich möchte ein Datenmodell erstellen, welches für die spätere Anwendung auch Metadaten zur Beschaffenheit der Daten selbst bereit hält. Einen Entwurf habe ich bereits, aber an einer Stelle haperts noch.
Ich erkläre kurz den Entwurf: Die Anwendung soll Produktdatenblätter verwalten. Es gibt die "Wurzel"-Relation 'Eintrag', an der beliebige viele Attribute der Relation 'Eintrag_Datenfelder' hängen können. Jedes Tupel aus 'Eintrag_Datenfelder' enthält einen Verweis auf einen entsprechenden Metadateneintrag der Relation 'Datenfeld', Datenfelder sind über 'Datenblatt' gruppiert. Weiterhin wird jedem 'Datenfeld' ein 'Feldtyp' zugeordnet. Ein Feldtyp beschreibt entweder einen Basis-Datentypen wie Integer, Boolean, String oder ist ein Verweis auf einen Stammdateneintrag. 'Stammdaten' ist eine Relation, die später für feste Auswahllisten genutzt werden soll.
Nun zum eigentlichen Problem: Dadurch, dass ich den Datentyp eines Datenfeldes über die Metadatenrelationen beschreibe, kann ich natürlich in der Relation 'Eintrag_Datenfelder' für das Attribut 'wert' nicht den konkreten Datentyp verwenden, da es ja verschiedene Datentypen gibt. Ich nehme also den Datentyp VARCHAR, da er am flexibelsten ist. Trotzdem verliere ich natürlich so alle Vorzüge der eigentlichen Datentypen im Zusammenspiel mit SQL. Aggregationsfunktion über Integer-Datentypen oder der SORT-Befehl werden nicht wie gewünscht nutzbar sein.
Wüsste jemand eine elegantere Lösung, welche die geschilderten Probleme umgeht?
Comment