Einführung in Datenbankmodellierung und SQL Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 1 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 2 Datenbankmodellierung • Analyse der Datenstruktur • Erstellung eines Speicherungskonzeptes nach verschiedenen Gesichtspunkten (Platz, Geschwindigkeit, Sicherheit) • Darstellung mittels UML (Klassendiagramm) oder ERD (Entity Relationship Diagram) Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 3 Beispiel: Abbildung eines Rechnungsbeleges Attribute eines Rechnungsbeleges – – – – Rechnungsnummer Rechnungsdatum Kunde Artikelpositionen (Artikelnummer, Anzahl) Rechnungs- Datum Kunde Artikelpositionen nummer 1 1.5.2003 Eastwood C. Colt:2, Winchester:3, Whiskey:5 2 2.5.2003 Wayne J. Winchester:10 Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 4 1. Normalform • Ein Attribut darf maximal einen Wert haben Rechnungs- Datum Kunde nummer 1 1.5.2003 Eastwood C. 2 2.5.2003 Wayne J. Artikelposition Anzahl Colt 2 Winchester 3 Whiskey 5 Winchester 10 • Problem: Eindeutige Zuordnung der Artikel zu der Rechnung ist nicht möglich Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 5 1. Normalform • Zuordnung der Artikelpositionen mittels eines „zusammengesetzten Primärschlüssels“ herstellen Rechnungs- Datum Kunde nummer 1 1.5.2003 Eastwood C. 2 2.5.2003 Wayne J. Rechnungsnummer 1 1 1 2 Artikelposition Anzahl Colt Winchester Whiskey Winchester 2 3 5 10 • Primärschlüssel: Eindeutige Identifikation eines Datensatzes Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 6 2. Normalform • Erfüllung der 1. Normalform und Abhängigkeit jedes Attributes vom gesamten Primärschlüssel. Rechnungsnummer 1 1 1 2 Artikelnummer 4711 4712 4713 4712 Artikelname Colt Winchester Whiskey Winchester Anzahl 2 3 5 10 • Artikelname ist nicht abhängig von Rechnungsnummer UND Artikelnummer, sondern NUR von Artikelnummer. Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 7 2. Normalform • Auflösung der „teilweisen“ Relation durch Einführung einer weiteren Tabelle. (= Artikel) Rechnungsnummer 1 1 1 2 Artikel- Anzahl nummer 4711 2 4712 3 4713 5 4712 10 Artikelnummer 4711 4712 4713 Artikelname Colt Winchester Whiskey Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien Preis 100,00 250,00 5,00 8 Und so schaut‘s aus... Rechnung Artikelposition -Rechnungsnummer -Datum -Kunde -Rechnungsnummer -Artikelnummer -Anzahl Artikel -Artikelnummer -Artikelname -Preis Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 9 Anmerkungen • Modellierung nach unterschiedlichen Gesichtspunkten anhand des Gesamtpreises – Redundanzvermeidung: Bei jeder Ausgabe bzw. Anzeige errechnen – Geschwindigkeit: Im Rechnungskopf speichern. Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 10 SQL • DDL (Data Definition Language) – CREATE – ALTER – DROP • DML (Data Modelling Language) – – – – SELECT INSERT UPDATE DELETE Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 11 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 12 SELECT SELECT * FROM rechnung WHERE rechnungsnummer > 2 AND kunde LIKE „Eastwood%“ Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 13 SELECT (schon wieder) SELECT * FROM rechnung WHERE rechnungsnummer IN (2,3,4) SELECT * FROM rechnung WHERE rechnungsnummer BETWEEN 2 AND 4 Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 14 SELECT SELECT *, artikelName FROM artikelposition a, artikel b WHERE a.artikelNummer = b.artikelNummer AND rechnungsNummer = 1 ORDER BY artikelName DESC Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 15 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 Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 16 INSERT INSERT INTO rechnung SET rechnungsNummer datum kunde = 1, = "2003/05/01", = „Stallone S."; Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 17 UPDATE UPDATE rechnung SET kunde = „Stallone S.“ WHERE rechnungsNummer = 4 Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 18 DELETE DELETE FROM rechnung WHERE rechnungsNummer = 4 Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 19 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 20 Und aus.... Danke für die Aufmerksamkeit.... Institut für Mathematik, Universität Wien, Strudlhofgasse 4, A-1090 Wien 21