# Java JDBC Access Datenstruktur



## kxs (9. Nov 2008)

Hallo!

Ich habe folgendes Problem, das mich mitlerweile verzweifeln laesst:

Ich habe eine Datenbank unter Access (ist vorgegeben!) in der befindet sich derzeit eine relevante Tabelle: T1

Die Tabelle T1 hat folgende Struktur:

ID | Ankunft | Abflug

ID ist ein autowert (int), Ankunft und Abflug jeweils date/time (dd.mm.yy hh:mm:ss)

Was ich nun machen muss, ist jedem Flug (ID) ein Gate zuzuweisen. Die Anzahl der Gates variiert, nach bisherigen Ueberlegungen werde ich die offenen Gates in eine Liste einlesen, um anschliessend mit der Laenge dieser Liste weiter arbeiten zu koennen (For-Konstrukt z.B.).

Geht man also davon aus, das ich 100 Fluege habe und nur 5 offene Gates, muss jedes Gate 20x belegt werden. Um nun Ueberschneidungen zu vermeiden (es wird zuvor schon drauf geachtet, das die Uhrzeiten sich nicht ueberschneiden, jedoch wenn die offenen Gates stark reduziert werden, kann es zu solchen Ueberschneidungen kommen, welche dann erkannt und verarbeitet werden muessen. Ich denke ich werde dann die Differenz berechnen und sie als Verspaetung aufaddieren.

Mein Vorgehen sieht dann also so aus:

Ich habe eine Liste mit den Fluegen aufsteigend nach Ankunft sortiert und weise den ersten x Fluegen jeweils eines der x Gates zu.

Gehen wir davon aus, das es 5 Gates sind, so haben wir dann ID 1 Gate 1 Ankunft Abflug ... ID 5 Gate 5 Ankunft Abflug

Ich muss dann diese Liste nehmen und sie aufsteigend nach Abflug sortieren und die verbleibenden Fluege (6-10) dann die Gates zuweisen. Weil man ja nicht davon ausgehen kann, das jeder Aufenthalt eine identische Laenge hat oder doch? Ich weiss nicht ob es da irgendwelche Regelmaessigkeiten gibt.

Ich stehe nun voellig auf dem Schlauch und probier schon ewig verschiedene Ansaetze.

Ich nehme mal an das ich aus dem Resultset ein Array oder eine Arraylist machen muss.
Vielleicht ist mein Ansatz aber auch absolut absurd oder unpraktisch, ich habe nichtmehr den noetigen Abstand.

Die Datenbankverbindung steht, es geht mehr oder weniger um die Wahl der Datenstruktur und um moegliche Ansaetze zum Weiterarbeiten, ich bin fuer jeden Vorschlag offen!

Schonmale dankeschoen,
gruss


----------



## maki (9. Nov 2008)

1. Vorschlag: Wenn es nicht unbedngt sein muss, nimm keine Abzess DB, macht mehr Ärger als es Wert ist.

2. Entscheide dich, wie du das umsetzen willst: 
"Altbacken" - zuerst das DB Schema, danach das Java Prog, mit all den bekannten Problemen.
In diesem Falle verwende mehr Zeit auf das Schema am anfang, weniger auf die Java seite. Versuche dein DB Schema zumindst in die 2 Normalform zu bringen.

"Modern" - Du modelierst deine Klassen und lässt dir das DB Schema von einem OR Mapper erzeugen, bei dieser Lösung bleibst du fast ausschliesslich auf Java Seite und musst dich nicht mit SQL rumschlagen.
Es hängt natürlich von deinem Wissenstand ab.


----------



## Guest (9. Nov 2008)

Hallo!

Erstmal dankeschoen fuer deine Antwort!

Leider bin ich dazu verdonnert Access zu benutzen. Die Datenbank ist schon grob entwickelt und die einzige fuer mich relevante Tabelle aus dieser DB habe ich ja aufgefuehrt. Meine Aufgabe ist ein Teil eines Projektes, es greifen also noch 5 andere Programme auf die besagte Datenbank zu, deshalb faellt der "moderne" Weg schonmal flach. Die 3. Normalform sollte ebenfalls erreicht sein, soweit ich es ueberblicken kann.

Schoen waer natuerlich auch, wenn sich mein Problem direkt ueber SQL loesen lassen wuerde, aber da habe ich noch mehr Probleme. Ich muesste meine Ergebnistabelle schrittweise durchgehen koennen, eine Loesung habe ich hierfuer bisher aber noch nicht, evtl. arbeite ich mich nochmal in VBA ein, das wuerde zu Not auch noch gehen.

Ich habe schonmal einen ersten Versuch gestarten mit einem generischen Abbild meiner Tabelle und als Struktur eine Arrayliste benutzt, ich glaube aber fuer den spezifischen Zugriff auf bestimmte Indizes waere ein reiner Array besser geschaffen. Ich werde mir auch nochmal RowSets angucken, nur ueberall habe ich das Problem, wie ich auf spezifische Datensaetze zugreifen kann, ohne staendig alles durchgehen zu muessen. Eine HashMap waere vllt auch noch denkbar.

Ueber die GUI lassen sich Gates oeffnen und schliessen und bei jedem neuen Event muessen dann alle Fluege nochmal neu zugewiesen werden. 

Bei der Tabelle habe ich natuerlich noch das Gate ansich vergessen, sollte vorab mit NULL belegt sein, zum Bearbeiten spielt es aber keine Rolle. Den IDs werden lokal Gates zugewiesen und dann spaeter mit der DB synchronisiert.


----------

