SQL- und NoSQL-Datenbanken

Eine Datenbank mit OpenOffice Base erstellen

Schritt 1: Entitäten-Beziehungsmodell entwickeln

Schritt 2: Datenbankschema entwerfen

Schritt 3: Datenbankschema in OpenOffice Base definieren

Schritt 4: Referenzielle Integrität formulieren

Schritt 5: Wertebereichsbedingungen für Felder definieren

Schritt 6: Daten eingeben

Schritt 7: Datenbank mit QBE auswerten

Schritt 8: Abfragen mit SQL durchführen

Schritt 9: Komplexere Abfragen (Join oder geschachteltes SQL) erfassen

Eine Datenbank mit OpenOffice Base erstellen

Mit dieser Anleitung können Sie ein einfaches Datenbankprojekt aus der Reisebranche selbstständig durchspielen. Ausgehend von einem Entitäten-Beziehungsmodell werden Sie die Tabellenstruktur der Datenbank herleiten und in OpenOffice Base definieren. Nachdem Sie die Tabellen mit Daten gefüllt haben, können Sie mit selbst formulierten Abfragen die wichtigsten Informationen aus der Datenbank extrahieren.

OpenOffice Base ist ein Open-Source-Softwareprodukt mit grafischer Bedienungsoberfläche zur Verwaltung von Tabellen. Alle Ihre Eingaben werden in SQL-Befehle übersetzt und ausgeführt. OpenOffice Base bietet Ihnen aber auch die Möglichkeit, direkt mit SQL-Befehlen zu arbeiten, was sich beim Erstellen komplexer Datenbankabfragen empfiehlt.

Die Elemente einer OpenOffice Base-Datenbank werden mit Hilfe von Registern verwaltet, wie der Blick auf die Hauptseite einer OpenOffice Base-Datenbank zeigt:

Im Beispiel sehen Sie die Tabellen der Datenbank travelblitz. Innerhalb jedes Registers (Tabellen, Abfragen, …) werden die einzelnen Aufgaben und Elemente angezeigt.

Minimal enthält eine OpenOffice Base-Datenbank die folgenden Register:

  • Die Tabellen bilden die Grundlage jeder OpenOffice Base-Datenbank. Sie enthalten die in der Datenbank gespeicherten Informa- tionen in Form von Tupeln (Datensätzen).
  • Mit Abfragen lassen sich Informationen aus der Datenbank selektieren.

Eine OpenOffice Base-Datenbank kann weitere Register enthalten, deren Elemente die Bedienbarkeit erleichtern:

  • Formulare gestatten die komfortable Eingabe, Anzeige und Verwaltung der Daten mit Hilfe von
  • Berichte dienen zum Ausdrucken von Daten in übersichtlicher und ansprechender Form (z.B. für die Rechnungserstellung).
  • Makros ermöglichen die Automatisierung komplexer Datenbankabläufe. Sie sind über das Menü Extras

In dieser Anleitung beziehen sich die Abbildungen und Befehle auf die deutsche Version von Apache OpenOffice 4, Version 4.1.1; es sollte Ihnen aber nicht schwerfallen, den Bezug zu anderen Versionen herzustellen.

Zur Fallstudie travelblitz

Als Beispiel realisieren Sie eine Datenbankanwendung für das Reisebüro travelblitz, das sich auf die Vermietung von Ferienhäusern auf griechischen Inseln spezialisiert hat. Die Ferienhäuser befinden sich auf verschiedenen Inseln. Es ist damit zu rechnen, dass in Zukunft weitere Häuser auf neuen Inseln dazukommen. Momentan werden Kunden- und Häuserdaten traditionell mit der Hilfe eines Karteisystems verwaltet, die Abfragemöglichkeiten sind entsprechend eingeschränkt. Beispielsweise ist es zeitraubend herauszufinden, welche Häuser weniger als 400 Euro pro Woche kosten und in einem bestimmten Zeitraum (z.B. für die ersten drei Juliwochen) frei sind. Sie möchten sich nun besser auf die Kundenanfragen einstellen und beschliessen, den Missstand durch den Einsatz einer Graphendatenbank zu beseitigen.

Schritt 1: Entitäten-Beziehungsmodell entwickeln

