Base
 

Kapitel 1
Einführung in Base

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-Builder

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.

Hinweis

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 hingegen 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.

«(Hsqldb, Firebird)» würde bedeuten: Funktioniert mit der HSQLDB, nicht aber mit Firebird. Unterschiede sind entsprechend gekennzeichnet.

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 viele Beispieldatenbanken1 beigefügt, die nur auf spezielle Probleme zugeschnitten sind:

Hinweis

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 Dokumentation und eigener Programmversion zu verstehen.

Hinweis

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 werden oder entsprechend 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.

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.

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 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:

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. Es wird zuerst eine eingebettete 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 der eingebetteten HSQLDB 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 zeigen. 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 entsprechend auf «Datum» einzustellen. Dadurch wird gewährleistet, dass nur gültige Datumseingaben aufgenommen werden und außerdem mit Hilfe das Datums Sortierungen durchgeführt oder z. B. das Alter berechnet werden kann.

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.

Tipp

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:
tblName         → Tabellenbezeichnung («tbl» steht für «table»)
qryName         → Abfragebezeichnung («qry» steht für «query»)
frmName         → Formularbezeichnung («frm» steht für «form»)
rptName         → 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.

 

Hinweis

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 auf «Text» belassen, aber auf 5 Zeichen begrenzt. Die 5 Zeichen reichen aus, um damit auch passende Kürzel für die Sportarten zu finden.

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' als Eingabe.

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 («Shift») betätigt und die zweite Zeile zusätzlich markiert. Über das Kontextmenü der Maus lässt sich 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.

Tipp

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 werden 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.

Das Feld "Teilnehmer"."ID" wird mit der linken Maustaste markiert. Die Maustaste wird gehalten und die Maus auf das Feld "rel_Teilnehmer_Sportart"."ID_Teilnehmer" gezogen. Der Cursor zeigt eine Verknüpfung an. Die Maustaste wird über dem Feld "rel_Teilnehmer_Sportart"."ID_Teilnehmer" los gelassen. Es erscheint der folgende Dialog zur Definition der Beziehung («Relation»).

Das Feld "rel_Teilnehmer_Sportart"."ID_Teilnehmer" soll nicht verändert werden, wenn "Teilnehmer"."ID" verändert würde. Das ist die Standardeinstellung. "Teilnehmer"."ID" wird sowieso nicht verändert, da es sich um ein automatisch hoch zählendes Feld handelt und dort kein Eingriff vorgenommen werden soll.

Der Datensatz der Tabelle "rel_Teilnehmer_Sportart" soll gelöscht werden, wenn "ID_Teilnehmer" gleich "Teilnehmer"."ID" ist und "Teilnehmer"."ID" gelöscht wird. Wenn also aus der Teilnehmer-Tabelle ein Teilnehmer entfernt wird, dann werden alle entsprechenden Datensätze aus der Tabelle "rel_Teilnehmer_Sportart" entfernt. Dieses Vorgehen wird als «kaskadierendes Löschen» bezeichnet.

Im nächsten Schritt werden "rel_Teilnehmer_Sportart"."ID_Sportart" und "Sportart"."ID" durch Ziehen der Maus bei gedrückter linker Maustaste verbunden. Auch hier soll ein Datensatz gelöscht werden, wenn die entsprechende Sportart gelöscht wird.

Für die Datenänderung bei "Sportart"."ID" ist allerdings eine andere Variante gewählt worden. Wird "Sportart"."ID" geändert, so wird entsprechend "rel_Teilnehmer_Sportart"."ID_Sportart" angepasst. So kann gegebenenfalls das Kürzel von maximal 5 Zeichen für eine Sportart problemlos angepasst werden, auch wenn bereits viele Datensätze in der Tabelle "rel_Teilnehmer_Sportart" stehen. Dieser Vorgang wird als «kaskadierendes Update» bezeichnet.

Die Felder sind nun fertig verbunden. An den Enden der Verbindungen erscheint jeweils eine «1» und ein «n». Ein Teilnehmer kann mehrmals in der Tabelle "rel_Teilnehmer_Sportart" auftauchen. Eine Sportart kann ebenfalls mehrmals in der Tabelle "rel_Teilnehmer_Sportart" auftauchen. Nur die Kombination von Teilnehmer und Sportart gibt es in der Tabelle nur maximal 1 Mal. Aus zwei 1:n-Beziehungen wird so über die dazwischen gesetzte Tabelle "rel_Teilnehmer_Sportart" eine n:m-Beziehung.

Solch eine Tabellenkonstruktion lässt sich nur schlecht über die Eingabe in Tabellen mit Inhalt füllen. Es müsste alle 3 Tabellen geöffnet sein, wenn einem Teilnehmer eine Sportart zugewiesen werden soll. In der Tabelle "Teilnehmer" muss "Teilnehmer"."ID" gesucht werden und nach "rel_Teilnehmer_Sportart" übertragen werden. In der Tabelle "Sportart" muss "Sportart"."ID" gesucht und entsprechend in "rel_Teilnehmer_Sportart" eingetragen werden. Zu umständlich: Ein Formular löst das eleganter.

Eingabeformular

Formulare können direkt in der Entwurfsansicht oder mit Hilfe des Assistenten erstellt werden. Die Erstellung mit dem Assistenten greift dabei auch alten Hasen so gut unter die Arme, dass diese eben schnell den Assistenten durchlaufen lassen und anschließend ein erst einmal vom Grund her erstelltes Formular ihren Wünschen anpassen. Das ist häufig der deutlich Zeit sparendere Weg.

Zuerst wird unter «Datenbank» der Arbeitsbereich für «Formulare» gewählt. Dann unter «Aufgaben» «Formular unter Verwendung des Assistenten erstellen ...».