Einführung in Datenbankmodellierung und SQL Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
Was ist eine Datenbank? Eine Datenbank ist ein elektronisches System zum Speichern, Verwalten und Auslesen von Daten. SQL-Datenbank (relationale DB) XML-Datenbank Objekt-Datenbank. Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
Datenbankmodellierung Analyse der Datenstruktur Erstellung eines Speicherungskonzeptes nach verschiedenen Gesichtspunkten (Platz, Geschwindigkeit, Sicherheit) Darstellung mittels UML (Klassen-diagramm) oder ERD (Entity Relationship Diagram) Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
Beispiel: Abbildung eines Rechnungsbeleges Attribute eines Rechnungsbeleges Rechnungsnummer Rechnungsdatum Kunde Artikelpositionen (Artikelnummer, Anzahl) Problem: Wie viel Platz soll für das Feld Artikelpositionen reserviert werden? Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
1. Normalform Ein Attribut darf maximal einen Wert haben Problem: Eindeutige Zuordnung der Artikel zu der Rechnung ist nicht möglich Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
Normalform Zuordnung der Artikelpositionen mittels eines „zusammengesetzten Primärschlüssels“ herstellen Primärschlüssel: Eindeutige Identifikation eines Datensatzes Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
2. Normalform Erfüllung der 1. Normalform und Abhängigkeit jedes Attributes vom gesamten Primärschlüssel. Artikelname ist nicht abhängig von Rechnungsnummer UND Artikelnummer, sondern NUR von Artikelnummer. Zur Erläuterung: Artikelnummer in Tabelle eingefügt. Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
2. Normalform Auflösung der „teilweisen“ Relation durch Einführung einer weiteren Tabelle. (= Artikel) Es gibt insgesamt 5 Normalformen, 2 reichen für heute... Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
Und so schaut‘s aus... 1 Rechnung hat 1-n Artikelpositionen 1 Artikelposition entspricht genau einem Artikel Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
Anmerkungen Modellierung nach unterschiedlichen Gesichtspunkten anhand des Gesamtpreises Redundanzvermeidung: Bei jeder Ausgabe bzw. Anzeige errechnen Geschwindigkeit: Im Rechnungskopf speichern. Siehe vorige Folie... Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
SQL DDL (Data Definition Language) DML (Data Modelling Language) CREATE ALTER DROP DML (Data Modelling Language) SELECT INSERT UPDATE DELETE DDL: Auf Tabellen-, Index- bzw. Datenbankebene create.sql: Datenbankscript. Skripte ermöglichen automatisches Erstellen und Initalisieren von Datenbanken bzw. Tabellen DML: Auf Recordebene Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
Praktisches Arbeiten Datenbank „mySQL“ SQL GUI „myCC“ Dokumentation f. SQL Beide Produkte sind Open Source (= gratis) Download von „www.mysql.com“ Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
SELECT SELECT * FROM rechnung WHERE rechnungsnummer > 2 AND kunde LIKE „Eastwood%“ Grundstruktur: Befehl: SELECT, INSERT, UPDATE, DELETE Feldselektion: „*“ oder Aufzählung Klauseln: WHERE mit Operatoren (=, <, >, <=, >=, LIKE, BETWEEN, IN) Verknüpfung der Klauseln mit AND oder OR. Klammernsetzung möglich. Hinweis zur Formatierung: Zeilenumbruch bei Klauseln fördert die Lesbarkeit des Statements Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
SELECT (schon wieder) SELECT * FROM rechnung WHERE rechnungsnummer IN (2,3,4) WHERE rechnungsnummer BETWEEN 2 AND 4 Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
SELECT SELECT *, artikelName FROM artikelposition a, artikel b WHERE a.artikelNummer = b.artikelNummer AND rechnungsNummer = 1 ORDER BY artikelName DESC Details zum sog. JOIN (Selektion mehrerer Tabellen) Selektiert alle Felder von artikelposition und das Feld artikelName von artikel Vergibt Alias-Namen für die Tabellen (a, b) => Kurzschreibweise bei nachfolgenden Klauseln „WHERE a.rechnungsNummer...“ Eigentliche Verknüpfung der beiden Tabellen. Kreuzprodukt als Ergebnis, wenn diese Verknüpfung nicht angegeben wird. Absteigende Sortierung nach artikelName. Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
Diverse SELECTS SELECT COUNT(*) FROM rechnung Zählt Datensätze.. SELECT MAX(summe) FROM rechnung Sucht die größte Summe MIN: kleinste AVG: bildet Durchschnitt SUM: bildet Summe Zählt Datensätze Sucht den größten Rechnungsbetrag von rechnung WHERE-Klausen können wie gewohnt verwendet werden. Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
INSERT INSERT INTO rechnung SET rechnungsNummer = 1, datum = "2003/05/01", kunde = „Stallone S."; Liefert Fehlermeldung, wenn Primärschlüssel („primary key“) bereits vorhanden ist! Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
UPDATE UPDATE rechnung SET kunde = „Stallone S.“ WHERE rechnungsNummer = 4 Aufpassen auf WHERE-Klausel. Vorher mit SELECT-Statement ausprobieren, ob der richtige Datensatz „getroffen“ wird. Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
DELETE DELETE FROM rechnung WHERE rechnungsNummer = 4 Aufpassen auf WHERE-Klausel. Vorher mit SELECT-Statement ausprobieren, ob der richtige Datensatz „getroffen“ wird. Hier noch wichtiger als bei UPDATE-Statement, da hier der Datensatz unwiederbringlich futsch ist!!! Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
Links http://www.mysql.com http://ffm.junetz.de/members/reeg/ http://www.geocities.com/SiliconValley/Vista/2207/sql1.html Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien
Danke für die Aufmerksamkeit.... Und aus.... Danke für die Aufmerksamkeit.... Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien