Relationen in Papyrus Datenbanken

Relationalität beschreibt die Möglichkeit, Daten aus Datensätzen verschiedener Datenbank-Tabellen miteinander zu verknüpfen (nachdem man die Beziehungen dazu definiert hat).

Eine typische Anwendung dafür ist eine Fakturierung zum Schreiben von Rechnungen, wo die Rechnungen sich die Daten „relational“ aus Kundenstamm und Artikelverzeichnis holen.

Erzeugen von Relationen

Das Erzeugen von Relationen geschieht zwischen Feldern von mehreren Tabellen, die in einer Datenbank in Bezug zueinander stehen.

Eingabefeld für Relationen

Eine Relation zwischen zwei Datenbank-Tabellen legen Sie im Menü »Datenbank« bei »Feldeigenschaften…« fest. Gehen Sie hier auf die Dialogseite »Relationen«.

Mit »Neue Relation…« legt man die Verknüpfung zwischen zwei Datenbank-Tabellen fest.

Geben Sie der Relation erst einen Namen; dann geben Sie bei »Primärtabelle« an, aus welcher Tabelle Sie Daten in Ihren Datensatz durch die Verknüpfung einfließen lassen wollen.

Beachten Sie hierbei, dass Sie zwischen dem Typ der Papyrus-eigenen Relationen und dem »klassischen« Relationen Typus, der mit expliziten Schlüsselfeldern arbeitet, die über alphanumerische eindeutige Schlüsselnummern verknüpft sind, wählen können.

Zum Schluss müssen Sie noch das Verhalten festlegen, was passieren soll, wenn die referenzierten Daten, auf die sich ein Datensatz mit seiner relationalen Verknüpfung bezieht, verändert oder gar gelöscht werden, denn dann steht die Tabelle, in die diese veränderten/gelöschten Daten einfließen sollen, leer da.

Sie haben jetzt diverse Entscheidungsmöglichkeiten – zunächst können Sie mit »Nicht erlaubt« verbieten, dass Daten, die in Relationen benötigt werden, gelöscht werden. Eine gute Alternative ist, dass Sie befehlen, dass die relational gezogenen Daten vor dem Löschen des Ursprungs als fester Text über die Relation in den Zieldatensatz »abgeschrieben« werden. Natürlich können Sie auch die Verknüpfung löschen oder sogar die Ziel-Datensätze löschen.

Jetzt können Sie die Angaben in »Feldeigenschaften…« vervollständigen und bei »Suche eines Primärdatensatzes« angeben, ob Papyrus Base sich bei der Suche nach dem Quelldatensatz »Zunächst nur im Primärfeld« (also dem Feld, für das Sie die Relation »gebaut« haben) oder sogar per Volltextsuche den kompletten Datensatz durchsuchen soll.

Dann können Sie angeben, ob ein »Überschreiben des Ergebnisses« erlaubt sein soll und, ob die Relationen dynamisch sein sollen oder ob Papyrus gleich die aus der Quelltabelle gezogenen Daten in normalen Text wandeln soll.

Sie können noch bestimmen, wie sich der Aufbau einer Relation direkt beim Verknüpfen eines Datensatzes verhält:

Für manche Fälle mag es sinnvoll sein, dass vor dem endgültigen Zustandekommen der Datenübernahme noch einmal der Quell-Datensatz zur Kontrolle im Eingabeformular angezeigt wird. Manchmal aber weiß man genau, dass die Daten stimmig sind, und möchte die Verknüpfung ohne vorherigen Aufruf des Quell-Datensatzes geschlossen bekommen.

Zuletzt können Sie hier angeben, ob eine Warnmeldung erscheinen soll, wenn Sie einen Quelldatensatz verändern, der über Relationen mit anderen Datensätzen verknüpft ist.

Relationen mit expliziten Schlüsselfeldern in Papyrus

Papyrus Base realisiert relationale Verknüpfungen oder kurz Relationen normalerweise über unsichtbare und eindeutige Datenbank-interne Zeiger auf die Quell-Datensätze.

Das funktioniert allerdings nicht, wenn man eine bestehende Datenbank importieren will, die relationale Verknüpfungen auf die klassische Art benutzt, also mit expliziten und eindeutigen Schlüsselfeldern.

Dazu kann man im Dialog »Neu / Ändern« (»Feldeigenschaften«, Seite »Relation«) einstellen, ob die Relation über explizite Schlüsselfelder laufen soll. Hierfür muss man das Schlüsselfeld in Quelltabelle und Zieltabelle auswählen.

Die »klassischen« Relationen verhalten sich genauso wie normale Relationen, nur wird beim Setzen der Relation das Schlüsselfeld automatisch angepasst.

Will man die Datenbank nur in Papyrus Base weiterbearbeiten, kann man nach dem Import eine solche Relation auch in eine Relation mit den Papyrus-typischen versteckten Schlüsselfeldern wandeln, und die expliziten Schlüsselfelder entfernen. Die Schritte dafür sind:

  • Importieren Sie die relational verknüpften Tabellen nacheinander in dieselbe Datenbank (DBase-Tabellen enthalten keine direkten Informationen über Relationen)
  • Gehen Sie in der Zieltabelle einer Relation auf Feldeigenschaften/Relation/Neue Relation und definieren Sie die Relation mit den entsprechenden Schlüsselfeldern.
  • Weisen Sie die Änderungen mit »Tabelle Anpassen« zu.
  • Danach können Sie das Schlüsselfeld in der Zieltabelle löschen. Sie erhalten einen Hinweis, dass die Relation in eine Relation mit versteckten Schlüsselfeldern gewandelt wird. Die relationalen Verknüpfungen bleiben bei »Tabelle Anpassen« erhalten.
  • Danach können Sie das nun nicht mehr benötigte Schlüsselfeld in der Primärtabelle ändern.

Man kann aber auch mit expliziten Schlüsseln weiterarbeiten. Dafür sollte der Schlüssel in der Primärtabelle eindeutig sein. Eindeutigkeit ist unter Feldeigenschaften/Werte einstellbar. Wenn Sie versuchen, in dem Feld einen Wert einzugeben, den es schon gibt, erhalten Sie einen Hinweis.

Mit »Automatisch erzeugtes Schlüsselfeld« wird für einen neuen Datensatz automatisch ein neuer Schlüssel erzeugt. Automatische Schlüsselfelder sind nicht editierbar.

Last updated by Matthias Wenzel on Dezember 14, 2017