< Vorherige Lektion | Nächste Lektion >

Lerneinheit 2.4: Automatische Schlüsselerstellung verwenden

In der vorherigen Lerneinheit haben Sie Navigationsregeln eingerichtet, um sicherzustellen, dass Benutzer eine eindeutige ID für die neue Kleinanzeige eingegeben haben. Dieser Prozess ist frustrierend und unrealistisch, da Sie nicht wollen, dass die Benutzer Ihrer Site eine eindeutige ID durch Ausprobieren finden müssen. In dieser Lerneinheit richten Sie eine automatische Schlüsselgenerierung ein, so dass die Datenbank jedem neuen Datensatz in der Datenbank automatisch eine eindeutige Nummer zuordnet.

Die automatische Schlüsselerstellung ist ein komplexes Thema. In Kürze bedeutet dies, dass eine Datenbank neue Schlüssel auswählen kann, wenn sie über eine besondere Tabelle verfügt, die für die Schlüsselerstellung reserviert ist. In dieser Tabelle muss sich eine Liste mit bisher noch nicht verwendeten Schlüsseln in der einen Spalte (der Inkrementorspalte) und eine Liste mit geordneten Nummern beginnend mit 1 in der anderen Spalte (der Identitätsspalte) befinden. Wenn die Datenbank einen neuen Schlüssel benötigt, nimmt sie den Schlüssel aus der Zeile mit der 1 in der Identitätsspalte und bereitet einen neuen Schlüssel für das nächste Mal vor.

Um eine automatische Schlüsselerstellung einzurichten, müssen Sie zunächst verstehen, wie dieses Prinzip funktioniert. Für die Verwendung automatischer Schlüsselerstellung muss die Datenbank eine Tabelle zu diesem Zweck bereitgestellt haben. Diese Tabelle enthält zwei Spalten:
  • Die Spalte Inkrementor speichert verfügbare Schlüssel. Wenn die Datenbank einen neuen eindeutigen Schlüssel benötigt, ruft Sie ihn aus dieser Spalte ab.
  • Die Spalte Identität ist eine Zahlenreihenfolge mit nur einem Exemplar der Zahl 1. Anhand dieser Spalte wird der Datenbank mitgeteilt, welcher Schlüssel aus der Inkrementor-Spalte ausgewählt werden soll. Die Identitätsspalte ist der Primärschlüssel der Schlüsselerstellungstabelle.

Wenn die Datenbank einen neuen eindeutigen Schlüssel benötigt, sucht Sie die Zeile mit einem Wert von 1 in der Identitätsspalte. Der Wert der Inkrementor-Spalte dieser Zeile enthält den nächsten verfügbaren Schlüssel. Die Datenbank verwendet diesen Schlüssel und aktualisiert die Tabelle, damit beim nächsten Mal ein neuer Schlüssel zur Verfügung steht.

Hier sehen Sie ein Beispiel einer Schlüsselerstellungstabelle. Was ist der nächste verfügbare Schlüssel für diese Datenbank? Die Antwort finden Sie in der untenstehenden Tabelle.
Tabelle 1. Schlüsselerstellungstabelle
Identitätsspalte Inkrementor-Spalte
3 78
4 3
1 65
2 12
Der nächste verfügbare Schlüssel in dieser Tabelle ist 65, da dieser Schlüssel (in der Inkrementor-Spalte) sich in der gleichen Zeile befindet wie der Wert 1 in der Identitätsspalte.

Nachdem der nächste verfügbare Schlüssel aus der Tabelle abgerufen wurde, wird die Tabelle für das Abrufen des nächsten Schlüssels aktualisiert. Die Datenbank kann also mehrere Schlüssel auf einmal abrufen, indem Sie den Wert der Inkrementor-Spalte für mehr als eine Zeile abruft.

Kurz gesagt, damit die automatische Schlüsselerstellung funktioniert, benötigen Sie lediglich eine Schlüsselerstellungstabelle mit zwei Spalten: einer Primärschlüsselspalte, die als Identitätsspalte verwendet wird, und einer Spalte zum Speichern des nächsten verfügbaren Schlüssels. Diese Tabelle muss mit einem Datensatz initialisiert werden, dessen Identitätsspaltenwert 1 beträgt, und dessen Inkrementorspaltenwert dem ersten verfügbaren Schlüssel entspricht, der verwendet werden soll. Nachdem Sie diese Tabelle eingerichtet haben, sind Sie in der Lage, die automatische Schlüsselerstellung zu verwenden.

