Base Handbuch

Kapitel 1
Einführung in Base

LibreOffice 24.2

Inhalt

Einführung

Base – ein Container für Datenbankinhalte

Formulare – Start für die Dateneingabe

Tabellen – Grundlagen für die Dateneingabe

Abfragen – Auswertungsmöglichkeiten für eingegebene Daten

Berichte – Präsentationen der Datenauswertung

Sicherer Umgang mit einer Base-Datei

Eine einfache Datenbank – Testbeispiel im Detail

Tabellenerstellung

Eingabeformular

Mit dem Tabulator zum Unterformular

Navigationsleiste des Hauptformulars auch im Unterformular aktivieren

Eingabe eines Kontrollfeldes einschränken

Abfrage

Ausdruck im Bericht

Abstände zwischen den Berichtsbereichen einstellen

Beeinflussung eines Textfeldinhaltes durch eine Formel

Umstellung der Formatierung eines Textfeldes

Verschieben von Feldern im Report-Designer

Erweiterungen der Beispieldatenbank

Weiteres Einführungs- und Beispielmaterial

Einführung

Im täglichen Büroeinsatz werden häufig Tabellenkalkulationen dazu benutzt, Datensammlungen zu erstellen um anschließend damit eventuell noch kleine Berechnungen durchzuführen. Die Tabellensicht ist sofort da, der Inhalt einfach einzugeben – da fragen sich dann viele Nutzer, warum es denn eine Datenbank sein sollte. Dieses Handbuch versucht den Unterschied zwischen Tabellenkalkulation und Datenbank herauszuarbeiten. Zu Beginn wird erst einmal kurz dargestellt, was eine Datenbank denn überhaupt leisten kann.

In der Fachsprache wird statt von Datenbanken von einer Benutzeroberfläche und einem «Datenbanksystem» gesprochen. Dieser Begriff umfasst das «Datenbankmanagementsystem» (DBMS) und den eigentlichen Datenbestand, die «Datenbank».
Base bietet einen Zugriff auf verschiedene Datenbanksysteme über eine grafische Benutzeroberfläche. Base arbeitet standardmäßig mit dem eingebetteten Datenbanksystem «HSQLDB». Seit der Version LO 4.2 ist außerdem das Datenbanksystem «Firebird», zuerst als «experimentelle Funktion», hinzugekommen. Mit der Version LO 5.3 ist auf die Version 3.0 des Firebird-Datenbanksystems, ebenfalls zunächst noch als «experimentelle Funktion» umgestellt worden. Ab Version LO 6.1 funktionierte «Firebird» zwischendurch versuchsweise standardmäßig. Ob und wann die interne «HSQLDB» durch «Firebird» ersetzt wird steht auch bei Erscheinen von LO 24.2 noch nicht fest, da die Integration von «Firebird» in die GUI bisher nicht die Qualität der Integration der «HSQLDB» erreicht, aber stetig verbessert wird.
Dieses Handbuch zeigt an verschiedenen Stellen den Unterschied zwischen den beiden internen Datenbanksystemen auf, «(Hsqldb, Firebird)» würde bedeuten: Funktioniert mit der HSQLDB, nicht aber mit Firebird. Unterschiede sind entsprechend gekennzeichnet.

Wenn Extras → Optionen → LibreOffice → Erweitert → Experimentelle Funktionen aktiviert wird, dann wird ein Migrationsmodul aktiviert, das eingebettete HSQLDB-Datenbanken nach Firebird zu migrieren versucht. Dieses Modul erfordert anschließend viele zusätzliche Eingriffe, da Funktionen in beiden Systemen teilweise nicht identisch sind. Die Migration sollte tunlichst nicht versucht werden, bevor eine Sicherungskopie der *.odb-Datei erfolgt ist. Siehe dazu auch die Hinweise im Kapitel «Datenbank erstellen», im Anhang des Handbuches und auf https://wiki.documentfoundation.org/Documentation/HowTo/MigrateFromHSQLDB/de.
Die experimentellen Funktionen werden aber auch benötigt, um überhaupt eine Firebird-Datenbank zu erstellen. Nach dem Erstellen der Datenbankdatei können dann die experimentellen Funktionen direkt wieder ausgeschaltet werden.

Das gesamte Handbuch bezieht sich in der Hauptsache auf zwei Beispieldatenbanken. Die eine Datenbank hat die Bezeichnung «Medien_ohne_Makros.odb», die andere Datenbank ist entsprechend mit Makros erweitert worden und trägt die Bezeichnung «Medien_mit_Makros.odb». Beide Datenbanken sollen einen Bibliotheksbetrieb ermöglichen: Medienaufnahme, Nutzeraufnahme, Medienverleih und alles, was damit verbunden ist wie z. B. das Anmahnen säumiger EntleiherInnen.

Daneben sind den einzelnen Kapiteln viele Beispieldatenbanken1 beigefügt, die nur auf spezielle Probleme zugeschnitten sind:

Bis auf die Datenbank «Beispiel_CSV_Einbindung.odb» liegen alle Datenbanken sowohl in einer Fassung für die interne Hsqldb als auch für Firebird vor. Firebird kann *.csv-Dateien nicht als Datenquelle direkt nutzen und vor allem nicht in *.csv-Dateien schreiben.

Wie jede Software läuft auch LO-Base nicht vollkommen fehlerfrei. Besonders ärgerlich sind hier die «Regressionen», also Rückschritte von einer vorhergehenden Version zur gerade aktuellen Version. Der folgende Link führt zu den momentan noch offenen Regressionen: https://bugs.documentfoundation.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=REOPENED&bug_status=NEEDINFO&component=Base&keywords=regression&keywords_type=allwords&product=LibreOffice&query_format=advanced&resolution=---

Ein Blick auf die Bug-Liste kann also helfen, Unterschiede zwischen dieser über viele Jahre zusammengetragenen Dokumentation und der eigenen Programmversion zu verstehen.

Base-Dateien sind Dateien, in denen die interne Datenbank mit abgespeichert wird. Diese Datenbankdateien sollten immer wieder gesichert werden, damit der Datenverlust gering gehalten wird. Besonderes Augenmerk gilt hier der Migration von der internen HSQLDB zur Firebird-Datenbank. Auch sollte eine Base-Datei mit interner Datenbank immer nach Beendigung der Arbeit abgespeichert werden. Ein Zuklappen des Laptops kann sonst beim Erwachen des Systems zu Datenverlust führen.

In diesem Handbuch werden Anführungszeichen mit unterschiedlichen Intentionen verwendet:
"Tabellenname"."Feldname" > Tabellen und Felder in Datenbanken werden in doppelten Anführungszeichen oben wieder gegeben.
'Wert' > Werte, die in die Datenbank eingegeben oder aus ihr gelesen werden, sollen in einfachen Anführungszeichen erscheinen.
«Hervorhebungen» > Alles, was sonst hervorgehoben werden soll, erscheint in der französischen Form der Anführungszeichen.

Base – ein Container für Datenbankinhalte

Eine Base-Datei ist eigentlich nur ein gepacktes Verzeichnis, in dem Informationen für die verschiedenen Arbeitsbereiche von Base stecken. In der täglichen Nutzung startet eine Base-Datei erst einmal mit der folgenden Ansicht:

Zur Arbeitsumgebung von Base gehören insgesamt vier Arbeitsbereiche: Tabellen, Abfragen, Formulare und Berichte. Je nach gewähltem Arbeitsbereich können bestimmte Aufgaben zur Neuerstellung der Elemente in Angriff genommen oder fertiggestellte Elemente aufgerufen werden.

In den Arbeitsbereichen Formulare und Berichte können die jeweiligen Elemente auch innerhalb einer Verzeichnisstruktur angeordnet werden:

