[[Theorie]] <- [[..:..:Informatik-Buch:]], [[..:Datenbank:]]en -> [[PHPMyAdmin]] ====== Datenbank-Demo mit einer Tabellenkalkulation ====== Da in relationalen Datenbanken alle Daten in Tabellen (Relationen) gespeichert werden, liegt es nahe für die ersten Gehversuche eine Tabellenkalkulation zu nutzen. Als Beispiel soll das ER-Modell der Bibliothek aus der [[Theorie]] dienen. Zunächst müssen daher 3 Tabellen angelegt werden. Da OpenOffice.org wohl das verbreitetste Office-Paket ist, wird im Folgenden bei Tabellenkalkulationen nur noch Calc als Synonym verwendet. Sollte es nicht anders möglich sind, können prinzipiell auch Randprodukte wie Äksel von Mycrosoft Verwendung finden. ===== Anlegen der Datenbank ===== Standardmäßig stellt Calc in einem Tabellendokument 3 Tabellen zur Verfügung. {{ informatik-buch:datenbank:01tabellennichtumbenannt.png |Standard Tabellennamen}} Deren Zahl kann fast beliebig variiert werden. Da im Beispiel aber genau 3 Tabellen benötigt werden, müssen lediglich die Namen der schon vorhandenen Tabellen angepasst werden: Rechter Mausklick auf ''Tabelle1'', umbenennen... Danach sollten die Tabellennamen etwa so aussehen: {{ informatik-buch:datenbank:02umbenanntetabellen.png |Umbenannte Tabellen}} Die einzelnen Attribute werden eingetragen: - Buch: __ID__, Titel, Autor, Verlag, Erscheinungsjahr, Auflage, ... {{ informatik-buch:datenbank:03buchtabelle.png |Tabelle der Bücher}} - Leser: __ID__, Vorname, Nachname, Straße, Hausnummer, PLZ, Ort, Telefon, EMail, ... {{ informatik-buch:datenbank:04lesertabelle.png |Tabelle der Leser}} - Ausleihe: __ID__, Datum, Rückgabe, BuchID, LeserID, ... {{ informatik-buch:datenbank:05ausleihtabelle1.png |Tabelle der ausgeliehenen Bücher}} Die Tabellen ''Buch'' und ''Leser'' werden mit schlicht mit dem lesbaren Inhalt gefüllt. Man beachte, dass Ausleihe kein Entitätstyp sondern eine ''1:n'' Beziehung ist. Da es sich um eine Beziehung handelt, werden einige Inhalte durch Referenzen aus den anderen Tabellen automatisch angezeigt. Folgende Formeln können dazu verwendet werden: ^ B2 | ''=WENN(A2="";"";"Datum eingeben")'' | ^ C2 | ''=WENN(A2="";"";"Datum eingeben")'' | ^ D2 | ''=WENN(A2="";"";"BuchID eingeben")'' | ^ E2 | ''=WENN(A2="";"";"LeserID eingeben")'' | ^ F2 | ''=SVERWEIS(D2;Buch.A$2:E$100;2)'' | ^ G2 | ''=SVERWEIS(E2;Leser.A$2:I$100;3)'' | ===== Verstehen der Tabellen ===== ^ Verweise | In Tabellenkalkulationen können Zellen wie Variablen verwendet werden. Sie können mit eigenen Namen versehen oder mit ihrem Standardnamen aufgerufen werden. Der Standardname ergibt sich an Hand ihrer Lage in der Tabelle. Die Spalten werden mit ''A, B, C, ...'' und die Zeilen mit ''1, 2, 3, ...'' bezeichnet. Ähnlich der Position einer Figur auf einem Schachbrett, wird eine Zelle beispielsweise mit ''D4'' bezeichnet, wenn sie in der Spalte ''D'' und in der Zeile ''4'' liegt. \\ Muss auf einen ganzen Bereich von Zellen verwiesen werden, so geht das nur mit rechteckigen Bereichen. Man gibt die Zelle in der oberen linke Ecke und die Zelle in der rechten unteren Ecke als Begrenzung des Rechtecks an. Beispiel: ''A2:A100'' \\ Zusätzlich kann auf eine andere Tabelle innerhalb der gleichen Datei verwiesen werden, wenn deren Name mit anschließendem Punkt dem Verweis vorangestellt wird. Beispiel: ''Buch.A2:A100'' | ^ ''""'' | Mit den Anführungszeichen kann ein Text als Parameter übergeben werden. Folgen die Anführungszeichen direkt aufeinander, so wird damit ein Text mit der Länge Null gekennzeichnet. Eine leere Zelle hat den Inhalt ''""''. | ^ WENN | Die Funktion ''WENN'' ist eine Kontrollstruktur, die es ermöglicht bedingte Inhalte zu verwirklichen. Im Fall der Zellen ''B2:E2'' wird die Zelle ''A2'' untersucht. Hat sie keinen Inhalt, so wird auch in diesen Zellen kein Inhalt angezeigt. Ansonsten wird der Text angezeigt, der als dritter Parameter übergeben wird. Kurz:\\ ''=WENN (Bedingung; Dann; Sonst)'' | ^ $ | Wird in einer Tabellenkalkulation eine Formel kopiert und eine Zelle weiter unten eingefügt, so werden sämtliche Verweise angepasst. Das hat z.B. den Vorteil, dass der Verweis auf die Zelle ''A2'' in der nächsten Zeile in ''A3'' geändert wird. Soll diese automatische Anpassung verhindert werden, so muss der Teil des Verweises mit einem Dollarzeichen versehen werden, der beibehalten werden soll. In diesem Fall also ''A$2''. In der ''WENN''-Funktion ist das im Gegensatz zum ''SVERWEIS'' noch erwünscht. | ^ SVERWEIS | Der ''SVERWEIS'' ist eine Funktion, der einen bestimmten Zelleninhalt als Funktionswert zurückgibt. Der erste Parameter gibt an, was gesucht werden soll. In der Zelle ''F2'' steht also, dass der Inhalt der Zelle ''D2'' gesucht werden soll. Der zweite Parameter gibt an, wo gesucht werden soll. Es wird in der ersten Spalte in einem rechteckigen Bereich gesucht, der links oben durch die Zelle ''A2'' und rechts unten durch die Zelle ''E100'' begrenzt wird. Wird der richtige Eintrag gefunden, so gibt der dritte Parameter an, welcher Zelleninhalt der entsprechenden Zeile als Funktionswert des ''SVERWEIS'' zurückgegeben werden soll. Wird der richtige Eintrag nicht gefunden, so wird aus der letzten Zeile der Wert zurückgegeben. Die Werte der ersten Spalte im rechteckigen Bereich müssen sortiert vorliegen.\\ Die 9999 sorgt in diesem Fall also dafür, dass in der ''Ausleih''-Tabelle kein Buchtitel oder Nachname steht, wenn noch keine ''BuchID'' oder ''LeserID'' angegeben wurde, weil der Text ''BuchID eingeben'' bzw. ''LeserID eingeben'' in der ersten Spalte von ''A2:E100'' nicht gefunden wurde. | Tipp: * Die ''ID''s werden als einfache Zahlen eingegeben und mit -> Format -> Zellen -> Zahlen -> Führende Nullen -> 4 so verändert, dass immer eine konstante Zahl von Ziffern zu sehen ist. (Danke an die 11er für den Tipp! - Ich weiß leider nicht mehr genau, von wem der war...) ===== Verwenden der Datenbank ===== Die Tabelle ist so weit vorbereitet, dass sie mit geringfügigem Aufwand genutzt werden kann. ==== Bücher ==== Um ein Buch neu einzutragen, muss eine neue (nicht schon vergebene!) ''ID'' angelegt und die zugehörigen Attribute eingegeben werden. Die ''99999'' muss eine Zeile tiefer wieder neu eingegeben oder dorthin verschoben werden. ==== Leser ==== Um eine Leserin / einen Leser neu einzutragen, muss eine neue (nicht schon vergebene!) ''ID'' angelegt und die zugehörigen Attribute eingegeben werden. Die ''9999'' muss eine Zeile tiefer wieder neu eingegeben oder dorthin verschoben werden. ==== Bücher ausleihen ==== Um das Ausleihen eines Buches zu erfassen, muss eine neue (nicht schon vergebene!) ''ID'' angelegt und die zugehörigen Attribute eingegeben werden. Man beachte, dass der Titel des Buches und der Nachname der Leserin / des Lesers automatisch an Hand der zugehörigen IDs aus den jeweiligen Tabellen geholt und angezeigt werden. So werden Redundanzen und Inkonsistenzen vermieden. Beides sollte angezeigt werden, um während der Eingabe schnell überprüfen zu können, ob es sich um das richtige Buch und die richtige Person handelt. Eine ausgefüllte Ausleihtabelle könnte so aussehen: {{ informatik-buch:datenbank:06ausleihtabelle2.png |Ausgefüllte Ausleihtabelle}} Sollten noch mehr Zeilen in der Ausleihtabelle notwendig werden, kann die letzte, noch nicht ausgefüllte, Zeile einfach markiert und nach unten vervielfältigt werden. Die Verweise und Funktionen wurden so angelegt, dass dadurch keine Fehler entstehen. Die Datenbank ist für 99 Bücher, 99 Leser und 19 Ausleihen vorbereitet. Sollen die Möglichkeiten vergrößert werden, so müssen **sämtliche** ''SVERWEISE'' angepasst werden, da es sein kann, dass die erste Ausleihe den zuletzt eingetragenen Leser und das zuletzt eingetragene Buch betrifft, was den zur Zeit eingetragenen ''SVERWEIS'' überfordert. ===== download der Datenbank ===== Wer meint, er könne das alles verstehen, ohne es selbst getippt und geklickt zu haben, der kann sich hier die Datei herunterladen: {{informatik-buch:datenbank:buecherei.ods|OOo-Tabelle}} zum Bearbeiten... ===== Links zu bplaced ===== * [[http://euteneuer.bplaced.de/|Beispielhomepage]] von Herrn Euteneuer * [[http://www.bplaced.net/|bplaced]] - Wer noch keinen SQL-Server hat, kann sich dort registrieren...