Hi,
ich migriere gerade ein System mit einem Vertikalen Datenmodell (EAV) in eine ordentliche relationale Datenbank.
Jetzt möchte ich gerne so viel normalisieren, wie möglich, aber gerade hänge ich an einem Problem:
Im Datenmodell gibt es logische Systeme, das kann man etwa mit dem Betriebssystem auf einem Gerät beschreiben. Dieses logische System hat einen Server und jetzt fangen die Unterschiede an.
Dies könnte ein virtueller Server sein, oder ein Bladeserver, oder ein Rackserver, oder ein Bladecenter. Diese vier haben so unterschiedliche Attribute, dass ich sie gerne auch in unterschiedlichen Entitäten haben möchte.
Also gibt es im logischen System einen FK auf Server, in der Entität wird nur GUID, Timestamp, Bezeichnung, Status und Kommentar gelagert, die Felder haben alle Serverarten gemeinsam und die Felder haben auch vom Datentyp denselben Inhalt. Außerdem noch ein ENUM-Feld "Typ" um zu unterscheiden, welche Art von Server es ist.
Für die restlichen Felder will ich vier zusätzliche Entitäten bauen, jede mit seiner eigenen GUID.
Wobei letzteres schon ein Fragezeichen wäre. Wie verknüpfe ich die Entitäten sowohl auf der Datenbank, als auch später im Java am sinnvollsten so miteinander, dass es auch performancetechnisch gut ist.
Ich denke gerade daran in den Unterentitäten keine eigenen Primärschlüssel zu vergeben, sondern dort denselben zu nehmen, wie in der Server-Entität, dann würde ich quasi nicht verknüpfen.
Schreibt einfach mal, wie ihr es lösen würdet.
ich migriere gerade ein System mit einem Vertikalen Datenmodell (EAV) in eine ordentliche relationale Datenbank.
Jetzt möchte ich gerne so viel normalisieren, wie möglich, aber gerade hänge ich an einem Problem:
Im Datenmodell gibt es logische Systeme, das kann man etwa mit dem Betriebssystem auf einem Gerät beschreiben. Dieses logische System hat einen Server und jetzt fangen die Unterschiede an.
Dies könnte ein virtueller Server sein, oder ein Bladeserver, oder ein Rackserver, oder ein Bladecenter. Diese vier haben so unterschiedliche Attribute, dass ich sie gerne auch in unterschiedlichen Entitäten haben möchte.
Also gibt es im logischen System einen FK auf Server, in der Entität wird nur GUID, Timestamp, Bezeichnung, Status und Kommentar gelagert, die Felder haben alle Serverarten gemeinsam und die Felder haben auch vom Datentyp denselben Inhalt. Außerdem noch ein ENUM-Feld "Typ" um zu unterscheiden, welche Art von Server es ist.
Für die restlichen Felder will ich vier zusätzliche Entitäten bauen, jede mit seiner eigenen GUID.
Wobei letzteres schon ein Fragezeichen wäre. Wie verknüpfe ich die Entitäten sowohl auf der Datenbank, als auch später im Java am sinnvollsten so miteinander, dass es auch performancetechnisch gut ist.
Ich denke gerade daran in den Unterentitäten keine eigenen Primärschlüssel zu vergeben, sondern dort denselben zu nehmen, wie in der Server-Entität, dann würde ich quasi nicht verknüpfen.
Schreibt einfach mal, wie ihr es lösen würdet.