Dies geht entweder direkt beim Abspeichern über den Speicherdialog oder durch Neugründung von Verzeichnissen über Einfügen → Ordner. Wird ein Formular über den Assistenten erstellt, so steht der Speicherort in dem Ordner leider nicht zur Verfügung. Hier müsste dann das Formular anschließend in den Unterordner verschoben werden.

Obwohl die Basis für eine Datenbank durch Tabellen gebildet wird, startet Base mit der Formularansicht, weil Formulare in der Regel die Elemente sind, mit denen die tägliche Datenbankarbeit vonstatten geht. Über die Formulare werden Einträge in die Tabellen vorgenommen und Inhalte aus den Tabellen ausgewertet.

Formulare – Start für die Dateneingabe

Einfache Formulare bilden lediglich eine Tabelle wie im oben sichtbaren Tabellenkontrollfeld mit den Namen ab. Dieses Formular erfüllt durch seine Struktur einige zusätzliche Punkte.

Alle diese Funktionen können ohne den Einsatz von zusätzlicher Programmierung mit Makros gewährleistet werden, wenn entsprechend an den Formularen gefeilt wird.

Tabellen – Grundlagen für die Dateneingabe

Die Tabellen in einer Datenbank hängen in einem großen Geflecht zusammen. Eine Tabelle bezieht Informationen aus einer anderen oder gibt Informationen an andere Tabellen weiter. Dies wird als «Relation» bezeichnet.

Die Tabelle "Ausleihe" steht in direkter Beziehung zu den Tabellen "Medien" und "Leser".

Statt in der Ausleihe den Titel eines Buches abzuspeichern, wird dort nur eine Zahl abgespeichert. Das eindeutige Kennzeichen eines Datensatzes der Tabelle "Medien" ist in dem Feld "ID" gespeichert. Das Feld ist das Schlüsselfeld der Tabelle "Medien", der Primärschlüssel.

In der Tabelle "Ausleihe" wird auch nicht jedes Mal der Lesername eingetragen. Hier gibt die Tabelle "Leser" Auskunft. Auch sie hat ein Primärschlüsselfeld. Der Wert dieses Feldes kann dann in die Tabelle "Ausleihe" eingetragen werden.

Die Beziehungen zwischen den Tabellen haben hier den Vorteil, dass die Schreibarbeit im Formular erheblich reduziert wird. Statt bei jeder Ausleihe ein Medium zumindest unverwechselbar und für jeden erkennbar aufzuschreiben und Leser mit Vor- und Nachnamen zu notieren, wird einfach im Inhalt der anderen Tabellen nachgesehen. Schließlich wird dasselbe Medium später noch öfter ausgeliehen und derselbe Leser kann schon beim ersten Entleihvorgang mehrere Medien entleihen.

Relationen helfen auch, Fehler durch unterschiedliche Schreibweisen z.B. von Lesernamen zu vermeiden.

Die Tabellengrundlage für das oben vorgestellte Formular sieht erst einmal recht nüchtern aus. In der oben abgebildeten Tabelle werden bis auf die Nutzerneueingabe alle Eingaben gemacht, die in dem vorher gezeigten Formular möglich sind. Dabei werden im Formular die Verbindungen dieser Tabelle zu den anderen Tabellen der Datenbank genutzt.

Diese Eingaben reichen aus, um letztlich einen Bibliotheksbetrieb in Gang zu halten.

Abfragen – Auswertungsmöglichkeiten für eingegebene Daten

Abfragen zeigen eine Sicht auf die Tabellen. Sie bringen Inhalte mehrerer Tabellen zusammen in einer Übersicht. Abfragen werden nur in der Abfragesprache «SQL» gespeichert. Sie sind also keine neuen Tabellen, auch wenn sie von der Ansicht her in Base erst einmal gleich erscheinen.

