OpenOffice - Base G. Laner 1 BASE - OpenOffice Erstellen einer Datenbank Einteilung einer Datenbank in TABELLEN, die FELDER enthalten, die einem bestimmten DATENTYP zugeordnet sind. Die einzelnen Datensätze einer Tabellen bestehen aus den Datenfeldern, die Inhalte dieses Datensatzes enthalten. Um die Datensätze unterscheiden zu können, wird ein PrimaryKey festgelegt, meist ist das ein Datenfeld, das automatisch beim Erstellen eines Datensatzes eine Integer-Zahl einfügt. Vorgehensweise: 1) Welche Datenfelder sollen gespeichert werden. (Nicht mindestens, sondern alle Daten, die man für möglich hält) 2) Zuordnung von Datentypen (Zahlen, Text, Bilder, Datum, Zeit, usw.). 3) Erste Eingaben auf PAPIER. 4) Entdecken, dass mehr Daten gespeichert werden könnten. Daher zurück zu Punkt 1. Sonst... 5) Welche der Datenfelder gehören zusammen und können in getrennten Tabellen abgelegt werden. Dazu gehören vor allem Daten, die in mehreren Datensätzen vorkommen können. "Normalisierung" der Datenbank. 6) Erstellen der Datenbank 7) Füllen mit sinnvollen Testdaten 8) Testen der Datenbanken (gewünschte Abfragen erstellen) 9) Entdecken, dass die Datenbank nicht funktionieren kann. Daher zurück zu Punkt 2 oder 3. 10)usw. Am Besten lässt sich das an Hand eines Beispiel darstellen. Wir werden sehen, dass mit dem Wunsch, eine einfache Datenbank für die Verwaltung von Büchern zu generieren, das Ende der Freizeit einhergehen kann. Am Ende könnte eine komplettes Biblothekverwaltung stehen.
OpenOffice - Base G. Laner 2 1. Datenfelder festlegen: Titel, Autor, Verlag, Erscheinungsjahr.. 2. Datentypen überlegen: ID Titel Autor Jahr Wird von Base automatisch erstellt, wenn die DB das erste Mal abgespeichert wird. Festzulegen ist aber, dass automatisch nummeriert werden soll. VAR mit notwendiger Festlegung der Zeichenanzahl VAR VAR 3. "Eingaben" auf Papier: Zum Beispiel "PHP4" aus dem Sybex-Verlag von den Autoren Thomas Weinert und Michael Kofler von 2001. 4. Überprüfen: Wir entdecken, dass auch mehrere Autoren möglich sind. Daher Einfügen eines weiteren Autoren-Feldes. 5. Normalisierung: Beispiel: Bücher Grunddaten Titel Verlag Autor1 Autor2 Jahr PHP5 & MySQL5 Addison-Wesley Michael Kofler Bernd Öggl 2006 MySQL ge-packt mitp Stefan Hinz 2003 Algorithmen Addison-Wesley Robert Sedgewick 1991 Linux Apress Michael Kofler 2004 PHP4 Sybex Mark Kronsbein Thomas Weinert 2001
OpenOffice - Base G. Laner 3 1. Normalform Regeln: Spalten mit gleichartigem Inhalt müssen entfernt werden. (Mehrere Autorenspalten) Für jede Gruppe zusammengehöriger Daten muss eine eigene Tabelle gebildet werden. (Hier nicht gegeben) Jeder Datensatz muss durch einen Primärschlüssel eindeutig identifiziert werden können. (Einführen von ID) ID Titel Verlag Autor Jahr 1 PHP5 & MySQL5 Addison-Wesley Michael Kofler 2006 2 PHP5 & MySQL5 Addison-Wesley Bernd Öggl 2006 3 MySQL ge-packt mitp Stefan Hinz 2003 4 Algorithmen Addison-Wesley Robert Sedgewick 1991 5 Linux Apress Michael Kofler 2004 6 PHP4 Sybex Mark Kronsbein 2001 7 PHP4 Sybex Thomas Weinert 2001
OpenOffice - Base G. Laner 4 2. Normalform Regeln: Wenn sich Inhalte in Spalten wiederholen, muss in mehrere Tabellen zerlegt werden. (Mehrere Autoren) Die Tabellen müssen durch Fremdschlüssel verbunden werden. I D Titel Verlag Jahr 1 PHP5 & MySQL5 Addison-Wesley 2006 2 MySQL ge-packt mitp 2003 3 Algorithmen Addison-Wesley 1991 4 Linux Apress 2004 5 PHP4 Sybex 2001 ID_Titel ID_Autor 1 1 1 2 2 3 3 4 4 1 5 5 5 6 ID Autor 1 Michael Kofler 2 Bernd Öggl 3 Stefan Hinz 4 Robert Sedgewick 5 Mark Kronsbein 6 Thomas Weinert
OpenOffice - Base G. Laner 5 3. Normalform Regeln: Spalten, die nicht in unmittelbarer Abhängigkeit zum Primärschlüssel stehen, müssen in eine eigene Tabelle ausgelagert werden. (Verlag) ID Titel Verlag_ID Jahr 1 PHP5 & MySQL5 1 2006 2 MySQL ge-packt 2 2003 3 Algorithmen 1 1991 4 Linux 3 2004 5 PHP4 4 2001 ID Verlag 1 Addison-Wesley 2 mitp 3 Apress 4 Sybex ID_Titel ID_Autor 1 1 1 2 2 3 3 4 4 1 5 5 5 6 ID Autor 1 Michael Kofler 2 Bernd Öggl 3 Stefan Hinz 4 Robert Sedgewick 5 Mark Kronsbein 6 Thomas Weinert
OpenOffice - Base G. Laner 6 6. Erstellen der Datenbank Openoffice starten und ein neue Datenbank anlegen.
OpenOffice - Base G. Laner 7 Abspeichern der Tabelle. Es kommt die Abfrage nach dem Primärschlüssel. Ein Feld mit dem Namen ID wird erstellt. Es muss noch der "Auto Wert" auf JA gestellt werden. Auf die gleiche Weise die anderen benötigte Tabellen erstellen. Zu Beachten ist, dass in der Verbindungstabelle Titel_Autor beide Felder INTEGER sein müssen, da sie mit den ID- Feldern anderer Tabellen abgeglichen werden müssen, die INTEGER sind. Nun die Tabellen mit Daten füllen.
OpenOffice - Base G. Laner 8 7.) Zusammenführen der Tabellen mittels Abfrage Um die gewünschte Ansicht zu erhalten müssen wir eine Abfrage erstellen. Die englische Bezeichnung ist üblicher DB-Standard: SELECT... Am übersichtilchsten ist die Select-Erstellung in der Entwurfsansicht. Mittels Doppelklick auf die Tabellen oder mit "hinzufügen" legen wir die Tabellen im grauen Bereich ab. Die Tabellen sollten nun passend angeordnet werden. Die Verbindungen der Tabellen weren erstellt, indem einfach mit der Maus zum Beispiel das Feld "ID" der Tabelle "Verlag" genommen wird und auf "Verlag_ID" der Tabelle "Buch" gezogen wird. Es entsteht eine Verbindungslinie. So werden alle Tabellen im Sinne des Entwurfs nach den Normalformen verbunden.
OpenOffice - Base G. Laner 9 Nun müssen noch die Felder ausgewählt werden, die angezeigt werden sollen. Mit Doppelklick auf den Feldnamen in der entsprechenden Tabelle wählt man die Einträge. Sollte ein Feldname nicht passend erscheinen, kann statt dessen ein Alias als Feldbezeichnung eingetragen werden. Als Ergebnis erhalten wir: Die graphische Abfrageerstellung steht für folgende SQL-Abfrage: SELECT "Buch"."Titel", "Autor"."autor" AS "Autor", "Verlag"."Verlag", "Buch"."Jahr" FROM "Verlag", "Buch", "Titel_Autor", "Autor" WHERE "Verlag"."ID" = "Buch"."Verlag_ID" AND "Titel_Autor"."ID_Titel" = "Buch"."ID" AND "Autor"."ID" = "Titel_Autor"."ID_Autor" Dieselbe SQL-Abfrage kann auch in MySQL verwendet werden. Allerdings ohne die von Base erzeugten Anführungszeichen.