NotizenDB - Lehrer-Uni

Werbung
1
Datenbanken
1.1
Datenmodellierung
Daten derselben Art werden zu einer Datenklasse zusammengefasst. Eine Datenklasse wird gewöhnlich in Form einer Tabelle dargestellt. Ein einzelnes Objekt der Datenklasse heißt Datensatz. Ein
Datensatz entspricht also einer Tabellenzeile.
Beispiel 1: Die Kunden einer Firma sollen in einer Tabelle Kunde gespeichert werden, denn diese Daten gehören alle zur gleichen Datenklasse. Ein einzelner Kunde steht in einer Tabellenzeile.
In eine andere Datenklasse gehören die Waren, die die Firma herstellt. Wir speichern sie in der Tabelle Ware. Die Datenklasse der Waren besitzt andere Attribute (Merkmale) wie die Datenklasse der
Kunden. Bei den Waren interessieren uns z. B. der Preis, die Bezeichnung der Ware, die noch im Lager vorhandene Anzahl.
Die Klasse Ware:
Ware
- warennummer
- bezeichnung
- preis
- anzahl
Aufgabe 1: Zeichne daneben ein solches Diagramm für die Klasse Kunde!
Die Attribute der Klasse Ware tauchen in der Tabelle als Spaltennamen auf:
warennummer
bezeichnung
preis
anzahl
Die Klasse der Kunden und die Klasse der Waren haben eine Beziehung (Relation) zueinander. Deshalb konstruiert man relationale Datenbanken.
2
1.2
Beziehungen
Die Beziehung zwischen Frauen und Männern ist in der Regel eine 1:1- Beziehung.
Frau
1
verheiratet
1
Mann
Eine 1:n- Beziehung ist beispielsweise die Beziehung zwischen Firmen und Angestellten, da eine
Firma mehrere Angestellte beschäftigen, aber ein Angestellter nicht in mehreren Firmen beschäftigt
sein kann:
Firma
1
beschäftigt
n
Angestellter
Eine n:m- Beziehung entsteht beispielsweise bei einem Buchverleih. Ein Kunde kann mehrere Bücher ausleihen. Ein Buch kann mehrmals nacheinander an verschiedenen Kunden ausgeliehen werden:
Kunde
n
leihen
m
Buch
Natürlich könnte die Firma jedes Mal, wenn ein Kunde kauft, die volle Adresse des Kunden aufnehmen und alle Daten der Waren. Dieses wäre aber sehr umständlich. Also gibt man dem Kunden eine
Nummer und ebenso jeder Ware. Die Beziehung der beiden ist dann einfach durch eine Tabelle herzustellen, in der Kundennummer und Warennummer stehen und eventuell noch das Datum und ein
Vermerk über die Zahlweise.
Aufgabe 3: Um welche Art von Beziehung handelt es sich im Folgenden jeweils?
Lehrer
Instrumentalunterricht
Fitnesstrainer
unterrichten
teilnehmen
leitet
Klassen
Musikschüler
Gymnastikkurse
3
Aufgabe 4:
Erstelle für die Klasse Kunde eine Tabelle mit einer Spalte kundennummer vom Typ Zahl. Diese Zahl
soll als sogenannter Primärschlüssel den jeweiligen Datensatz eindeutig charakterisieren. Die Attribute vorname, nachname, strasse, postleitzahl, wohnort, staat, emailadresse sollen als Namen von
Tabellenspalten vorkommen. Erstelle ebenso eine Tabelle Ware mit dem Primärschlüssel warennummer. In die Tabelle Kauf kommen die beiden Schlüssel und ein Datum. Es wird nun eine Verbindung
der Tabellen benötigt. Wir wählen im Menü Extras Beziehungen, fügen die Tabellen hinzu und
schließen. Dann ziehen wir die Felder kundennummer von Kunde und warennummer von Ware in die
Tabelle Kauf. (Referentielle Integrität aktivieren.)
Aufgabe 5:
Erstelle für die Klasse Flug mit den Attributen fluglinie, abflugsort, abflugszeit, ankunftsort, ankunftszeit, passagierzahl eine Tabelle mit dem Primärschlüssel flugnummer. Die Klasse Kunde kann wie bei
Aufgabe 4 gestaltet werden.
Aufgabe 6:
Erstelle für die Klasse Buch mit den Attributen buchnummer, titel, verfasser, verlag, erscheinungsjahr, fachgebiet, bemerkung eine Tabelle. Die Klasse Kunde kann wie bei Aufgabe 4 gestaltet werden,
zusätzlich sollen noch schule und klasse registriert werden.
4
In unserer Datenbank erstellen wir eine Abfrage in der Entwurfsansicht. Dazu müssen wir zu unserer
Abfrage eine oder mehrere Tabellen hinzufügen.
Dann wählen wir im Menü Ansicht SQL- Ansicht. In das sich öffnende Textfenster können wir den
Abfragetext schreiben. Wir aktivieren jetzt im Menü Abfrage Ausführen und es erscheint das Ergebnis
der Abfrage als Tabelle.
5
1.3
Abfragen
In eine Datenbank bringt man nicht nur Daten hinein, man will auch Informationen aus ihr herausziehen. Das geschieht durch Abfragen. Eine einfache Sprache wurde dafür entwickelt: SQL (Standard
Query Language). Wir besprechen die wichtigsten Vokabeln von SQL:
1.1.1 Auswahl von Daten mit dem SELECT- Befehl
Beispiel 1:
SELECT * FROM Kunde;
Mit diesem Befehl werden aus der Tabelle Kunde alle Datensätze ausgewählt und angezeigt. Das
Sternchen * ist ein Joker für alles.
Beispiel 2:
SELECT bezeichnung, preis FROM Ware;
Mit diesem Befehl werden aus der Tabelle Ware die Spalten bezeichnung und preis ausgewählt.
Beispiel 3:
SELECT bezeichnung, preis FROM Ware WHERE preis>10;
Mit diesem Befehl werden aus der Tabelle Ware die Spalten bezeichnung und preis ausgewählt und
deren Inhalte angezeigt, wenn der Preis höher als 10 ist.
Beispiel 4:
SELECT * FROM Kunde WHERE nachname LIKE ”S%”;
Hier werden die Zeilen ausgewählt, bei denen der Nachname mit S anfängt. Das Prozentzeichen ist
ein Platzhalter für irgendwelche Zeichen dahinter.
Beispiel 5:
SELECT bezeichnung, preis FROM Ware ORDER BY preis;
Mit diesem Befehl werden aus der Tabelle Ware die Spalten bezeichnung und preis ausgewählt und
nach Preis geordnet.
Aufgabe 7:
Gib den gesamten Inhalt der Tabelle Ware aus. Wie lautet der SQL- Befehl dafür?
Aufgabe 8:
Wähle aus der Tabelle Kunde alle Kunden aus, deren Postleitzahl mit 69 beginnt.
6
1.1.2 Verbinden von zwei Tabellen mit JOIN:
Die Objekte der Klasse Flug werden in der gleichnamigen Tabelle gespeichert. Wir geben jedem Datensatz von Flug eine eindeutige Flugnummer (Primärschlüssel).
Die Tabelle Kunde enthält die Daten der Kunden. Bei jeder Flugbuchung tragen wir die Flugnummer
beim Kunden ein. So werden jedem Passagier seine Flugdaten zugeordnet.
Bei der Abfrage der Datenbank möchten wir sowohl die Daten des Kunden als auch die Daten seines
Fluges anzeigen.
SELECT Vorname, Nachname, Abflughafen, Flugziel, Flugpreis
Diese Verbindung zwischen Kunden und Flug stellt der Befehl INNER JOIN her.
Flug INNER JOIN Kunde
Manche Flüge werden mehrfach gebucht, mache gar nicht. Wir interessieren uns für die Flugnummern
aus der Tabelle Flug, die auch in der Tabelle Kunde vorkommen:
ON Fluege.Flugnummer=Kunden.Flugnummer
Die ganze Abfrage kann also z. B. so aussehen:
Beispiel 6:
SELECT Vorname, Nachname, Abflughafen, Flugziel, Flugpreis
FROM
Flug INNER JOIN Kunde
ON Flug.flugnummer=Kunde.flugnummer
ORDER BY flugpreis DESC;
Aufgabe 9:
Praktiziere das Analoge mit den Tabellen Ware und Kunde. Wie lautet der SQL- Befehl? Drucke Deine Ergebnistabelle aus.
1.1.3 Verbinden von drei Tabellen mit JOIN:
In einem Flugzeug sitzen mehr als eine Person. Es wäre also dumm, in der Tabelle der Flüge alle Personendaten einzutragen. Genauso kann es passieren, dass ein Passagier mehrere Flüge bucht, oder
umsteigen muss. Deshalb ist es sinnvoll, eine dritte Tabelle mit den Buchungen anzulegen. Jetzt stellen wir mit INNER JOIN zuerst eine Verbindung der Tabellen Kunde und Buchung her und dann mit
INNER JOIN eine Verbindung von Flug und Buchung:
Beispiel 10:
SELECT * FROM
Flug INNER JOIN
(Kunde INNER JOIN Buchung ON Kunde.flugnummer = Buchung.flugnummer)
ON Flug.flugnummer = Buchung.flugnummer;
Beispiel 11:
SELECT vorname, nachname
FROM Kunde INNER JOIN (Buch INNER JOIN Entleihung ON Buch.buchnummer = Entleihung.buchnummer) ON Kunde.kundennummer = Entleihung.kundennummer
WHERE datum>#3/4/2006#;
7
Wie im vorhergehenden Beispiel sind drei Tabellen verbunden. Es werden allerdings nur die Spalteninhalte von vorname und nachname angezeigt. Die Auswahl der Datensätze wird noch eingeschränkt
durch die Bedingung, dass das Datum der Entleihung nach dem 4. März 2006 liegen soll.
Aufgabe 9:
Praktiziere das Analoge mit den Tabellen Ware, Kunde und Kauf. Wie lautet der SQL- Befehl? Drucke Deine Ergebnistabelle aus.
Grüße
8
1.1.4 Einfügen von Datensätzen mit dem INSERT- Befehl
Mit INSERT fügen wir Datensätze in die Tabelle ein:
INSERT INTO Kursliste (vorname, nachname, email)
VALUES ("Reinhold", "Ley", "[email protected]");
Die Daten einer Tabelle können wir auch auslesen und in einem Textfile auf der Festplatte speichern:
SELECT * FROM kursliste INTO OUTFILE "kursliste.txt";
Jetzt befindet sich die Textdatei im Unterverzeichnis data\test.
Umgekehrt können wir können Daten z. B. aus einer Excel-Tabelle als Textdatei kursliste.txt speichern. Dabei sind die Spalten durch Tabulator-Zeichen und die Zeilen durch Enter/New Line getrennt.
Diese Datei können wir mit einem Editor bearbeiten. Wir lesen sie in die Datenbank ein mit:
LOAD DATA INFILE "kursliste.txt" INTO TABLE kursliste;
9
2. Servlets
2.1. Request und Response
Das Serverprogramm erhält Daten, die der Benutzer auf der HTML-Seite eingegeben hat (request,
Anfrage). Es antwortet (response). Beispiel:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public class ServletZwei extends HttpServlet
{
public void doPost(HttpServletRequest anfrage,
HttpServletResponse antwort)
throws ServletException, IOException{
String vn = anfrage.getParameter("Vorname");
antwort.setContentType("text/html");
PrintWriter ausgabe = antwort.getWriter();
ausgabe.println("<HTML> <BODY> <FONT SIZE=6 COLOR=red> Hallo ");
ausgabe.println(vn);
ausgabe.println(" viele Grüße vom Server!</FONT></BODY></HTML>");
ausgabe.close();
}
}
Die Antwort erfolgt in der HTML- Form, diese Ausgaben an den User macht ein sogenannter PrintWriter über HTTP.
Herunterladen