Diese Abfrage listet alle Medien auf, die zur Zeit entliehen sind. Darüber hinaus berechnet sie, wie lange die Medien bereits entliehen sind und wie lange sie noch entliehen werden dürfen. Während das Feld "Medien_ID" das Fremdschlüsselfeld ausliest, wird in dem Feld "Medium" aus dem Primärschlüssel, dem Titel und dem Autor des Mediums ein zusammenhängender Text gebildet. Dieses Feld wird dann im Formular unter dem Untertitel «Rückgabe» benötigt. Einige Felder der Abfrage dienen dabei als Verbindungsfelder zu dem eigentlichen Ausleihformular mit der Tabelle "Ausleihe", nämlich die Felder "Medien_ID" und "Leser_ID".

Berichte – Präsentationen der Datenauswertung

Über Berichte werden die Daten so aufbereitet, dass sie sinnvoll ausgedruckt werden können. Formulare wie das folgende sind nicht dazu geeignet, z. B. einen sauber formatierten Brief auszugeben.

Bevor ein aktueller Bericht in Form einer Mahnung ausgedruckt werden kann, müssen in diesem Formular erst einmal die Mahnungen bestätigt werden. Im oberen Tabellenkontrollfeld stehen dafür alle Namen der Leser, die ein Medium entliehen haben und für die eine negative Restzeit vermerkt ist.

Für jedes anzumahnende Buch wird im unteren Tabellenkontrollfeld ein Mahndatum festgelegt. Dies dürfte bei der Abarbeitung von Mahnungen das aktuelle Datum sein. Die Mahnungsnummer wird nicht extra geschrieben. Sie wird anhand der bisher ergangenen Mahnungen einfach durch Addition ermittelt.

Dieses Formular benötigt in der Fassung ohne Makros noch eine Eingabe durch den Nutzer. In der Fassung, die mit Makros arbeitet, wird einfach das Datum automatisch geschrieben und anschließend der Bericht zum Mahnungsdruck aufgerufen.

Mit Hilfe einer Abfrage lässt sich aus den getätigten Eingaben solch eine Mahnung zum Ausdruck fertig erstellen. Der Nutzer der Datenbank braucht dazu lediglich bei den Berichten den Bericht Mahnung auszuwählen und kann dann einen entsprechenden Mahnbrief an alle die Personen schicken, bei denen im vorher angegebenen Formular eine Mahnung bearbeitet wurde.

In so einem Bericht stehen also gegebenenfalls auf den folgenden Seiten jeweils auf einer Seite weitere Mahnungen für andere Personen. Sollte ein Leser so viele Medien entliehen haben, dass der Platz auf einer Seite nicht ausreicht, so wird die Tabelle auf der Folgeseite einfach fortgesetzt.

Ein so erstellter Bericht ist also umfangreicher als ein Serienbrief, der mit Writer erstellt wird: er stellt automatisch alle Datensätze zusammen, die gedruckt werden sollen und ordnet den zusätzlichen Text entsprechend an.

Ein ähnlicher Brief wie in der obigen Abbildung lässt sich sonst nur unter Zuhilfenahme von Makros realisieren, wie es in «Drucken über Textfelder» beschrieben wird.

Sicherer Umgang mit einer Base-Datei

Tabellen der internen Datenbank, Abfragen, Formulare und Berichte werden in einer Base-Datei gespeichert. Durch diese Vielzahl an Elementen, von denen z.B. die Datenbank auch noch während der Arbeit in den Arbeitsspeicher ausgelagert wird, ist solch eine Datei ein Element, mit dem sorgsam umzugehen ist. Manchmal sind Bugmeldungen zu lesen, die vor diesem Hintergrund deutlich machen, dass eine Datenbankdatei eben einen etwas sorgfältigeren Umgang benötigt als z.B. eine Textdatei, die mit dem Writer geschrieben wird.

Die folgenden Hinweise sollten deshalb beim Umgang mit einer Base-Datei berücksichtigt werden:

Für Firebird vorläufig noch: Daten werden nicht automatisch gespeichert. Das Speichersymbol in Tabellen zeigt zwar eine Speicherung beim Datensatzwechsel an. Diese Speicherung muss aber noch im Hauptfenster der Base-Datei bestätigt werden. Ohne diese Speicherung gehen alle neu eingegebenen Daten verloren.

