TU Bergakademie Freiberg Institut für Informatik Modul „Einführung in die Informatik“ Poolübung 7. Pool-Übung zum Modul „Einführung in die Informatik“ - Aufgaben Thema: Datenbankentwurf, SQL; HTML Teil 1: Datenbanken Grundlagen für die Aufgaben 1 und 2 bilden die Vorlesungsskripte 16 und 17 sowie die 6. Großübung. 1) Datenbanksysteme: ERM (Entity-Relationship-Modell) (Aufgabe aus der Klausur zur LV „Grundlagen der Informatik“ vom 12.09.05) Gegeben sei eine Datenbank E-Bookshop mit den folgenden Tabellen Kunde, bestellt und Buch: Kunde (KNr, Name, Vorname, Adresse, TelNr) KNr: Kundennummer (Primärschlüssel), TelNr: Telefonnummer Buch (ISBN, Titel, Autor, Verlagsbezeichnung, Preis, Anzahl) ISBN: Internationale Standardbuchnummer (Primärschlüssel), Anzahl: Anzahl der vorrätigen Bücher zur jeweiligen ISBN im Lagerbestand bestellt (KNr, ISBN, Bestelldatum, Lieferdatum, Stueck) KNr, ISBN: Primärschlüssel und gleichzeitig Fremdschlüssel - siehe oben, Stueck: Anzahl je Bestellung Aufgabe: Zeichnen Sie für die oben aufgeführte Datenbank für einen E-Bookshop ein ERMDiagramm (einschließlich der Attribute); ERM … Entity-Relationship-Modell. Benutzen Sie dazu die Methodik und die Symbole aus der Vorlesung. Fremdschlüssel sollen in Relationshipsets nicht aufgeführt werden. (Hinweis: Vergessen Sie nicht die Zuordnungscharakteristika.) -------------------------------------------------------------------------------------------------------------------------- 2) Datenbanksysteme: Arbeit mit SQL ( Structured Query Language ) - Hinweise zur Installation von MySQL auf dem privaten PC/Laptop Die MySQL-Datenbank ist Freeware. Allerdings ist die MySQL-Software viel umfangreicher als die Python-Software. Entscheiden Sie selbst, ob Sie die Software auf Ihren PC/Laptop installieren. Sie benötigen dazu die MySQL-Server-Software, die einen ASCII-Client enthält. Zu empfehlen ist außerdem der komfortablere graphische Client MySQL Query Browser 1.2, der auch in der Übung benutzt wird. Die erforderlichen Installationsfiles sind unter folgenden WWW-Adressen zu finden: - MySQL Community Server 5.1: http://dev.mysql.com/downloads/mysql/5.1.html - MySQL GUI Tools: http://dev.mysql.com/downloads/gui-tools/5.0.html Die MySQL GUI Tools enthalten: -- MySQL Query Browser 1.2 (Graphischer MySQL-Client) -- MySQL Administrator 1.2 -- MySQL Migration Toolkit 1.1 - Einführung zur Aufgabe: Die drei Relationen (Tabellen) der Datenbank personal Gegeben sei die (aus der 6. Großübung bekannte) Datenbank personal, deren Entity-RelationshipDiagramm (ERD) im Poolübungsverzeichnis im File DB_personal_ERD.doc dargestellt wird. 1 0109 Nach der Überführung des ERD ins Relationale Datenmodell (RDM) besteht die Datenbank personal aus den drei Relationen (Tabellen) besch, abt und gehstufe. Diese drei Relationen werden im Folgenden in der Form Relationsname(Attributname_1, Attributname_2, ...) erläutert (Primärschlüssel sind dabei unterstrichen): besch(bnr, name, taet, ltr, e_datum, geh, zuschl, abtnr) - Erläuterung der Relations- bzw. Attributnamen: besch ... Beschäftigte; bnr ... Beschäftigtennummer; name ... Name; taet ... Tätigkeit; ltr ... Beschäftigtennummer des Leiters; e_datum ... Einstellungsdatum; geh ... Gehalt; zuschl ... Zuschlag zum Gehalt; abtnr ... Abteilungsnummer der Abteilung, zu der der Beschäftigte gehört; abt(abtnr, abtname, ort) - Erläuterung der Relations- bzw. Attributnamen: abt ... Abteilungen; abtnr ... abtname ... Abteilungsname; ort ... Abteilungsnummer; Ort; gehstufe(stufe, von, bis) - Erläuterung der Relations- bzw. Attributnamen: gehstufe ... Gehaltsstufen; stufe ... Gehaltsstufe; von ... Die Gehaltsstufe beginnt bei diesem Gehaltsbetrag; bis ... Die Gehaltsstufe endet bei diesem Gehaltsbetrag; --------------------------------------------------------------------------------------------------------------------- Vorbereitung der Arbeit mit der Datenbank personal Ehe Sie die Arbeit mit MySQL im Pool beginnen, sollten Sie stets die (für den Pool geschriebene) Kommandoprozedur Start/All Programs/MySQL/Daten zu MySQL einrichten ausführen. Dadurch wird der MySQL-Server neu gestartet und in den originären Zustand gebracht. Vor der Bearbeitung der Aufgabe sollten Sie das aus der 6. Großübung bekannte MySQL-Skript (MySQL-Kommandoprozedur) personal.sql aus dem Verzeichnis der 7. Poolübung in Ihr Arbeitsverzeichnis kopieren. a) Starten des grafischen MySQL-Clients MySQL Query Browser - Hinweis: Der MySQL-Server wurde im Pool auf dem lokalen PC installiert („localhost“). Es gibt verschiedene Clients für MySQL, z.B. den mit dem Server mitgelieferten einfachen MySQL Command Line Client (ASCII-Oberfläche). Wir wollen in der Übung aber mit dem oben erwähnten komfortableren grafischen MySQL Query Browser arbeiten. Starten Sie nun den MySQL Query Browser über Start/All Programs/MySQL/MySQL Query Browser. Geben Sie in das sich öffnende Fenster ein: ---------------------------------------------------------------------------------------------------------Gesp. Verbindungen: <hier nichts eintragen> Server Host: localhost Port: 3306 Nutzername: student <wird in der Übung bekanntgegeben> Passwort: Standardschema: personal ---------------------------------------------------------------------------------------------------------Dann: OK (Hinweis: Falls man für Server Host statt localhost z.B. lab12 eintragen würde, könnte man den (entfernten) MySQL-Server auf diesem PC nutzen. Dazu muss natürlich der Server auf diesem PC laufen.) 2 0109 Die Gestalt der Oberfläche des MySQL Query Browser kann, wie bei Windows-Programmen allgemein üblich, über das Menü Ansicht modifiziert werden. Über Ansicht/Abfrageeditor maximieren kann das entsprechende Feld vergrößert bzw. (bei nochmaligem Anklicken) verkleinert werden. Die rechts befindliche Sidebar sollte über Ansicht/Sidebar zugeschaltet sein. b) Aufbau der Tabellen der Datenbank personal Bauen Sie dann die für die Übung benötigten drei Tabellen der Datenbank personal durch Ausführung der bereits genannten SQL-Kommandoprozedur personal.sql in folgender Weise auf: (1) Skript personal.sql im Fenster des MySQL Query Browser öffnen: : Datei/Skript öffnen ... - personal.sql aus dem Arbeitsverzeichnis auswählen Dann: Open unter dem Tabulator Script 1 wird jetzt die Kommandoprozedur angezeigt Bemerkung: Da die Zeit in der Poolübung nicht ausreicht, um die Tabellen von personal selbst durch Einzelkommandos aufzubauen (siehe Vorlesung), führen wir unter (2) die eben geöffnete Kommandoprozedur aus. Studieren Sie vorher unbedingt den Inhalt von personal.sql, vor allem die Kommandos CREATE DATABASE ..., CREATE TABLE ... und INSERT INTO ... (siehe dazu auch 6. Großübung). (2) Script ausführen: Skript/Ausführen rechts ist jetzt unter dem Tabulator Schemata die Datenbank (Schema) personal zu sehen Achtung: Wenn Sie nach Veränderungen an der Datenbank personal (z.B. Löschen von Tabellen) wieder den originären Zustand der Datenbank herstellen wollen, ist erneut das Skript personal.sql auszuführen (wie oben beschrieben). (Durch Klicken auf den Tabulator Script 1 kann man zur Kommandoprozedur personal.sql zurückkehren.) c) Hinweise zur Auswahl einer Datenbank und zur Eingabe der SQL-Kommandos Zuerst muss man stets die konkrete Datenbank (Standardschema bzw. default schema) spezifizieren, mit der man arbeiten will. Wir haben dies bereits beim Aufruf des MySQL Query Browser getan (siehe a) ). Das entsprechende SQL-Kommando lautet: use <database name> z.B.: use personal Um nun SQL-Kommandos eingeben zu können, aktiviert man im Fenster des MySQL Query Browser den Tabulator Ergebnismenge 1. Die SQL-Kommandos werden in den SQLAbfragebereich eingegeben. Groß- und Kleinschreibung ist nicht signifikant. Zeichenkettenkonstanten sind in einfache oder doppelte Anführungszeichen zu setzen: 'Freiberg' oder "Freiberg". Überall, wo ein Leerzeichen steht, kann auch ein Zeilenwechsel eingefügt werden. Das SQL-Kommando ist mit einem Semikolon „;“ abzuschließen. Zur Ausführung des Kommandos muss der Kursor irgendwo im Kommandotext oder auch hinter dem abschließenden Semikolon stehen (aber nicht in einer Leerzeile nach dem Kommando). Ein Kommando wird ausgeführt durch: Strg-ENTER oder auf Schalter „Abfrage ausführen“ (Blitz) klicken oder Abfrage/Ausführen Der Client sendet das Kommando zur Ausführung an den Server und zeigt danach das vom Server erhaltene Resultat an. Jedes vorher eingegeben Kommando kann auf diese Weise wiederholt ausgeführt werden. In der unteren Leiste des MySQL Query Browser-Fensters sind Kommentierungen der Kommandoausführung bzw. Fehlermeldungen zu sehen. 3 0109 Aus Übungsgründen wollen wir die SQL-Kommandos nicht durch Klicken von Schaltern zusammenstellen, sondern selbst mit der Tastatur in den Abfragebereich eingeben. ----------------------------------- Aufgaben zu SQL: - Lassen Sie sich zunächst vollständig ausgeben: SELECT * FROM SELECT * FROM SELECT * FROM die drei Tabellen von PERSONAL mit den folgenden SQL-Anweisungen besch; abt; gehstufe; - Lassen Sie sich dann die Beschreibungen (description) der Tabellen ausgeben: DESC besch; DESC abt; DESC gehstufe; Lösen Sie die folgenden Aufgaben jeweils mit nur einer SQL-Anweisung (alle Aufgaben beziehen sich auf die oben erläuterte Datenbank PERSONAL): a) Geben Sie für alle Beschäftigten Abteilungsnummer, Name und Gehalt aus, und zwar die Spalten in der soeben aufgeführten Reihenfolge. b) Geben Sie für alle Beschäftigten all ihre Daten absteigend sortiert nach den Abteilungsnummern und innerhalb der Abteilungen aufsteigend sortiert nach den Namen der Beschäftigten aus. c) Geben Sie Namen, Gehalt und Tätigkeit aller Beschäftigten aus, die mehr als 5000,- verdienen. d) Wie heißt der Ort der Abteilung, in der Blasche arbeitet? Lösen Sie diese Aufgabe in zwei Varianten: d1) mit einem Join (Equi-Join) d2) mit einer geschachtelten Anfrage e) Geben Sie alle Tätigkeiten aus, aber jede Tätigkeit nur einmal. f) Geben Sie die Namen aller Beschäftigten aus, die die Gehaltsstufe 5 haben. g) Ermitteln Sie die Anzahl aller Beschäftigten. Es soll nur eine Zahl ausgegeben werden. h) Geben Sie für jede Durchschnittsgehalt aus. i) Es wird eine neue Abteilung in Paris mit dem Namen Entwurf eingerichtet, die die Abteilungsnummer 50 erhält. Tragen Sie dies in die Datenbank ein. j) Erhöhen Sie für alle Beschäftigten, die weniger als 3000,- verdienen, das Gehalt um 20%. k) Löschen Sie die Abteilung mit der Abteilungsnummer 50. l) Löschen Sie die Tabelle abt einschließlich der Tabellenbeschreibung. Abteilungsnummer das maximale, das minimale und das Achtung: Wie man den originären Zustand der Datenbank wieder herstellen kann, wurde oben beschrieben. -------------------------------------------4 0109 Teil 2: HTML 3) Vollständiger HTML-Quelltext (falls Zeit nicht reicht: Hausaufgabe) Grundlage dieser Aufgabe ist das Vorlesungsskript Informatik18-Internet.pdf. Das bekannteste HTML-Tutorium (SelfHTML) findet man unter http://de.selfhtml.org/ (Kurzreferenz zu HTML: http://de.selfhtml.org/navigation/html.htm ). Eine sehr einfache und kurze Einführung bringt Kurze Hinweise zur Syntax von HTML.pdf im bekannten Verzeichnis der 7. Poolübung. Vorbereitung: - Kopieren Sie zunächst die beiden Grafiken cat_anim.gif und everest.jpg aus dem Verzeichnis der 7.Poolübung in Ihr Arbeitsverzeichnis, in das Sie später auch den HTML-Quelltext speichern wollen („aktuelles Verzeichnis“). Öffnen Sie dann den bekannten Windows-ASCII-Editor Notepad über Start/All Programs/Accessories/Notepad. Geben Sie nun Ihren HTML-Quelltext mit diesem Editor ein, und speichern Sie den HTML-Quelltext im oben genannten aktuellen Verzeichnis unter einem beliebigen Namen und unbedingt mit dem Typ html (bzw. htm), d.h. zum Beispiel unter der Bezeichnung beispiel.html . - Öffnen Sie dann dieses html-File von einem beliebigen WWW-Browser aus (über File/Open…) oder klicken Sie im Windows-Explorer doppelt auf die html-Filebezeichnung (in diesem Fall wird das HTML-Dokument mit dem Standard-WWW-Browser geöffnet). (Bemerkung: Wie wollen hier nicht mit speziellen HTML-Entwicklungs-Werkzeugen arbeiten.) ---------------------Aufgabe: Schreiben Sie einen vollständigen HTML-Quelltext, den ein WWW-Browser in folgender Weise interpretiert (siehe dazu Vorlesung): Hinweise: Text in Titelleiste Überschrift (Header) der Größe 1 fetter Text HTML-Liste Horizontale Trennlinie (Ruler) Hyperlink auf Homepage der TU BAF Einbinden des Bildes cat_anim.gif aus dem aktuellen Verzeichnis in das Browser-Fenster kursiver Text Hyperlink auf das Bild everest.jpg im aktuellen Verzeichnis Beachten Sie generell Zeilenumbrüche und speziell, dass vor dem Bild zusätzlich eine Leerzeile eingefügt wurde. Fügen Sie mindestens einen Kommentar in den Quelltext ein. 5 0109