Für die Erstellung eines Entitäten-Beziehungsmodells treffen Sie die folgenden vereinfachenden Annahmen:

  1. Die Saison dauert von Woche 10 bis 40, d.h. von Anfang April bis Ende September. Der Mietpreis ist während der gesamten Saison konstant; die Häuser werden  wochenweise vermietet.
  2. Eine Buchung enthält die folgenden Informationen: Haus, Kunde und Nummer der Woche. Falls ein Kunde ein Haus mehrere Wochen hintereinander mietet, müssen mehrere Buchungen angelegt werden (eine pro Woche).
  3. Der Zeitraum jeder Buchung, d.h. die betreffende Woche, wird in Form einer Zahl zwischen 10 und 40 angegeben. Für jedes Jahr wird eine neue Datenbank angelegt.
  4. Die Datenbank enthält vorläufig keinerlei Informationen über Zahlungsfristen, Rechnungen

Diese Annahmen dienen dazu, das Datenmodell zu Übungszwecken so klein wie möglich zu halten. Sie sind nun aufgefordert, das Entitäten-Beziehungsmodell für travelblitz zu entwickeln: Welche Entitätsmengen und Beziehungsmengen legen Sie fest? Welche Merkmale ordnen Sie den Entitätsmengen zu, welche den Beziehungsmengen? Welche Identifikationsschlüssel sehen Sie für die Entitätsmengen vor?

Mit den Entitätsmengen KUNDE, HAUS und INSEL legen Sie das Entitäten-Beziehungsmodell für die Ferienhaus-Verwaltung fest. Die Beziehungsmenge BELEGUNG zeigt Ihnen die Ausleihe der Ferienhäuser an die Kunden; die Beziehung ist komplex-komplex. Das Merkmal Woche haben Sie als typisches Beziehungsmerkmal erkannt, da es die Belegung eines Ferienhauses durch einen Kunden zeitlich festlegt. Schliesslich drücken Sie die hierarchische Zuordnung der Ferienhäuser zu den Inseln mit der Beziehungsmenge LAGE aus.

Schritt 2: Datenbankschema entwerfen

Nun stellen Sie sich folgende Fragen: Wie sieht das relationale Datenbankschema für die Ferienhaus-Verwaltung aus? Welche Abbildungsregeln verwenden Sie, um das obige Entitäten-Beziehungsmodell in Tabellen zu überführen ?

Aus dem Entitäten-Beziehungsmodell leiten Sie gemäß Abschnitt 2.3 die Tabellenstruktur der Datenbank her:

  1. Der Abbildungsregel 1 folgend müssen Sie für jede Entitätsmenge eine eigenständige Tabelle Als Namen für die Tabellen wählen Sie der Einfachheit halber die Namen der entsprechenden Entitätsmengen. Damit erhalten Sie folgende Tabellen:
    • KUNDE (KundenID, Name, Vorname, Anrede, Strasse, PLZ, Ort)
    • HAUS (HausID, Hausname, Anz_Zimmer, Max_Personen, Meerblick, Miete)
    • INSEL (InselID, Inselname, Besonderheiten)
      Wie üblich heben Sie die Identifikationsschlüssel kursiv hervor.
  2. Gemäss der Abbildungsregel 3 müssen Sie auf alle Fälle für die komplex-komplexe Beziehungsmenge BELEGUNG eine eigenständige Tabelle definieren, zur Speicherung der Mietbeziehungen. Diese Tabelle enthält neben den Fremdschlüsselattributen für Häuser (HausID) und Kunden (KundenID) das Beziehungsmerkmal Woche, das die Zeitangabe der Vermietung in Form der Wochennummer enthält:
    • BELEGUNG (HausID, KundenId, Woche)
      Als zusammengesetzten Schlüssel zeichnen Sie die HausId und die Wochennummer aus. Damit verhindern Sie auf effiziente Art Doppelbelegungen resp. Überbuchungen.
  3. Die einfach-komplexe Beziehungsmenge LAGE zwischen Ferienhäusern und Inseln können Sie auf zwei Arten im Datenbankschema darstellen: entweder als eigenständige Tabelle (Abbildungsregel 2) oder durch einen Fremdschlüsselverweis in der Ferienhaustabelle (Abbildungsregel 4). Sie wählen die zweite Variante und erweitern die Tabelle HAUS wie folgt:
    • HAUS (HausID, Hausname, Anz_Zimmer, Max_Personen, Meerblick, Miete, InselId_Lage)
  4. Als Resultat erhalten Sie die folgenden vier Tabellen, die Sie noch hinsichtlich der dritten Normalform überprüfen müssen:
    • KUNDE (KundenID, Name, Vorname, Anrede, Strasse, PLZ, Ort)
    • HAUS (HausID, Hausname, Anz_Zimmer, Max_Personen, Meerblick, Miete, InselId_Lage)
    • INSEL (InselID, Inselname, Besonderheiten)
    • BELEGUNG (HausID, KundenID, Woche)

Bis auf die Tabelle KUNDE erfüllen alle Tabellen die dritte Normalform. Da das Merkmal Ort transitiv via PLZ vom Merkmal KundenId abhängig ist, müssten Sie eine zusätzliche Tabelle ORTSCHAFT definieren, mit den beiden Merkmalen PLZ und Ort. Aus praktischen Gründen verzichten Sie jedoch auf diese Aufteilung.

Schritt 3: Datenbankschema in OpenOffice Base definieren

Starten Sie OpenOffice Base und geben Sie an, dass sie eine neue leere Datenbank erstellen wollen. Bestätigen Sie mit einem Klick auf Weiter.

Um die Datenbank für andere OpenOffice-Komponenten (z.B. Calc) zugänglich zu machen, können Sie diese anmelden.

Klicken Sie auf Fertigstellen. Damit Sie angeben können, wo die Datenbank abgelegt werden soll, öffnet OpenOffice Base nun ein Fenster. Wählen Sie das Laufwerk (1) sowie das Zielverzeichnis (2) aus und geben Sie einen Dateinamen (3) an.

Sind Verzeichnis und Name der Datenbank ausgewählt, erscheint unten rechts der Knopf Speichern, womit die Datenbank erstellt werden kann. Anschliessend wird die Datenbank geöffnet.

Nun können Sie mit dem Definieren des Datenbankschemas beginnen. Definieren Sie als erstes die Kundentabelle wie folgt:

1. Wählen Sie links in der Spalte Datenbank die Schaltfläche In den geöffneten Aufgaben wählen Sie Tabelle in der Entwurfsansicht öffnen
Alternativ kann eine Tabelle auch via den Menüpunkt Einfügen > Tabellenentwurf… erstellt werden.

2. Die Tabelle wird in der Entwurfsansicht geöffnet, wo die Attribute der zu definierenden Tabelle zeilenweise eingetragen werden können. Für jedes Attribut müssen Sie die folgenden Angaben festlegen:

  • Feldname
  • Feldtyp
  • eine kurze Beschreibung des Attributs.

Den Feldnamen und die Beschreibung müssen Sie eingeben. Den Datentyp können Sie aus einer Liste auswählen: Klicken Sie in der Spalte Feldtyp in die entsprechende Auswahlliste (Pfeil zum Öffnen der Liste verwenden). Wählen Sie aus der Liste einen Datentyp für das gewünschte Merkmal:

Die wichtigsten Datenfelder in OpenOffice Base sind: Numerische Felder, Textfelder und Datenfelder wie Wahrheitswerte (ja/nein) und Datum.

3. Zum Auszeichnen des Primärschlüssels machen Sie beim betreffenden Attribut (resp. den betreffenden Attributen) in der grauen Spalte am linken Rand einen Im geöffneten Kontextmenu wählen Sie den Befehl Primärschlüssel.

Falls der Primärschlüssel aus mehreren Attributen zusammengesetzt ist, markieren Sie zunächst nur ein Schlüsselmerkmal, drücken dann die CTRL-Taste und markieren die anderen zum Schlüssel gehörenden Attribute.

4. Um der Tabelle einen Namen zu geben, speichern Sie diese. Geben Sie den Namen der Tabelle im aufgehenden Fenster ein und bestätigen Sie mit OK.

5. Nach dem Definieren der Feldnamen, schliessen Sie die Tabelle. Auf der Hauptseite ist die Tabelle nun aufgelistet. Mit einem Doppelklick auf deren Namen öffnet sich die Datenblattansicht. Hier können die Datentupel eingetragen werden. Stellen Sie sicher, dass hierfür das Icon Daten bearbeiten   aktiviert ist.

