Hallo,
für
Wikibooks: Einführung in SQL möchte ich im Kapitel "Änderung der Datenbankstruktur" ein Verfahren einbauen, mit dem auf einfache Weise viele Testdatensätze erzeugt werden können, und zwar auch unter Berücksichtigung von ForeignKeys. Einer der möglichen Wege ist mir bekannt und (jedenfalls im Prinzip) vertraut:
- mehrere temporäre Tabellen mit Werten für die verschiedenen Spalten erzeugen
- mit dem kartesischen Produkt oder per Zufallsfunktion diese Werte mischen und in den Zieltabellen speichern
- die temporären Tabellen löschen
Dieses Verfahren könnte auch in einer StoredProcedure zusammengefasst und versteckt werden.
Da es sich um eine
Einführung in SQL handelt, möchte ich nicht zu sehr in die Tiefe gehen und z.B. die Beispieldatenbank nicht zu sehr ändern. Deshalb interessiert mich:
- Gibt es ein einfacheres Verfahren?
- Können anstelle von temp. Tabellen Arrays in SELECT bzw. INSERT eingebaut werden?
- Übersehe ich andere Möglichkeiten?
Zu den Arrays ist mir folgender Gedanke gekommen: Benutze für eine Namensliste einen String ähnlich diesem:
'Meyer Müller SchnackingGroß ';
Also eine Anzahl von Werten mit gleicher Länge (hier: 10 Zeichen), auf die per Zufallswert und Index (1, 11, 21 usw.) zugegriffen wird. Das könnte die temp. Tabellen überflüssig machen, würde aber die Kombination von INSERT und SELECT bei 10 Spalten pro Tabelle ziemlich unübersichtlich machen.
Gibt es bessere Ratschläge und Hinweise? Danke! Jürgen
PS. Ich weiß, dass die Vollversion von IBExpert Testdaten generieren kann. Es geht mir um ein Verfahren, das auf andere
SQL-Dialekte übertragbar sein soll und deshalb möglichst mit "reinem"
SQL auskommen soll.