Ich steh gerade vor einem kleinen Mapping Problem mit Hibernate
Ich hab ein Objekt Position, das hat ein paar Attribute und kann verschiedene Extensions haben.
Jede Extension besteht aus einem Namen, ID und einem Wert, da es aber nur eine kleine Menge von Extensions gibt hab ich diese in eine extra Tabelle gemacht aber OHNE den Wert.
Der Wert ist in der M:N Tabelle untergebracht. Wie kann ich das mit Hibernate mappen, mir fällt da irgendwie nichts eins?
Tabelle Positions:
id
höhe
…
Tabelle Extensions:
id
name
Tabelle (M:N) positions_extensions:
positions_id
extensions_id
value
Du hast irgendwie immer seeeeeeeeeeeeehr merkwürdige Probleme. Ist dir das schon mal aufgefallen? Wenn eine Extension zu einem Wert gehört, warum dann zwei verschiedene Tabellen? Versteh ich nicht. Oder kann eine Extension mehrere Werte “haben”!?
Jep ich weiß, wenn man nur einfache Probleme hat wäre das ja auch zu langweilig
Ne der Hintergrund ist der, diese Extension ist zb der Puls zu dieser Position, damit ich nicht eine Tabelle hab in der 1000x Puls steht hab ich die Tabelle aufgeteilt so das nur einmal Puls da steht und der Wert für diese Stelle steht in der anderen Tabelle.
Nachdem ich persönlich (rein fachlich) nicht so viel mit „Puls“, „Extension“ und „Position“ anfangen kann, würde ich mich (wie immer :D) über ein bisschen Code freuen. Java Klassen versteh ich dann doch leichter .
Achso, dachte es geht noch um dein Musik-Programm .
So wie das abgebildet ist, macht das aber keinen Sinn (oder ich checks einfach nicht ). Wenn dein „wert“ nur einmal (laut jetztigem Modell) pro Extension vorkommt, warum sollte der dann ausgelagert werden. Macht doch nur Sinn, wenn eine Extension mehrere Werte haben kann.
Ne ist mein GPS Programm
Ne es ist so, eine Position um verschiedene Werte erweitert werden kann, so kann man halt sagen bei Position 1 hatte ich den Puls von 110 oder die Trittfrequenz war 123.
Aber da es nur eine kleine Menge von Erweiterungen gibt macht es keinen Sinn diese direkt mit den Werten in die Tabelle einzutragen (id,name,wert) weil im Regelfall gibt es zu jeder Position eine Erweiterung. Bei mir halt immer der Puls, dh du hast 700 Positionen pro Tripp und zu jeder Position eine Herzfrequenz Erweiterung, diese unterscheiden sich aber nur in dem Wert.
Daher 2 Tabellen einmal für die Erweiterung und einmal für den Wert, somit wiederholt sich die Erweiterung nicht mehr sinnlos (spart Speicher und Arbeit).
Da ich aber für eine Position mehrere Erweiterungen haben kann ist zwischen der Erweiterung und der Position eine M:N Beziehung. Diese M:N Tabelle hab ich jetzt aber mit dem Wert zusammen gelegt weil das sonst nur eine weitere leere Tabelle entstanden wäre.
ok dann nochmal anders
Eine Position kann X Erweiterungen haben, die einfachste Lösung wäre 1:M Beziehung zwischen Position und Extension
–> Pos (id,longitude,latitude,…), extension(id, name, value)
Das gefällt mir nicht, weil der Name jetzt jedes mal drin steht. Dadurch braucht das alles viel mehr Speicher und auch die Abfragen sind langsamer weil man ja auf Strings abfragen muss.
Ich hab mal das Datenbankmodel als Bild angehängt
Als Name deiner Extension gibt es nur eine sehr begrenzte Anzahl an Namen, die öfters wieder auftreten.
Was spricht dagegen, der Position n Extensions zuweisen zu können, und jeder Extension genau einen Namen, der (wie es in deinem Model bereits angedeutet ist) in einer eigenen Tabelle mit ID ausgelagert wurde? Das sind doch zwei völlig eigenständige und voneinander unabhängige Verknüpfungen …
Ja die Idee hatte ich auch schon nur fällt mir da kein brauchbarer Name ein
Aber so müsste ich das auch als extra Klasse in Java machen oder seh ich das falsch?
(Da ich gerade eine Frage fürn Job gestellt habt mach ich das hier gleich mal mit :D)