6. Möchten Sie wieder zur Entwurfsansicht wechseln, kehren Sie zurück zur Hauptseite. Markieren Sie die gewünschte Tabelle und wählen den Befehl Bearbeiten. Diesen finden Sie als Icon (1), unter Bearbeiten > Bearbeiten…(2) oder im Kontextmenu bei einem Rechtsklick auf die gewünschte Tabelle.

Falls Sie die Tabelle KUNDE vollständig definiert haben, sollte die Entwurfsansicht wie folgt aussehen:

Einige Felder sollten nur bestimmte Werte aufnehmen können. Wie können Sie für ein bestimmtes Attribut die zulässigen Datenwerte einschränken? Als Anrede der Kunden möchten Sie beispielsweise nur «Herr» und «Frau» zulassen. Wie formulieren Sie eine entsprechende Integritätsbedingung in OpenOffice Base?

An dieser Stelle können Sie zwei Einstellungen vornehmen, die zu den Wertebereichsbedingungen zählen (siehe auch Exkurs). Es hanndelt sich um die Merkmalseigenschaften Länge und Eingabe erforderlich:

  • Mit dem Schlüsselwort Länge können Sie den Datentyp für das markierte Attribut näher spezifizieren. Bei Textmerkmalen ist hier die maximale Länge des Textes, bei Zahlmerkmalen der Typ der Zahl (ganze Zahl als Integer, Gleitkommazahl, …) gemeint.
  • Mit dem Schlüsselwort Eingabe erforderlich kann das Ausfüllen eines Attributes erzwungen werden. Ein Merkmal mit Eingabe erforderlich = Ja darf beim Ausfüllen nicht leer gelassen werden.

Definieren Sie nun die Tabellen HAUS, INSEL und BELEGUNG. Um neue Tabellen zu erstellen, kehren Sie wieder zur Hauptseite zurück und beginnen bei Schritt 1.

Schritt 4: Referenzielle Integrität formulieren

Als Nächstes vereinbaren Sie strukturelle Integritätsbedingungen, wie sie in den Abschnitten 2.3.2 und 3.7 behandelt wurden. Sie können damit verhindern, dass in einem Fremdschlüsselmerkmal ein Wert eingetragen wird, zu dem in der referenzierten Tabelle kein Tupel existiert. In der Datenbank von travelblitz möchten Sie sich für jedes Fremdschlüsselattribut durch referenzielle Integrität gegen derartige ungültige Dateneingaben absichern.

Die Fremdschlüsselbeziehungen werden in der Beziehungsansicht von OpenOffice Base als Linien eingezeichnet, die die Fremdschlüsselmerkmale mit den entsprechenden Primärschlüsseln der referenzierten Tabellen verbinden. Vereinbaren Sie die referenzielle Integrität zunächst für das Fremdschlüsselmerkmal InselId in der Tabelle der Ferienhäuser. Dazu müssen Sie die Teilschritte 1 bis 4 durchlaufen:

1. Wählen Sie auf der Hauptseite im Menü Extras den Befehl Beziehungen… aus.

2. Anschließend erscheint das Fenster Tabellen hinzufügen zum Auswählen der Tabellen für die referentielle Integrität:

3. Wählen Sie mit Hinzufügen die Tabellen HAUS und INSEL aus, und beenden Sie die Tabellenauswahl mit Schließen. Nun werden beide Tabellen schematisch in einem Fenster angezeigt (Primärschlüssel sind mit dem Schlüsselsymbol gekennzeichnet):

Vergrössern Sie zunächst den Rahmen um das Schema der Häusertabelle, damit alle Attribute angezeigt werden (wie abgebildet), und verschieben Sie die Haustabelle etwas nach rechts, damit mehr Platz zwischen den beiden Schemas ist (zum Verschieben eines Fensters klicken Sie in dessen Titelleiste und ziehen das Fenster bei gedrückter Maustaste an die gewünschte Stelle).

4. Positionieren Sie den Mauszeiger nun über dem Attribut Haus.InselId, drücken Sie die Maustaste nach unten, halten Sie sie weiter gedrückt und ziehen Sie den Mauszeiger zum Attribut Insel.InselID. OpenOffice Base erkennt, um welche Beziehung es sich handelt und verbindet die zwei Attribute mit einer Linie.

Falls die Linie nicht so aussieht wie abgebildet, haben Sie etwas falsch gemacht. Prüfen Sie, ob die Datentypen beider Attribute übereinstimmen, und korrigieren Sie diese gegebenenfalls. Falls dies nichts nützt, löschen Sie die Verbindungslinie und beginnen von vorne.

