Den Überblick behalten

Daten verwalten mit OpenOffice Base

01.01.2006 Datenbanken unter einer graphischen Oberfläche erstellen – und die Daten, zum Beispiel für Serienbriefe, direkt in das Textverarbeitungsprogramm übernehmen: OpenOffice 2.0 beinhaltet erstmals ein Pendant zu Microsoft Access.

Eine wesentliche Neuerungen der neuen OpenOffice Version 2.0 stellt Base dar: Ein stark verbessertes Datenbankmodul auf Basis der Java-basierten, relationalen Datenbank-Engine von HSQLDB. Base eignet sich ebenso für einfache Rezeptsammlungen wie für umfangreiche Ressource-Management-Lösungen. Obwohl Base den Umgang mit Datenbanken erheblich erleichtert, sind dennoch einige Grundkenntnisse nötig, um eine Datenbankanwendung zu programmieren. Dieser Artikel erläutert den Weg vom Entwurf bis zur fertigen Datenbank anhand eines einfachen Beispiels: einer Datenbank zur Verwaltung von Aufgaben, Arbeitsstunden und Kunden eines Dienstleisters.

Datenbankplanung

Ein relationales Datenbank-Management-System (RDBMS) umfasst in der Regel vier Komponenten:

  • Tabellen
  • Abfragen
  • Formulare
  • Berichte

Tabellen speichern die Daten. Abfragen wählen bestimmte Daten aus oder verändern sie. Sie können sich auf Daten aus mehreren Tabellen beziehen und die Kombination dann für Formulare oder Berichte zur Verfügung stellen. Formulare dienen als eine Art GUI für die Datenbank, mit deren Hilfe Sie die Daten in einer Tabelle anzeigen und editieren. Berichte liefern einen formatieren Output und dienen häufig zum Ausdrucken.

Abbildung 1 zeigt das Modell der Beispiel-Datenbank. Sie besteht aus vier Tabellen. Jede Tabelle beinhaltet eine Reihe von Einträgen, die Daten zur FIRMA, KONTAKT-Daten, geplante AUFGABEN sowie die Arbeitszeit in STUNDEN aufnehmen. Eine Reihe Beziehungen (so genannter Relationen) verbindet die Einträge: Jede Aufgabe ist zum Beispiel mit einer Firma verknüpft, für die die Dienstleistung erbracht wird, ebenso jeder Kontakt. Diese Struktur – die Verteilung der Aufgaben auf unterschiedliche Tabellen, die über ein gemeinsames Feld miteinander verknüpft sind – bildet die Realität korrekt ab: Es ist damit möglich, mehrere Aufgaben für eine Firma oder mehrere Kontakte zu einer Firma zu speichern. Diese sogenannten One-to-many-Beziehungen sind in Abbildung 1 mit einer "1" auf der Seite des eindeutigen Eintrags kennzeichnet. Die Gegenseite, die mehrere Einträge enthalten kann, ist mit einem "n" markiert. Für jede Tabelle muss ein primärer Schlüssel existieren (in Abbildung 1 gelb markiert). Eine Tabelle kann außerdem einen externen Schlüssel enthalten. Dabei handelt es sich um ein Feld, das auf den primären Schlüssel einer anderen Tabelle verweist.

Abbildung 1: Bevor Sie Base starten, sollten Sie die Struktur der Datenbank gut durchdenken. Eine Skizze verschafft den nötigen Überblick.

Tabellen anlegen

Nun ist es an der Zeit, die Struktur aus Abbildung 1 in eine Base-Datenbank umzusetzen. Wählen Sie dazu DateiNeuDatenbank. Erstellen Sie mit dem Datenbank-Assistenten eine neue Datenbank. Wenn Sie im Datenbank-Assistent auf Fertig stellen klicken, öffnet Base das Hauptfenster (Abbildung 2).

Abbildung 2: Vom Base-Hauptfenster aus erstellen und bearbeiten Sie alle Komponenten Ihrer Datenbank.