Eine einfache Datenbank – Testbeispiel im Detail

Die Erstellung einer Datenbank wird in «Neue Datenbank als interne Datenbank» abgehandelt. Dort werden neben der internen HSQLDB oder der internen Firebird-Datenbank verschiedene andere Datenbanksysteme eingebunden.

Das folgende Beispiel basiert auf der Standarddatenbank HSQLDB, die mit LibreOffice als interne Datenbank installiert wird. Unterschiede zur internen Firebird-Datenbank werden an entsprechender Stelle gesondert gekennzeichnet.

Es wird zuerst eine «Neue Datenbank als interne Datenbank» erstellt, die nicht angemeldet wird.

Erstes Kennzeichen bei der Erstellung einer Datenbank ist, dass zum Abschluss des Assistenten zuerst einmal ein Speicherort gesucht wird und die Datei abgespeichert wird.

Die Datenbank soll dazu dienen, einen Sportwettkampf in verschiedenen Disziplinen zu organisieren. Als Bezeichnung wurde deshalb «Beispiel_Sport»2 gewählt.

Tabellenerstellung

Sobald die Abspeicherung erfolgt ist, erscheint der Startbildschirm der Benutzeroberfläche für die Datenbank. Standardmäßig sind zuerst auf der linken Seite im Bereich Datenbank → Tabellen ausgewählt. Die Tabellen sind das zentrale Speicherelement für die Daten. Ohne Tabellen keine Datenbank.

Tabellen → Aufgaben → Tabelle in der Entwurfsansicht erstellen … wird angeklickt. Es öffnet sich der folgende Bildschirm:

Hier werden zuerst einmal die verschiedenen Feldnamen für die erste Tabelle eingetragen. Die Tabelle soll die Teilnehmer und Teilnehmerinnen enthalten. Sie ist hier erst einmal auf die wesentlichen Bestandteile reduziert.

Die Feldnamen "Vorname", "Nachname" und "Geburtstag" dürften klar sein. Zusätzlich wurde ein Feld mit der Bezeichnung "ID" eingetragen. Dieses Feld soll später einen Wert aufnehmen, der die einzigartige Eigenschaft eines jeden Datensatzes ist. So ein einzigartiges Schlüsselfeld ist für die eingebettete Datenbank notwendig. Ansonsten lassen sich keine Datensätze in die Tabelle eingeben. Dieses Schlüsselfeld wird bei Datenbanken als «Primärschlüssel» bezeichnet.

Es könnte natürlich auch ein anderes Feld für diese Eigenschaft genutzt werden. Wird aber z. B. der "Nachname" alleine dafür genutzt, so können nicht zwei Personen mit gleichem Nachnamen abgespeichert werden. In diesem Fall könnte es helfen, zwei Felder zusammen zu einem gemeinsamen Primärschlüssel zu erklären. Eine Garantie, dass das auf Dauer funktioniert, ist das aber nicht. Deshalb wird hier die einfachere Variante bevorzugt.

Im zweiten Arbeitsgang werden jetzt die Feldtypen für die bereits benannten Felder aus der Liste ausgewählt. Das Feld "ID" wird auf den Feldtyp Integer eingestellt. Es wird dann Ganzzahlen speichern. Dieser Feldtyp hat den Vorteil, dass er bei neuen Datensätzen automatisch mit der nächst höheren Ganzzahl versehen werden kann.

Die Feldeigenschaft des Feldes "ID" wird bearbeitet. Für dieses Feld wird die automatische Einsetzung von aufsteigenden Zahlenwerten aktiviert: Feldeigenschaften → Auto-Wert → Ja.

 

Durch die Einstellung des Auto-Wertes sollte beim Verlassen der Feldtypenauswahl auf dem Zeilenkopf ein Schlüsselsymbol zu sehen sein. Das zeigt an, dass dieses Feld den Primärschlüssel der Tabelle bildet. Wird nicht der Auto-Wert gewählt, so kann der Primärschlüssel auch über das Kontextmenü der Maus (rechte Maustaste → Primärschlüssel) ausgewählt werden.

Für den Geburtstag ist noch der Feldtyp Datum einzustellen. Dadurch wird gewährleistet, dass nur gültige Datumseingaben aufgenommen werden und außerdem mit Hilfe des Datums Sortierungen durchgeführt oder z. B. das Alter berechnet werden kann.

Welche Felder müssen auf jeden Fall einen Inhalt haben? Diese Tabelle macht ohne Inhalt im Feld "Nachname" und "Datum" keinen Sinn. Schließlich soll die Person erkannt werden und einer Altersklasse zugeordnet werden können. Bei "Nachname" und "Datum" sollte also Feldeigenschaften → Eingabe erforderlich → Ja gewählt werden.

Die Tabelle wird nun unter dem Namen "Teilnehmer" abgespeichert. Anschließend können Daten eingegeben werden. Im Feld "ID" ist die Eingabe nicht nötig. Sie wird automatisch beim Abspeichern des Datensatzes erledigt.

Bei der intensiveren Nutzung von Base vor allem mit Makros kann es zu Verwechselungen von Tabellenbezeichnungen, Abfragebezeichnungen, Formularbezeichnungen und Berichtsbezeichnungen führen. Um hier eine deutlichere Unterscheidung zu ermöglichen, werden häufig Kürzel vor die Namensbezeichnungen gesetzt:
tbl_Name  > Tabellenbezeichnung («tbl» steht für «table»)
viw_Name  > Ansichtsbezeichnung («viw» steht für «view»)
qry_Name  > Abfragebezeichnung («qry» steht für «query»)
frm_Name  > Formularbezeichnung («frm» steht für «form»)
rpt_Name  > Berichtsbezeichnung («rpt» steht für «report»)
Die für dieses Handbuch erstellten Beispieldatenbanken folgen dieser Namensgebung nicht. Eine entsprechende Benennung wäre bei umfangreichen Datenbanken von Anfang an sinnvoll. Die umfangreichsten Datenbanken dieses Handbuches sind aber bereits entstanden, bevor dieser Vorschlag zur Benennung auftauchte.

Die Datenbankdatei ist ein gepacktes Verzeichnis von einzelnen Dateien. Das Speichern eines einzelnen Elementes wie der Tabelle wird deshalb nicht direkt in die Datenbankdatei selbst geschrieben. Deswegen muss nach der Erstellung von Tabellen, Abfragen, Formularen und Berichten anschließend auch der Speicherbutton für die Datenbankdatei selbst betätigt werden.
Einzig das Abspeichern von eingegebenen Daten funktioniert beim Verlassen der Datenzeile automatisch.

Die Teilnehmer können jetzt eingegeben werden. Folgende Informationen fehlen allerdings auf den ersten Blick:

Es wird eine Tabelle "Sportarten" erstellt. Da nicht so sehr viele unterschiedliche Sportarten in Frage kommen, wird hier nicht der automatisch hoch zählende Primärschlüssel gewählt. Stattdessen wird der Feldtyp Text belassen, aber auf 5 Zeichen begrenzt. Die 5 Zeichen reichen aus, um damit auch passende Kürzel für die Sportarten zu finden.

Der Feldtyp «Text» hat den Vorteil, dass schon bei einem Blick auf den Primärschlüssel "ID" klar wird, um welche (ausgeschriebene) "Sportart" es sich handelt. Das Feld "Sportart" wird über Feldeigenschaften → Eingabe erforderlich → Ja zum Pflichtfeld erklärt.

Anschließend kann diese Tabelle zur Eingabe von Daten geöffnet werden (Doppelklick auf die Tabelle oder rechter Mausklick → Öffnen).

So könnte dann der Inhalt der Tabelle nach der Eingabe von Daten aussehen. Ohne Daten in dieser Tabelle stehen nachher in dem Formular keine Sportarten zur Auswahl.

Die Tabelle "Teilnehmer" soll noch einmal zum Bearbeiten, nicht zur Dateneingabe, geöffnet werden. Dies geschieht über das Kontextmenü der Tabelle.