5. Beenden Sie die Definition der Fremdschlüsselbeziehungen, indem Sie die durchgeführten Änderungen abspeichern und das Fenster schliessen.

Vereinbaren Sie die referenzielle Integrität nun auch für die übrigen Fremdschlüsselmerkmale. Verwenden Sie wiederum den Befehl Beziehungen… im Menu Extras. Um weitere Tabellen anzeigen zu lassen, klicken sie auf das Icon Tabelle hinzufügen   oder über den Menüpunkt Einfügen > Tabellen hinzufügen…und fahren anschliessend fort wie gehabt.

Wenn alles richtig funktioniert, sieht das Beziehungen-Fenster anschliessend wie folgt aus:

Nun ist das Datenbankschema fertig definiert. Sie können mit der Dateneingabe beginnen!

Schritt 5: Wertebereichsbedingungen für Felder definieren

In Datenbanken gibt es für bestimmte Attribute zulässige Datenwerte. Diese können definiert werden, um bei der Dateneingabe falsche Werte zu verhindern. Wenn die Häuser beispielsweise nur innerhalb der Wochen 10 bis 40 belegt werden dürfen, kann in der Tabelle BELEGUNG das Attribut Woche mit minimal und maximal Werten gekennzeichnet werden.

In OpenOffice Base ist die Wertebereichsbedingung für Tabellenfelder noch nicht grafisch einstellbar. Mit einem kleinen Umweg können Sie aber trotzdem fehlerhafte Eingaben verhindern. Anstelle dass Sie die Daten in der Tabelle direkt eingeben, verwenden Sie für die Eingabe Formulare.

1. Wählen Sie auf der Hauptseite links in der Spalte Datenbank die Schaltfläche Formulare. In den geöffneten Aufgaben wählen Sie Formular unter Verwendung des Assistenten öffnen

2. Wählen Sie die Tabelle BELEGUNG und fügen Sie alle verfügbaren Felder dem Formular hinzu.

3. Klicken Sie Weiter bis zu Schritt 5 und wählen Sie als Layout das Datenblatt aus.

4. Klicken Sie wieder Weiter zu Schritt 8. Hier definieren Sie den Namen Ihres Formulars und wählen Das Formular weiter verändern, um in die Entwurfsansicht zu gelangen. Danach bestätigen Sie mit einem Klick auf Fertigstellen.

5. Das Datenblatt enthält nun alle Spalten, die die Tabelle BELEGUNG ebenfalls beinhaltet. Um Werte zu definieren, machen Sie im Titel der Spalte Woche einen Rechtsklick und wählen Spalte…

6. Es erscheint ein Fenster, mit allen Eigenschaften des Feldes. Hier können Sie nun den min. Wert 10 und den max. Wert 40 eingeben (1).

7. Beim Schliessen des Fensters werden die Werte automatisch gespeichert. Vergessen Sie aber nicht, das Formular zu speichern. Um die Tabelle mit Daten zu füllen, müssen Sie den Entwurfsmodus ausschalten. Hierzu deaktivierten Sie das Icon oben links (2).

Durch die Wertbegrenzung können zwar nur noch Werte zwischen 10 und 40 eingetragen werden, OpenOffice Base hat aber hier noch eine Lücke: Falls ein kleinerer Wert als das Minimum eingegeben wird, wird die Eingabe automatisch auf den Minimalwert geändert. Genau gleich werden Werte grösser als das Maximum mit dem max. Wert überschrieben.

Mit Warnhinweisen können Sie sich als Benutzer darauf aufmerksam machen. In OpenOffice Base müssen Sie dazu jedoch ein Makro erstellen. Dieses können Sie dann im Feldeigenschaftsfenster (siehe Schritt 5) unter Ereignisse einfügen.

Um bedienerfreundliche Eingabefenster zum Befüllen von Tabellen zu bieten, eignen sich Formulare optimal. Sie können nach Belieben gestaltet werden und erleichtern den Umgang mit Datentupeln. Formulare bedeuten aber auch Zeitaufwand. Wie Sie die Tabellen ohne Formulare füllen können, wird in Schritt 7 beschrieben.