Die automatische Schlüsselerstellung einrichten

Die mit diesem Lernprogramm bereitgestellte Musterdatenbank verfügt über eine Schlüsselerstellungstabelle namens 'KEYS' (SCHLÜSSEL). Deren beide Spalten stellen wie oben beschrieben für jeden neuen Datensatz eine neue ID-Nummer bereit. Mit den folgenden Schritten werden Sie den relationalen Datensatz create_record einrichten, um dessen ID-Nummer aus der Tabelle KEYS abzurufen.
  1. Klicken Sie doppelt auf die Seite new_record.jsp in der Sicht 'Projektexplorer'.
  2. Klicken Sie doppelt auf den relationalen Datensatz create_record in der Sicht 'Seitendaten'. Das Fenster 'Relationalen Datensatz konfigurieren' wird geöffnet.
  3. Klicken Sie auf Metadatendefinition aus einem vorhandenen Datensatz oder Satzliste wiederverwenden und Datensatz mit vorhandenen Daten aus der Datenbank füllen', und anschließend auf Weiter.
  4. Wählen Sie in der Drop-Down-Liste Ihre Datenbankverbindung aus, und klicken Sie auf Weiter.
  5. Auf der rechten Seite des Fensters 'Relationalen Datensatz konfigurieren' befindet sich eine Liste mit Links. Klicken Sie auf Schlüssel automatisch generieren. Das Fenster Schlüsselerstellung wird geöffnet.
  6. Wählen Sie Automatische Schlüsselerstellung verwenden aus.
  7. Klicken Sie, um die Liste 'W5SAMPLE' zu erweitern, und klicken Sie anschließend auf die Tabelle KEYS.
  8. Klicken Sie im Feld Identitätsspalte auswählen auf KEY_ID (SCHLÜSSEL-ID).
  9. Klicken Sie im Feld Inkrementorspalte auswählen auf NEXT_KEY (NÄCHSTER_SCHLÜSSEL).

    Da Sie für die ID der Kleinanzeige lediglich einen Schlüssel benötigen, belassen Sie die Einstellung von 'Abgerufene Schlüssel' auf 1. Wenn Sie mehrere Schlüssel brauchen würden, könnte die Datenbank über diese Einstellung veranlasst werden, alle Schlüssel gleichzeitig auswählen.

    Das Fenster 'Datenobjekt konfigurieren' sollte folgendermaßen aussehen:

    Fenster 'Datenobjekt konfigurieren'.

  10. Klicken Sie auf Schließen, um das Fenster Schlüsselerstellung zu schließen, und anschließend auf Fertig stellen, um die Änderungen anzuwenden. Nun wird das Feld 'ID' für jeden neuen Datensatz automatisch generiert. Als Nächstes müssen Sie das Eingabefeld 'ID' entfernen, damit der Benutzer keinen Wert eingeben kann.
  11. Platzieren Sie den Cursor in die oberste Zeile der Eingabeformulartabelle, indem Sie auf den Text ID: klicken.
  12. Klicken Sie auf Tabelle > Löschen > Zeile löschen.
  13. Speichern Sie die Seite.
Wenn Sie sehen wollen, welcher Schlüssel jeweils für Sie generiert wird, hätten Sie stattdessen auch die Möglichkeit, die Eingabekomponente für die ID-Nummer zu löschen und sie durch eine Ausgabekomponente zu ersetzen, die an die Spalte ID von create_record gebunden ist. In diesem Fall würde der automatisch erstellte Schlüssel oben im Formular angezeigt werden, ohne dass der Benutzer ihn ändern könnte.

Das abgeschlossene Lernprogramm testen

Wenn Sie bereit sind, Ihre Webanwendung zu publizieren, benötigen Sie einen Host-Server, damit Benutzer über das Internet auf die Website zugreifen können. Zum Testen Ihrer Website können Sie jedoch eine verfügbare Laufzeit verwenden, um einen Server für Testzwecke zu simulieren. Informationen dazu, wie die Website getestet wird, finden Sie in Lerneinheit 1.3: Website testen.

Prüfpunkt für die Lerneinheit

Sie haben Lerneinheit 2.4 abgeschlossen. In dieser Lerneinheit haben Sie gelernt, wie Sie die automatische Schlüsselerstellung einrichten.

< Vorherige Lektion | Nächste Lektion >