Erstellen Sie als erstes die Tabellen und legen Sie deren Felder fest (vergleiche Abbildung 1). Dazu wählen Sie Tabellen in der Spalte Datenbank und klicken auf die Option Tabelle in der Entwurfsansicht erstellen. Diese Option legt eine neue, leere Tabelle an, die zum Speichern der Aufgaben-Daten dient. Erstellen Sie nun ein Feld AufgabenID, indem Sie diese Bezeichnung in der Spalte Feldname eingeben; setzen Sie den Typ auf Integer [INTEGER]. Base bietet eine große Auswahl an Feldtypen. Zu den numerischen Typen zählen INTEGER (für Ganzzahlen) und FLOAT (für Fließkommazahlen). VARCHAR speichert Zeichenketten mit variabler Länge. Die maximale Länge können Sie in den Feldeigenschaften definieren. Datum [DATE] speichert ein Datum und Zeit [TIME] eine Uhrzeit. Um das Feld JobID als primären Schlüssel zu wählen, klicken Sie mit der rechten Maustaste auf das Eintragssymbol (das grüne Dreieck) und wählen Sie Primärschlüssel im Kontextmenü (Abbildung 3).

Ein Primärschlüssel muss zwei Bedingungen erfüllen: Er darf nicht leer sein, und jeder Wert darf nur einmal vorkommen. Nur dann ist es möglich, eindeutige Verknüpfungen herzustellen. Wählen Sie deshalb Ja aus der Dropdown-Liste Auto-Wert im Bereich Feldeigenschaften. Base fügt dann für die JobID beim Anlegen eines neuen Eintrags automatisch einen Wert ein, der um eins höher ist als der im vorhergehenden Feld.

Abbildung 3: Jede Tabelle benötigt einen primären Schlüssel, damit sie sich mit anderen Tabellen verknüpfen lässt.

Erstellen Sie weitere Felder in der Tabelle AUFGABEN und wählen Sie Feldtypen, die zum Inhalt der Felder passen – VARCHAR für Textfelder, [INTEGER] für ID-Felder und [DATE] für Datum und Uhrzeit. Bevor Sie die Tabelle speichern, stellen Sie sicher, dass das Datumsformat des Feldes Termin richtig konfiguriert ist: Klicken Sie auf den Button neben Format-Beispiel und wählen Sie ein Format, das Datum und Uhrzeit enthält (zum Beispiel 31.12.99 13:73). Speichern Sie die Tabelle (DateiSpeichern, oder [Strg]+[S]) und geben Sie AUFGABEN als Name für die Tabelle ein, sobald Base Sie dazu auffordert. Erstellen Sie nun die Tabellen STUNDEN, FIRMEN und KONTAKTE. Denken Sie daran, ein geeignetes Format für die Felder Datum ([DATE]), Stunden ([NUMERIC] mit zwei Nachkommastellen) und Preis ([NUMERIC] mit zwei Nachkommastellen) in der Tabelle STUNDEN zu wählen.

Nun stellen Sie die Beziehungen zwischen den Tabellen. Base beinhaltet ein grafisches Werkzeug, mit dem Sie die Relationen einfach mit der Maus festlegen können (Abbildung 4). Wählen Sie dazu ExtrasBeziehungen aus dem Menü und doppelklicken Sie auf alle vier Tabellen im Dialog Tabelle hinzufügen. Um eine Beziehung zwischen den Tabellen FIRMA und KONTAKTE zu definieren, ziehen Sie die Maus mit gedrückter Taste vom Feld FirmenID in der Tabelle FIRMA auf das Feld FirmenID in KONTAKE.

Abbildung 4: Base beinhaltet ein grafisches Werkzeug zum Definieren von Beziehungen zwischen Tabellen.

Nehmen wir an, Sie entschließen sich dazu, eine Firma aus der Datenbank zu entfernen. In diesem Fall muss Base wissen, was es mit den Kontaktdaten anfangen soll, die über die Beziehungen noch mit der Firma verknüpft sind. Normalerweise sollten diese Daten ebenfalls gelöscht werden. Doppelklicken Sie auf die Beziehung zwischen FIRMEN und KONTAKTE und wählen Sie in der Spalte Löschoptionen die Option Kask. löschen (Abbildung 5).