Nun könnten Sie theoretisch beginnen, die Tabelle mit Daten zu füllen. Das Datenblatt im Formular zeigt Ihnen sämtliche Datentupel an, die die Tabelle beinhaltet. Da die Tabelle BELEGUNG jedoch auf zwei weitere Tabellen referenziert, müssen Sie zuerst diese ausfüllen (siehe Schritt 7) Danach kehren Sie an diese Stelle zurück und befüllen die Tabelle BELEGUNG.

Schritt 6: Daten eingeben

Öffnen Sie zunächst die Tabelle KUNDE. Sie müssen sich dazu im Hauptfenster befinden. Zum Öffnen einer Tabelle haben Sie zwei Möglichkeiten: Entweder klicken Sie doppelt darauf oder Sie klicken mit der rechten Maustaste auf die gewünschte Tabelle und wählen Öffnen.

Es erscheint die (zur Zeit noch leere) Tabelle, die momentan nur aus einer Zeile für die Dateneingabe besteht.

Geben Sie nun einige Datenwerte in die Tabelle ein:

Beachten Sie folgende Hinweise bei der Datenerfassung:

  1. Mit der Tabulator- oder Eingabetaste wechseln Sie in das jeweils nächste Feld. Nehmen Sie die Umschalt-Taste (auch Shift-Taste genannt) hinzu, so kehren Sie in das vorherige Feld zurück.
  2. Mit den Pfeiltasten erreichen Sie beliebige Tabellenabschnitte.
  3. Zum Widerrufen einer Eingabe dient Ihnen die Esc Taste: Durch einmaliges Drücken der Taste setzen Sie den Inhalt der aktuellen Tupels zurück.
  4. Zum Löschen eines Datensatzes markieren Sie die entsprechende Tupelzeile und drücken die Taste Delete.
  5. Zum Eingeben logischer Datenwerte (z.B. für das Attribut Meerblick) benützen Sie die Maus oder Leertaste.
  6. Zum Schliessen einer Tabelle schliessen Sie das Fenster oder beenden mit dem Befehl Datei > Schliessen.

Erfassen Sie folgende Beispieltabellen:

KUNDE

INSEL

HAUS

An dieser Stelle befüllen Sie das erstellte Formular:

BELEGUNG

Falls Sie die Tabellen in der vorgegebenen Reihenfolge ausgefüllt haben, gibt es keine Verletzungen der referenziellen Integrität. Dank des zusammengesetzten Primärschlüssels in der Tabelle BELEGUNG vermeiden Sie zudem eventuelle Doppelbuchungen.

Testen Sie nun, ob die vereinbarten Integritätsregeln von der Datenbank auch unterstützt werden. Versuchen Sie,

  • Im Formular BELEGUNG eine ungültige Wochennummer einzutragen (beobachten Sie die automatische Veränderung der Zahlen, auf die Sie nicht hingewiesen werden),
  • bei einer Kundin die Anrede von «Frau» auf «Fräulein» abzuändern,
  • die Miete eines Hauses auf einen zu tiefen Wert herabzusetzen (vgl. die Prüfregel zur Miete),
  • bei einem Haus die Inselnummer auf einen nicht vorhandenen Wert abzuändern oder
  • das Haus Arethoussa aus der Datenbank zu löschen (Warum geht dies nicht?).

Nun können Sie mit der Datenbank arbeiten und Geschäfte abwickeln. Beispielsweise möchten Sie Herrn Ernst Bircher, wohnhaft in der Seestrasse 10 in 6004 Luzern erfassen, der Ende August das Ferienhaus Malia für drei Wochen (Wochen 33 bis 35) buchen möchte. Tragen Sie diesen Geschäftsfall in Ihre Datenbank ein.

Das Reisebüro travelblitz hat ein neues Ferienhaus mit dem Namen Pegasus auf der Insel Kreta akquiriert. Dieses Haus hat 5 Zimmer und kann maximal 8 Personen aufnehmen. Die Miete beträgt 650 Euro. Leider gibt es keine Sicht auf das Meer. Geben Sie nun all diese Angaben in die Datenbank ein.

Schritt 7: Datenbank mit QBE auswerten

Sie interessieren sich für Fragen wie: Welche Häuser befinden sich auf der Insel Kreta? Welches Haus hat die Kundin Ursula Meier gebucht? Welche Häuser sind in den Wochen 31 bis 33 frei? Natürlich können Sie die Antworten anhand der obigen Tabelle ablesen. Sobald die Datenbank jedoch realistischere Ausmasse annimmt, lohnt sich der Einsatz von Datenbankauswertungssprachen.

