JenZor
Lt. Commander
- Registriert
- Aug. 2011
- Beiträge
- 1.190
Zuerst dachte ich ich versuche mal ORM umzusetzen,
aber die Zeit mir diesen Luxus zu gönnen, habe ich nicht mehr.
Ich werde mir jetzt ne kleine Funktion tüfteln, die mir eine bestehende Struktur in eine DB schreibt und Schicht im Schacht.
Dazu muss ich mir das DB Schema selbst modellieren. Meine letzte Tabellenmodellierung ist allerdings schon ein paar Tage her.
Folgendes ist gegeben:
1 LPAR hat N CPUs
1 LPAR hat N Festplatten
1 LPAR hat N NetzwerkControler
1 CPU hat N MessdatenCPU
1 Festplatte hat N MessdatenHDD
1 NetzwerkControler hat N MessdatenNWC
1 LPAR hat N MessdatenLPAR
1 LPAR hat N MessdatenSpeicher
Eine LPAR wird über LPAR.ID identifiziert.
Eine Komponente ( CPU / HDD / NetzControler ) über die Kombination (Komponente.ID, LPAR.ID)
Eine Messdatei über die Kombination (Datum, Komponente.ID)
Wenn ich das jetzt so aufbaue, dann habe ich einen mehrstelligen Schlüssel bei den Komponenten und den Messdaten.
Das wird am Ende unschön, da ich den doppelten Schlüssel "mitnehmen" muss bis ganz runter.
Die Tabellen sähen dann am Beispiel so aus:
LPAR( ID , SerialNr, ...)
CPU( ID , LPAR_ID -> LPAR.ID , ...)
STR_CPU( DATE , CPU_ID -> CPU.ID , LPAR_ID -> CPU.LPAR_ID , ... )
Das ist meiner Meinung nach aber iwie totaler Crap. Fremdschlüssel als Primärschlüssen zu verwenden... , oder?
Ich könnte auch immer eine eigenständige ID / Tabelle nehmen, da ich diese ID aber zur Laufzeit nicht habe , müsste ich jedes Mal testen, ob es bereits eine CPU/HDD/NWC/Messdatei/.. mit den gegeben Werten gibt und das kostet auch Zeit ...
Das wäre dann iwas mit:
Und dann über
bestimmen ob der Datensatz bereits in der DB ist.
Gibt es da nichts elegantes?
Wie gesagt das letzte mal, dass ich was mit DBs zu tun hatte ist schon etwas her![Breites Grinsen :D :D](/forum/styles/smilies/biggrin.gif)
Danke schonmal für die Hilfe
Gruß
J.
P.S. der Smiley im Titel ist ausversehen mit reingerutscht![Zunge rausstrecken :p :p](/forum/styles/smilies/tongue.gif)
aber die Zeit mir diesen Luxus zu gönnen, habe ich nicht mehr.
Ich werde mir jetzt ne kleine Funktion tüfteln, die mir eine bestehende Struktur in eine DB schreibt und Schicht im Schacht.
Dazu muss ich mir das DB Schema selbst modellieren. Meine letzte Tabellenmodellierung ist allerdings schon ein paar Tage her.
Folgendes ist gegeben:
1 LPAR hat N CPUs
1 LPAR hat N Festplatten
1 LPAR hat N NetzwerkControler
1 CPU hat N MessdatenCPU
1 Festplatte hat N MessdatenHDD
1 NetzwerkControler hat N MessdatenNWC
1 LPAR hat N MessdatenLPAR
1 LPAR hat N MessdatenSpeicher
Eine LPAR wird über LPAR.ID identifiziert.
Eine Komponente ( CPU / HDD / NetzControler ) über die Kombination (Komponente.ID, LPAR.ID)
Eine Messdatei über die Kombination (Datum, Komponente.ID)
Wenn ich das jetzt so aufbaue, dann habe ich einen mehrstelligen Schlüssel bei den Komponenten und den Messdaten.
Das wird am Ende unschön, da ich den doppelten Schlüssel "mitnehmen" muss bis ganz runter.
Die Tabellen sähen dann am Beispiel so aus:
LPAR( ID , SerialNr, ...)
CPU( ID , LPAR_ID -> LPAR.ID , ...)
STR_CPU( DATE , CPU_ID -> CPU.ID , LPAR_ID -> CPU.LPAR_ID , ... )
Das ist meiner Meinung nach aber iwie totaler Crap. Fremdschlüssel als Primärschlüssen zu verwenden... , oder?
Ich könnte auch immer eine eigenständige ID / Tabelle nehmen, da ich diese ID aber zur Laufzeit nicht habe , müsste ich jedes Mal testen, ob es bereits eine CPU/HDD/NWC/Messdatei/.. mit den gegeben Werten gibt und das kostet auch Zeit ...
Das wäre dann iwas mit:
Code:
SELECT * FROM CPU
WHERE ID = ... AND LPAR_ID = ...;
Und dann über
Code:
Boolean isAlreadyInsert = query.getResult().getSize() > 0;
bestimmen ob der Datensatz bereits in der DB ist.
Gibt es da nichts elegantes?
Wie gesagt das letzte mal, dass ich was mit DBs zu tun hatte ist schon etwas her
![Breites Grinsen :D :D](/forum/styles/smilies/biggrin.gif)
Danke schonmal für die Hilfe
Gruß
J.
P.S. der Smiley im Titel ist ausversehen mit reingerutscht
![Zunge rausstrecken :p :p](/forum/styles/smilies/tongue.gif)