Mit den gleichen Schritten definieren Sie die Beziehungen zwischen den Tabellen FIRMEN und AUFGABEN. Stellen Sie die Löschoption für diese Beziehung auf Keine Aktion ein. Anderenfalls führt das Löschen einer Aufgabe automatisch zum Löschen der damit verknüpften Firma. Zum Schluss definieren Sie eine Beziehung zwischen den Tabellen AUFGABE und STUNDEN. Dabei setzen Sie die Löschoption wieder auf Kask. löschen. So stellen Sie sicher, dass beim Löschen einer Aufgabe keine verwaisten Zeiteinträge in der Datenbank übrig bleiben. Nachdem Sie alle benötigten Beziehungen definiert haben, speichern Sie diese und schließen Sie den Dialog Relationenentwurf (DateiSchließen).

Abfragen erstellen

Abfragen ermöglichen es, Daten auszuwählen oder zu kombinieren. In Base erstellen Sie Abfragen entweder per Assistent oder manuell in der Entwurfsansicht. Benutzer, die Erfahrung mit SQL haben, können außerdem auf den integrierten SQL-Editor zurückgreifen. Da jedoch jede Datenbank-Engine SQL leicht abwandelt, ist es in Base meist einfacher, Abfragen grafisch über die Entwurfsansicht zu definieren.

Nehmen wir an, Sie wollen eine Abfrage erstellen, die Ihnen die kompletten Daten für eine in der Datenbank gespeicherte Aufgabe liefert – die Aufgabennummer, den Kunden, die Aufgabenbeschreibung, den Status, den Typ der Aufgabe und den Termin. Klicken Sie dazu auf Abfrage in der Entwurfsansicht erstellen im Bereich Tabellen. Mit diesem Schritt öffnen Sie die das Fenster Abfrageentwurf und den Dialog Tabellen hinzufügen. Fügen Sie nun die Tabellen AUFGABEN und FIRMEN in die Abfrage ein, indem Sie auf Hinzufügen klicken. Beenden Sie die Entwurfsansicht dann mit dem Schließen-Button.

Jetzt müssen Sie nur noch die gewünschten Felder in die Abfrage übernehmen. Dazu wählen Sie die Felder entweder aus der Dropdown-Liste in einer Feld-Zelle, oder Sie ziehen die Felder aus den Tabellen in die mit Feld bezeichneten Zellen (Abbildung 5). Die neue Abfrage erscheint im Abschnitt Abfragen und kann mit einem Doppelklick ausgeführt werden.

Abbildung 5: Base bietet eine grafische Benutzerschnittstelle zum Erstellen von Abfragen.

Formulare erstellen

Wechseln Sie im Hauptfenster zum Abschnitt Formulare. Formular in Entwurfsansicht erstellen öffnet ein leeres Fenster. Klicken Sie auf den Navigator-Button in der Symbolleiste des Formularentwurf-Fensters.

Navigator-Button

Nach Rechtsklick auf den Ordner Formulare und wählen Sie NeuFormular. Geben Sie als Name für das Formular Aufgaben ein. Klicken Sie mit der rechten Maustaste auf das Formular und wählen Sie Eigenschaften. Im Register Daten wählen Sie Tabelle in Art des Inhaltes und AUFGABEN im Listenfeld Inhalt. Um das Textfeld Beschreibung mit der Beschreibung der einzelnen Aufgaben hinzuzufügen, klicken Sie auf das Icon Textfeld in der Toolbox Formular-Steuerelemente und zeichnen Sie ein Textfeld.

Textfeld-Icon

Nun doppelklicken Sie auf das Textfeld. Im Register Daten wählen Sie Beschreibung aus Datenfeldliste. Gehen Sie ebenso vor, um die Felder Status, Typ und Termin hinzuzufügen. Mit dem neuen Formular können Sie nun Daten in der Tabelle AUFGABEN betrachten und editieren.

