Umgang mit Typen und Subtypen im Datenmodell

DaBe1812

Bekanntes Mitglied
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.
 

DaBe1812

Bekanntes Mitglied
Hi,

danke für den Link. Hat also alles seine Nachteile und ich muss mir jetzt für meinen Fall die Lösung aussuchen, bei der mich die Nachteile am wenigsten stören.
Danke dafür, das hat schnell geholfen.
 

DaBe1812

Bekanntes Mitglied
Hallo nochmal
ich bin jetzt fröhlich am malen und umstellen, aber eine Sache wird aus den Bildern nicht ganz klar:
Wenn ich das Modell "Eine Tabelle pro Klasse" nehme, woher weiß ich, wenn z.B.
ID 1 == Speise, welche Zutaten sind das dann? Es gibt in der Speisen Tabelle kein Feld, dass auf einen konkreten Artikel verweist.
Oder nehme ich da einfach ein ID-Feld dazu und dann sind die IDs dann zwischen Artikel und Speise bzw. Getränk gleich?
 

Ähnliche Java Themen


Oben