Ich hab folgende Problemstellung:
Datenbank mit realistischen und sinnvollen Werten befüllen. Achten Sie vor allem darauf, daß Sie die
Integritätsbedingungen erfüllen (z.B. Fremdschlüsselabhängigkeiten).
Entnehmen Sie folgender Tabelle die jeweilige Anzahl der zu erstellenden Datensätze:
• Flugzeug 100
• Flugzeugtyp 10
• Fluggesellschaft 10
• Flug 100
• Hangar 50
• Mitarbeiter 1250
• Flughafen 10
• Pilot 250
• Techniker 1000
• Passagier 10000
Wählen Sie für die Beziehungstabellen eine angemessene Anzahl von Datensätzen (z.B. es gibt 10000 Passagiere
Hi -
Naja - es ist ziemlich egal, mit welchem Programm oder mit welcher Programmiersprache du zum Ergebnis (.sql-Files) kommst.
Zuerst musst du ohnehin die DB-Struktur anschauen, dann die entsprechenden SQL Statements bauen, die zur Befüllung nötig sind und dann diese Statements ein paar mal in eine Datei schreiben.
Wichtig ist, dass du mit dem Einfügen der Datensätzen anfängst, von denen andere laut foreign keys abhängig sind. Z.B. zuerst die Flugzeuge einfügen, damit du dann FlugDatensätze einfügen kannst, die das Flugzeug dann per FK referenzieren.
Dann denkst du dir noch ein paar Zufalls-Algorithmen aus, die Namen, Flugzeugs-ID’s usw generieren und schon kannst du deine Schleifen starten.
Solltest du noch Probleme haben, frag einfach.
mfG,
J.P.Jarolim
DAnke, dass sich meinem Problem so schnell wer angenommen hat!
Leider bin ich programmiertechnisch nicht sehr begabt, und wollte eigentlich genau wissen, wie ich an das Problem herantrete. Du hast es mir sehr gut in Grundzügen erklärt, aber leider hab ichs noch immer ned ganz gecheckt.
Muss ich für alle Attribute Arrays machen un diese dann durchlaufen.
Wie funktioniert dass mit der Zufallsgenerierung der Daten?
Kannst du mir das Beispiel näher erläutern?
hoffe du kannst mir weiterhelfen
DANKE!
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hi.
Bist du dir sicher, dass du das mit Java lösen möchtest? Du benötigst Ansich nur einen Weg, SQL-Statements, die du sozusagen als Gerüst vorbereitet hast, zu befüllen.
Dh. Du erarbeitest dir wie im ersten Posting beschrieben die SQL Statements. Die Datenfelder der Inserts bleiben dabei z.B. durch ein bestimmtes Zeichen ersetzt:
insert into flugzeuge (fz_id, fz_nummer, fz_name) values (?{1},?{2},?{3});
In deinem Programm müsstest du dann einen Algorithmus erstellen, der zufällige IDs, nummern und namen erstellt und diese in das SQL-Statement einfügen. Das ganze führst du mit allen benötigten (vorbereiteten) Statements durch und schreibst das Ergebnis (ziemlich viele SQL-Zeilen) in ein File.
Das Ersetzen funktioniert z.B. mit dem Package gnu.regexp sehr einfach:
String mySQLString = "insert into flugzeuge (fz\_id, fz\_nummer, fz\_pilot) values (?{1},?{2},?{3});";
String currentID = "1";
String currentNummer = "D-12ABC";
String currentPilot = "Schmidt";
try {
mySQLString = new RE("?{1}").substituteAll(mySQLString, currentID);
mySQLString = new RE("?{2}").substituteAll(mySQLString, currentNummer);
mySQLString = new RE("?{3}").substituteAll(mySQLString, currentPilot);
} catch (Exception e) {}
So kannst du in kürzester Zeit mit einer Schleife sehr viele Insert-SQL-Statements generieren.
mfG,
J.P.Jarolim
Hab schon einige Files erstellt. Jetzt häng ich aber bei den verschiedenen Abfragen, bezüglich Namen der Passagiere usw.
Hab da ein String Array mit 10 Nachnamen angelegt und ich brauch aber insgesamt 10 000 Passagiere. Die PassagierNr lass ich einfach in einer for-Schleife bis 10 000 laufen.
Wie kann ich das Array durchlaufen, sodass z.B: so aussieht:
PassagierNr 1, Huber1,
.
.
.
PassagierNr 10, Maier1,
PassagierNr 11, Huber2, usw
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo.
Wie kann ich das Array durchlaufen, sodass z.B: so aussieht:
PassagierNr 1, Huber1,
.
.
.
PassagierNr 10, Maier1,
PassagierNr 11, Huber2, usw
Wenn du es so haben möchtest, könntest du zB. ein zweites Array mit der gleichen Größe anlegen, in welchem die derzeitigen Indizes zwischengelagert werden. Schauen wir uns zB. dieses Schnippsel an:
String[] names = {„Maier“, „Huber“, „Aristoteles“, … , „Klimt“};
int[] indizes = {0,0,0, … , 0};
// Der Speicher für alle SQL-Statements
java.util.Vector allSQLStatements = new java.util.Vector();
// Ein Zufallsgenerator mit der Startzeit initialisiert
java.util.Random random = new java.util.Random(new java.util.Date().getTime());
// 10000 Statements generieren
for (int i=0; i + indizes[myRandomIndex] + „’);“;
// Den jeweiligen Zähler erhöhen
indizes[myRandomIndex] += 1;
// Das zusammengebaute Statement ablegen
allSQLStatements.add(new String(mySQLStatement));
}
Das sollte dir die Idee vermitteln. Allerdings würde ich mir an deiner Stelle noch den Random-Teil anschauen.
mfG,
J.P.Jarolim