Unterformulare dienen dazu, alle verknüpften Datensätze einer One-to-many-Relationen in einem Fenster anzuzeigen. Auf diese Weise integrieren Sie zum Beispiel alle Einträge aus der Tabelle STUNDEN, die über die AufgabenID mit der gerade angezeigten Aufgabe verknüpft sind, in die Anzeige. Klicken Sie im Fenster Formularnavigator auf das Formular Aufgaben und wählen Sie NeuFormular. Wählen Sie einen aussagekräftigen Namen für das Unterformular. Ein Rechtsklick auf des Unterformular ermöglicht eine Einstellung der Eigenschaften. Wählen Sie im Register Daten den Eintrag Tabelle aus der Liste Art des Inhalts und STUNDEN aus dem Listenfeld Inhalt. Weil die Tabelle STUNDEN mehrere Einträge für einen bestimmten Job enthält, kann es sinnvoll sein, das Unterformular als Tabelle anzuzeigen. Stellen Sie sicher, dass das ungeordnete Formular STUNDEN im Formular-Navigator gewählt ist.

Aktivieren Sie jetzt in der Steuerelement-Palette den Button Weitere Steuerelemente, klicken Sie auf den Schalter Tabellen-Kontrollfeld und zeichnen Sie eine Tabelle. Mithilfe des Tabellen-Assistenten wählen Sie aus STUNDEN die benötigten Felder (alle, außer den ID-Feldern) und klicken dann auf Fertig stellen.

Button 'Weitere Steuerelemente'

Schalter 'Tabellen-Kontrollfeld'

Sobald Sie mit dem Formular zufrieden sind, speichern Sie es und beenden Sie die Formularentwurfsansicht. Mit einem Doppelklick auf den Namen des Formulars im Hauptfenster öffnen Sie dieses zur Eingabe. Um in den Datensätzen zu navigieren, neue Datensätze hinzuzufügen oder zu bearbeiten, verwenden Sie die Symbolleiste für die Formularnavigation (AnsichtSymbolleistenFormular-Navigation).

Fazit

OpenOffice 2.0 schließt mit Base die Lücke, die die freie Office-Suite im Vergleich zu der Bürosoftware-Lösung aus Redmond bisher aufwies: Eine mit Access vergleichbare Datenbankanwendung, in der sich ohne SQL- oder sonstige Programmierkenntnisse anspruchsvolle Datenbanken bauen lassen, bot die Vorgängerversion noch nicht. Die erste Version von Base beinhaltet bereits die wesentlichen, aus Microsoft Access bekannten Funktionen.

Glossar

RDBMS

Ein relationales Datenbank-Management-System bildet Daten in Form von zweidimensionalen Tabellen ab und setzt diese untereinander in Beziehung (Relation). Um Redundanzen zu vermeiden, dürfen dabei keine Informationsinhalte mehrfach vorkommen. Das entsprechende Verteilen der Daten in Tabellen nennt man Normalisierung.

One-to-many-Beziehung

Bei einer 1:1-Relation steht ein Datensatz aus einer Tabelle zu genau einem Datensatz in einer anderen Tabelle in Relation. Bei einer One-to-many-Beziehung (auch 1:n-Relation) dagegen steht ein Datensatz aus einer Tabelle zu mehreren Datensätzen aus einer anderen Tabelle in Beziehung.

SQL

Standard Query Language (früher: Structured Query Language). Eine deklarative, von ISO/IEC normierte Abfragesprache für relationale Datenbanken, die sich eng an die englische Umgangssprache anlehnt.

Der Autor

Dmitri Popov hat Russisch und Computerlinguistik studiert. Er arbeitet seit einigen Jahren als technischer Übersetzer und freiberuflicher Autor. Er hat über 500 Artikel zum Thema Produktionssoftware, mobiles Computing, Web-Applikationen und andere IT-Themen geschrieben. Seine Artikel sind in Zeitschriften und auf Websites in Dänemark, Großbritannien, der USA und Russland veröffentlicht worden.

Einem Freund empfehlen    Druckansicht beenden Bookmark and Share
Kommentare