Der Tabelle wird das Feld "Geschlecht" hinzugefügt. Ein neues Feld kann mit der grafischen Benutzeroberfläche nur am Ende der Tabelle hinzugefügt werden. Über SQL ist auch die Möglichkeit gegeben, neue Felder an einer bestimmten Position einzufügen.

Die Länge des Textes in diesem Feld beschränkt sich auf einen Buchstaben. Es reicht also 'm' und 'w', ggf. auch 'd' als Eingabe.

Auch diese Eingabe ist notwendig, damit bei den Wettbewerben nach dem Geschlecht unterschieden werden kann. Mit Feldeigenschaften → Eingabe erforderlich → Ja soll das abgesichert werden.

Die nachträgliche Einstellung eines Feldes auf Eingabe erforderlich → Ja setzt voraus, dass entweder noch keine Daten in der Tabelle sind oder alle Datensätze für das entsprechende Feld mit einer Eingabe versehen sind. Gegebenenfalls müssen also zuerst sämtliche Datensätze aus "Teilnehmer" mit einem Eintrag bei "Geschlecht" versehen werden.

Irgendwie müssen die beiden Tabellen verbunden werden, so dass jedem Teilnehmer mehrere Sportarten und jeder Sportart mehrere Teilnehmer zugeordnet werden können. Dies geschieht durch eine Tabelle, in der die Werte der beiden Primärschlüssel der Tabellen "Teilnehmer" und "Sportart" abgespeichert werden sollen. Da nicht mehr als die Kombination dieser Felder gespeichert werden soll, sind beide Felder zusammen der Primärschlüssel für diese Tabelle. Um beiden Feldern einen Primärschlüssel zuzuweisen, wird zunächst am Zeilenkopf eine Zeile markiert, danach die Großschreibtaste (Umschalt oder Shift) betätigt und die zweite Zeile zusätzlich markiert. Über das Kontextmenü der Maus lässt sich, wenn die Taste Umschalt losgelassen wurde, jetzt der Primärschlüssel festlegen.

Damit wirklich die entsprechenden Werte aus "Teilnehmer" und "Sportart" aufgenommen werden können, müssen die Felder genau dem Feldtyp entsprechen, den sie speichern sollen. "ID_Teilnehmer" muss also den Feldtyp «Integer» haben. "ID_Sportart" muss den Feldtyp «Text» haben und außerdem, wie das Feld "ID" aus der Tabelle "Sportart", auf 5 Zeichen begrenzt werden.

Die Tabelle wird unter dem Namen "rel_Teilnehmer_Sportart" abgespeichert.

In diese Verbindungstabelle würden auch z.B. die Ergebnisse eines Wettkampfes gehören. Sollen allerdings mehrere Wettkämpfe abgehalten werden, so ist zusätzlich ein Wettkampfdatum in den gemeinsamen Primärschlüssel mit aufzunehmen.

Sind die Tabellen fertiggestellt, so sollte eine entsprechende Verbindung der Tabellen fest definiert werden. So kann verhindert werden, dass in der Tabelle "rel_Teilnehmer_Sportart" z. B. eine Nummer für einen Teilnehmer auftaucht, die gar nicht in der Tabelle "Teilnehmer" verzeichnet ist.

Über Extras → Beziehungen wird das Fenster für die Beziehungsdefinition geöffnet.

Für die Beziehungsdefinition sind alle bisher erstellten Tabellen notwendig. Die einzelnen Tabellen werden markiert und über Hinzufügen in den Beziehungsentwurf aufgenommen. Anschließend wird der Dialog «Tabellen hinzufügen» geschlossen.

Bei den hinzugefügten Tabellen sind alle Felder aufgeführt. Die Primärschlüsselfelder sind zusätzlich mit einem Schlüsselsymbol gekennzeichnet. Die vorgesehenen Rechtecke für die Tabellen können übrigens beliebig verschoben und in der Größe verändert werden.