In Access können Sie eine Abfrage entweder mit einer grafischen Oberfläche im QBE-Modus (vgl. Abschnitt 3.3.2) durchführen oder als SQL-Befehl eingeben (vgl. Abschnitt 3.3.2 und folgenden Schritt 9).

Sie wünschen eine Liste aller Häuser mit Preisangaben, wobei die Häuser nach der Höhe des Mietpreises sortiert sind:

Um eine Abfrage mit QBE durchzuführen, müssen Sie vier Schritte ausführen:

  1. Klicken Sie auf der Hauptseite in der Spalte Datenbank auf die Schaltfläche Abfragen. In den geöffneten Aufgaben wählen Sie Abfrage in der Entwurfsansicht erstellen
    Alternativ könne Sie auch über das Menü Einfügen > Abfrage (Entwurfsansicht)… eine Abfrage erstellen.
  1. Selektieren Sie im Fenster Tabelle oder Abfrage hinzufügen die Tabellen, die Sie für die Abfrage benötigen und schließen Sie dann das Fenster. Es erscheint eine Entwurfstabelle, in die Sie im QBE- Modus die Abfrage eintragen können.
  2. Pro Attribut der Entwurfstabelle können Sie eine der folgenden Optionen aktivieren:
  • Anzeigen des Attributs,
  • Sortieren der Datensätze nach diesem Attribut (Sortierung), nach auf- oder absteigender Folge oder
  • Heraussuchen von Datensätzen (Filtern) anhand einer Suchbedingung (Kriterien).
  • Unter Alias kann eine benutzerdefinierte Spaltenüberschrift eingegeben werden.

Um die Abfrage ausführen zu können, verwenden Sie den Befehl Abfrage ausführen (1). OpenOffice Base präsentiert dann das Resultat der Abfrage:

Falls Sie eine Abfrage abändern wollen, wechseln Sie mit Designansicht an-, ausschalten (2) zurück in die Entwurfsansicht. Einmaliges Klicken wechselt in die SQL-Ansicht, ein zweiter Klick wechselt in den QBE-Entwurfsmodus. Dort führen Sie die gewünschten Änderungen durch und prüfen das Resultat erneut durch Ausführen der Abfrage. Falls Sie die Tabellenübersichten wieder anzeigen möchten, wählen Sie im Menu Ansicht > Vorschau.

Falls Sie die Abfrage in Zukunft benötigen, speichern Sie sie ab (vgl. nächster Abschnitt).

Sie speichern eine Abfrage entweder mit dem Befehl Speichern, oder Sie schliessen die Abfrage, wobei sich automatisch die Gelegenheit zum Speichern ergibt. Nach der Speicherung erscheint die Abfrage im Register Abfragen:

Mit einem Doppelklick auf die Abfrage können Sie diese jederzeit starten. Möchten Sie wieder zur Entwurfsansicht wechseln, markieren Sie die gewünschte Tabelle und wählen den Befehl Bearbeiten. Diesen finden Sie im Menü unter Bearbeiten > Bearbeiten…, im Kontextmenu bei einem Rechtsklick auf die gewünschte Abfrage oder als Icon.

Beachten Sie: Das Resultat einer Abfrage sieht zwar aus wie eine Tabelle, die angezeigten Daten sind aber nicht in Tabellenform abgespeichert, sondern werden bei jedem Aufruf neu generiert. Falls Daten in einer Tabelle abgeändert werden, ändern sich also die Resultate aller darauf basierenden Abfragen automatisch.

Schritt 8: Abfragen mit SQL durchführen

OpenOffice Base wandelt jede Abfrage intern in einen SQL-Befehl um und führt diesen anschliessend aus. Sie können diesen SQL-Befehl auch anschauen. Dazu machen Sie im Hauptfenster einen Rechtsklick auf die Abfrage und wählen In SQL-Ansicht bearbeiten

Führen Sie nun die SQL-Ansicht der soeben erstellten Abfrage «Hausmieten» aus:

Im Gegensatz zu anderen Datenbankverwaltungsprogrammen stellt OpenOffice Base den Attributnamen nicht die jeweiligen Tabellennamen voran (z.B. Haus.Hausname), jedoch setzt es die Attribute in Anführungszeichen. Sie können in der SQL-Ansicht aber auf diese Präzisierungen verzichten und den einfachen SQL-Befehl

