Dieses Dokument unterliegt dem Copyright © 2024 . Die Beitragenden sind unten aufgeführt. Sie dürfen dieses Dokument unter den Bedingungen der GNU General Public License (http://www.gnu.org/licenses/gpl.html), Version 3 oder höher, oder der Creative Commons Attribution License (http://creativecommons.org/licenses/by/3.0/), Version 3.0 oder höher, verändern und/oder weitergeben.
Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt.
Fast alle Hardware- und Softwarebezeichnungen und weitere Stichworte und sonstige Angaben, die in diesem Buch verwendet werden, sind als eingetragene Marken geschützt.
Da es nicht möglich ist, in allen Fällen zeitnah zu ermitteln, ob ein Markenschutz besteht, wird das Symbol (R) in diesem Buch nicht verwendet.
Mitwirkende/Autoren
Robert Großkopf |
Jost Lange |
Michael Niedermair |
Jochen Schiffers |
|
|
Rückmeldung (Feedback)
Kommentare oder Vorschläge zu diesem Dokument können Sie in deutscher Sprache an die Adresse discuss@de.libreoffice.org senden.
Vorsicht
Alles, was an eine Mailingliste geschickt wird, inklusive der E-Mail-Adresse und anderer persönlicher Daten, die die E-Mail enthält, wird öffentlich archiviert und kann nicht gelöscht werden. Also, schreiben Sie mit Bedacht!
Datum der Veröffentlichung und Softwareversion
Veröffentlicht am 01.02.2024 . Basierend auf der Version LibreOffice 24.2 .
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 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.
Vorsicht
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.
•Beispiel_Sport.odb (Kapitel «Einführung in Base»)
•Beispiel_CSV_Einbindung.odb (Kapitel «Datenbank erstellen»)
•Beispiel_Cursorsprung_Subform_Mainform.odb (Kapitel «Formulare»)
•Beispiel_Bericht_bedingte_Einblendung_von_Grafiken.odb (Kapitel «Berichte»)
•Beispiel_Bericht_Rechnung.odb (Kapitel «Berichte»)
•Beispiel_Bericht_Zeilen_Farbwechsel_Spalten.odb (Kapitel «Berichte»)
•Beispiel_PDFFormular_Import.odb (Kapitel «Datenbank-Anbindung»)
•Beispiel_Autotext_Suchmarkierung_Rechtschreibung.odb (Kapitel «Datenbank-Aufgaben»)
•Beispiel_Formular_Eingabekontrolle.odb (Kapitel «Datenbank-Aufgaben» und «Makros»)
•Beispiel_Dokumente_einlesen_auslesen.odb (Kapitel «Datenbank-Aufgaben»)
•Beispiel_Baseformular_mit_Diagramm.odb (Kapitel «Datenbank-Aufgaben»)
•Beispiel_Arrayfeld.odb (Kapitel «Datenbank-Aufgaben»)
•Beispiel_Listenfeld_Mehrfachauswahl.odb (Kapitel «Makros»)
•Beispiel_Suchen_und_Filtern.odb (Kapitel «Makros»)
•Beispiel_Direktberechnung_im Formular.odb (Kapitel «Makros»)
•Beispiel_Combobox_Listfeld.odb (Kapitel «Makros»)
•Beispiel_Fortlaufende_Nummer_Jahr.odb (Kapitel «Makros»)
•Beispiel_Datenbank_Serienbrief_direkt.odb (Kapitel «Makros»)
•Beispiel_Mailstart_Dateiaufruf.odb (Kapitel «Makros»)
•Beispiel_Daten_Import.odb (Kapitel «Makros»)
•Beispiel_Dialoge.odb (Kapitel «Makros»)
•Beispiel_hierarchische_Listenfelder.odb (Kapitel «Makros»)
•Beispiel_Druck_Writer_Tabellen.odb (Kapitel «Makros»)
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.
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 dieser über viele Jahre zusammengetragenen Dokumentation und der eigenen Programmversion zu verstehen.
Hinweis
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.
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.
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.
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.
•Die Auswahl der Personen kann mit Filtern eingeschränkt werden. Die einfache Eingabe des Buchstaben 'G' und das anschließende Drücken von OK erzeugt eine Auswahl aller Personen, deren Nachname mit 'G' beginnt.
•Neue Mediennutzer können direkt in das Tabellenkontrollfeld eingegeben werden.
•Die Ausleihdaten des aktuell markierten Nutzers werden in den darunterliegenden Feldern angezeigt. Dabei wird auch noch einmal der Name des Nutzers deutlich hervorgehoben. Hat ein Nutzer ein Buch entliehen und müsste es bereits zurückgegeben werden, so steht das Tabellenkontrollfeld «aktuelle Ausleihe» erst einmal nicht zur Verfügung. Stattdessen wird angegeben, dass die Ausleihe zur Zeit gesperrt ist.
•Das Entleihdatum wird mit dem aktuellen Datum vorgegeben. In dem daneben stehenden Listenfeld werden die zu entleihenden Medien ausgewählt. Dabei können keine Medien ausgewählt werden, die zur Zeit noch entliehen sind.
•Die ausgewählten Daten werden mit dem Button Aktualisieren in das Tabellenkontrollfeld für den aktuellen Ausleihvorgang übernommen.
•Im Tabellenkontrollfeld für die Rückgabe ist es nicht möglich, einen Datensatz einfach zu löschen. Nur die Felder «Rück-Datum» und «Verlängerung» können bearbeitet werden. War ein Mediennutzer vorübergehend gesperrt und hat seine entliehenen Medien zurückgegeben, so lässt sich die Ausleihe über den Button Aktualisieren wieder freischalten.
Alle diese Funktionen können ohne den Einsatz von zusätzlicher Programmierung mit Makros gewährleistet werden, wenn entsprechend an den Formularen gefeilt wird.
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.
•Das erste Feld zeigt den für die meisten Datenbanken unabdingbaren, unverwechselbaren Inhalt, den Primärschlüssel ("ID"), der automatisch geschrieben wird.
Mehr dazu im Kapitel «Beziehungen zwischen Tabellen allgemein».
•Das zweite Feld "Medien_ID" speichert den Primärschlüssel der Tabelle "Medien". Es verweist über die Nummer auf den entsprechenden Inhalt in dieser Tabelle. Solch ein Verweis auf einen Primärschlüssel wird als Fremdschlüssel bezeichnet. Im Formular werden statt des Fremdschlüssels über ein Listenfeld der Titel und der Verfasser angezeigt. Das Listenfeld gibt im Hintergrund den Fremdschlüssel an die Tabelle weiter.
•Das dritte Feld "Leser_ID" speichert den Primärschlüssel der Tabelle "Leser", also nur eine Nummer, die auf den Leser verweist. Im Formular wird aber der Nachname und der Vorname angegeben. Wie in der Tabelle zu sehen ist, hat der Leser mit der Primärschlüsselnummer '0' sehr viele Medien entliehen. Die Tabelle kann beliebig oft den einzigartigen Primärschlüssel der Tabelle "Leser" als Fremdschlüssel "Leser_ID" abspeichern. Auf keinen Fall darf aber ein Leser, der in dieser Tabelle über den Fremdschlüssel verzeichnet ist, gelöscht werden. Sonst wäre nicht mehr nachvollziehbar, wer denn nun das jeweilige Medium entliehen hat. Die Datenbank macht in den Standardeinstellungen so ein Löschen unmöglich. Der Fachbegriff dafür ist die Gewährung der «referentiellen Integrität».
•Im vierten Feld wird das Ausleihdatum abgespeichert. Ist dieses Datum abgespeichert und entspricht das Datum nicht dem aktuellen Datum, so erscheint der entsprechende Datensatz zu dem entsprechenden Leser im Formular im untersten Tabellenkontrollfeld zu Rückgabe der Medien.
•Im letzten Feld wird eine Verlängerung ermöglicht. Was hier eine 1, 2 usw. bedeutet wird an anderer Stelle festgelegt. Dafür enthält die Datenbank eine gesonderte Tabelle mit der Bezeichnung "Einstellungen".
Diese Eingaben reichen aus, um letztlich einen Bibliotheksbetrieb in Gang zu halten.
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".
•Alle Medien, bei denen das Rückgabedatum in der Tabelle "Ausleihe" nicht ausgefüllt ist, werden aufgelistet. Die Medien sind hier als zusätzliche Übersicht auch noch entsprechend benannt.
•Der Bezug zu den Lesern ist hergestellt über den Primärschlüssel der Tabelle "Leser"
•Aus dem Ausleihdatum "Leih_Datum" und dem aktuellen Datum wird die Zeitdifferenz in Tagen als "Leihzeit" angegeben.
•Von der Ausleihzeit, die je nach Medienart unterschiedlich sein kann, wird die Leihzeit abgezogen. Daraus wird die verbleibende Restzeit gebildet.
•Bei einer Verlängerung wurde in der Tabelle "Einstellungen" vermerkt, dass der Wert '1' für eine Verlängerung von 7 Tagen steht. Im vorletzten Datensatz mit der "Medien_ID" '2' ist so eine Verlängerung bei der Restzeit berücksichtigt worden.
Ü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.
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 geöffnete Datenbankdatei sollte möglichst nicht über Speichern unter mit einem anderen Namen abgespeichert werden. Wenn es schon nicht anders geht, so sollten Tabellen, Abfragen, Formulare und Berichte vorher geschlossen werden. Besser ist es, die Datenbankdatei zu schließen und eine Kopie der Datei zu erstellen.
Der Report-Designer ist ein Addon. Er wird zwar inzwischen nicht mehr als gesonderte Erweiterung sichtbar, arbeitet aber weitgehend unabhängig von der Datenbankdatei. Das Umbenennen der Datenbankdatei über Speichern unter entzieht dem Report-Designer seine Grundlage.
•Die Abspeicherung einer Tabelle, einer Abfrage, eines Formulars oder eines Berichtes hat nicht zur Folge, dass die komplette Datenbankdatei abgespeichert wird. Diese Abspeicherung muss separat erfolgen. Nach wichtigen Schritten bei der Erstellung von Elementen für die *.odb-Datei muss deshalb immer das Element und anschließend die Datenbankdatei gespeichert werden.
Besonders trifft dieses Speicherverhalten auf die Arbeit mit dem Report-Designer zu. Die Erstellung eines Berichtes ist noch die labilste Komponente innerhalb der Base-Datei. Deshalb nach jedem Schritt Bericht und *.odb-Datei sichern. Ist der Bericht erstellt, so funktionieren die Berichte selbst ohne besondere Probleme.
•Eine einmal fertig gestellte *.odb-Datei, die anschließend nur noch mit Daten gefüttert wird, wird nicht wieder über den Speicherbutton abgespeichert. Die Speicherung der Datensätze erfolgt letztlich beim Schließen der *.odb-Datei. Der Inhalt der Datenbank wird erst dann zurück in die Datei geschrieben. Ein Absturz an dieser Stelle kann zu Datenverlust führen. Deshalb sollte eine Strategie entwickelt werden, wie Sicherungskopien rechtzeitig erstellt werden. Im Kapitel «Makros» befindet sich ein Makro, mit dem solch eine Sicherungskopie beim Öffnen einer Datenbankdatei automatisch erstellt wird. Ebenso ist dort eine Möglichkeit aufgeführt, wie auch zwischendurch gesichert werden kann.
Einem deutlich höheren Sicherheitsstandard genügen schließlich externe Serverdatenbanken wie MySQL/MariaDB oder PostgreSQL. Für diese könnte dann Base als Frontend mit Abfragen, Formularen und Berichten dienen.
Werden die Serverfunktionen mit dem Zugriff mehrerer Nutzer nicht benötigt, so kann schon der Zugriff auf z. B. eine Firebird-Datei ein klarer Sicherheitsgewinn sein. Selbst wenn LibreOffice komplett abstürzt ist der zuletzt eingegebene Datensatz in solch einer externen Datenbankdatei abgespeichert.
Weitere Informationen zum Zugriff auf externe Datenbank sind im Kapitel «Datenbank erstellen» → «Zugriff auf externe Datenbanken» zu finden.
Vorsicht
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.
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.
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.
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:
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.
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:
•Eine Liste der Sportarten, die die Teilnehmer belegen wollen.
•Für Wettkämpfe die Unterscheidung von Teilnehmern und Teilnehmerinnen.
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.
Hinweis
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.
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 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.