SELECT   Hausname, Miete 
FROM     Haus
ORDER BY Miete; 

eingeben.

Sie wünschen eine Liste mit Namen, Vornamen, Postleitzahl und Ort aller Kunden aus der Ostschweiz (mit Postleitzahl >= 3000). Klicken Sie auf der Hauptseite in der Spalte Datenbank auf die Schaltfläche Abfragen. In den geöffneten Aufgaben wählen Sie Abfrage in der SQL-Ansicht erstellen… oder im Menü Einfügen > Abfrage (SQL-Ansicht)… Nun geben Sie den benötigten Befehl in das Eingabefenster ein:

Führen Sie diese SQL-Abfrage aus:

Falls es Sie interessiert, wie Sie diese Abfrage in QBE formulieren könnten, wechseln Sie mit dem Befehl Entwurfsansicht in den QBE-Modus:

Vergleichen Sie den SQL-Befehl mit der Formulierung im QBE-Modus, so bemerken Sie, dass für beide Abfragetypen dieselben Angaben notwendig sind. Sie können deshalb einfache Abfragen wahlweise in SQL oder QBE erzeugen, je nachdem, wo Sie sich sicherer fühlen. Komplexere Abfragen (z.B. geschachtelte SQL-Befehle, siehe Schritt 10) müssen Sie in SQL formulieren.

Schritt 9: Komplexere Abfragen (Join oder geschachteltes SQL) erfassen

Häufig möchten Sie Daten aus mehreren Tabellen auswerten. Sie wünschen beispielsweise eine Übersicht über alle Häuser mit den jeweiligen Inselangaben:

Für dieses Resultat benötigen Sie die Tabellen HAUS und INSEL, indem Sie die beiden Tabellen über das Attribut InselId miteinander verknüpfen:

SELECT   Hausname, Inselname, Anz_Zimmer, Max_Personen, Meerblick, Miete
FROM     Haus, Insel
WHERE    Haus.InselId = Insel.InselID
ORDER BY Hausname; 

Erzeugen Sie diese Abfrage und speichern Sie das Resultat ab.

Wie verknüpfen Sie mehr als zwei Tabellen miteinander ? Beispielsweise wollen Sie eine Liste aller Buchungen mit den Namen der Kunden inklusive der gebuchten Häuser:

Für diese Abfrage benötigen Sie die Tabellen HAUS, BELEGUNG und KUNDE:

SELECT   Hausname, Woche, Name 
FROM     Haus, Belegung, Kunde
WHERE    Haus.HausID = Belegung.HausID AND Kunde.KundenID = Belegung.KundenID
ORDER BY Hausname, Woche; 

Erzeugen Sie diese Abfrage und speichern Sie das Resultat unter dem Namen Buchungsdaten ab.

Bei einer geschachtelten Abfrage enthält ein SQL-Befehl weitere SQL-Befehle. Interessieren Sie sich beispielsweise für die Häuser auf der Insel Kreta, so können Sie mit einem inneren SQL-Befehl die Inselnummer von Kreta ermitteln und diese an den äusseren SQL-Befehl weiterreichen:

SELECT	Hausname
FROM	Haus
WHERE	InselId = (SELECT InselID
                   FROM   Insel
                   WHERE  Inselname = 'Kreta'); 

Erzeugen und testen Sie diese Abfrage, wobei Sie jeweils verschiedene Inselnamen in die Abfrage einsetzen.

Noch mächtiger wird eine geschachtelte SQL-Abfrage, wenn der innere Befehl nicht mit einem einzigen Vergleichswert arbeitet, sondern nacheinander mit mehreren Werten, die aus den Tupeln der äusseren Abfrage stammen. Interessieren Sie sich für Häuser, die in den Wochen 31 bis 33 frei sind, so können Sie ein geschachteltes SQL formulieren:

SELECT  HausID, Hausname 
FROM    Haus
WHERE   NOT EXISTS (SELECT *
                    FROM   Belegung
                    WHERE  Belegung.HausID = Haus.HausID 
                           AND Woche >= 31 AND Woche <= 33); 

OpenOffice Base liefert Ihnen das korrekte Resultat aus der obigen Tabelle der Buchungsdaten:

Designed & Developed by Minh Tue NGUYEN