Datenbanken Diplomanden-Seminar Prof. Dr. Wolfgang Riggert/ Prof. Dr. Roland Schwesig Lernziele Grundlegende Kenntnisse zu Datenbanken anschaulich darstellen können. [Wiederholung wichtiger Begriffe] Relationale Datenbanken ausgehend von einem betrieblichen Anwendungsprofil sicher konzipieren können. [Erstellung von ER-Modellen] Die Abfragesprache SQL im Hinblick auf Datendefinitionen anwenden und bezüglich Datenmanipulationen sicher beherrschen. [Interpretation und Entwicklung einfacher und komplexer Befehle] Klausur-Anforderungen Detailfragen [5 Fragen, zusammen maximal 30 P] Die Einordnung des Themas, die kausalen Zusammenhänge und die Gesamteinschätzung in vollständigen Sätzen darstellen. Faktenwissen kann in Form von Aufzählungen präsentiert werden. Wenn möglich: Ergänzung und Veranschaulichung der Texte durch Grafiken und Tabellen. Komplexaufgaben [2 von 3 Aufgaben, jeweils maximal30 P] Schwerpunktthema - es werden mehrere Fragen zu einem Thema gestellt. Ausführlich beschreiben analysieren und begründen, Wissen auf den Fall übertragen, Eigene Vorschläge entwickeln, Systematische Bearbeitung/ systematische Gliederung. Zusammenhängend formulieren; Faktenwissen in Form von Aufzählungen. Datenbanken: Einführung Einsatzbereiche von Datenbanken Leistungsmerkmale von Datenbanken Begriffsbestimmungen Anwendungsprogramm und DBMS Datenunabhängigkeit beim Drei-Ebenen-Modell Datenintegrität Einsatzbereiche von Datenbanken Als Basis eines betrieblichen Informationssystems [Ganzheitlicher Ansatz] Als Subsystem [Nur bestimmte Unternehmensteile oder Funktionsbereiche werden mit Datenbanken unterstützt] Externe Datenbanken [Zum Beispiel Adressen-Datenbanken, Bezugsquellennachweise, wissenschaftliche Dokumentendatenbanken] Leistungsmerkmale von Datenbanken Unabhängigkeit von Daten und Programm Verringerung beziehungsweise systematische Kontrolle der Redundanz Leistungsfähige Konsistenzprüfungen [zum Beispiel Überprüfung, ob alle Rechnungen bezahlt sind, bevor die Daten eines Kunden gelöscht werden.] Flexible Verknüpfungen und Auswertungen [Die Nutzer können eigene Auswertungen realisieren – es besteht keine Abhängigkeit von der hausinternen EDV-Abteilung] Mehrfachzugriff auf die Daten [durch viele Nutzer und unterschiedliche Programme] Umfassender Zugriffsschutz [Bis auf Feldebene und differenziert nach der Art der Operation] Hohe Ausfallsicherheit [durch integrierte Mechanismen zur Rekonstruktion der Daten] Probleme von Datenbanken Die hohen Anforderungen bezüglich Sicherheit und Zuverlässigkeit sind zeit- und kostenintensiv Zugriffe können über mehrere Tabellen erfolgen, was längere Laufzeiten verbunden mit vielen Ein- und Ausgaben und einer hohen Rechenleistung zur Folge hat. Datenbanken sind in den meisten Fällen nicht portabel, was Hardwareänderungen oder Softwareanpassungen - z.B. aufgrund unterschiedlicher SQL-Dialekte - erforderlich macht. Ziele der Datenorganisation Unter Datenorganisation versteht man Verfahren, um Daten hinsichtlich ihrer logischen Zusammenhänge zu analysieren, zu strukturieren und zu ordnen - logische Datenorganisation auf Medien abzulegen und für den Zugriff verfügbar zu halten physische Datenorganisation Ziele schneller Datenzugriff leichte Aktualisierbarkeit beliebige Auswertbarkeit flexible Verknüpfung wirtschaftliche Speicherausnutzung Vermeidung von Redundanzen Datei, Datensatz, Datenelement Datenbank Projekte Dateien Kunden Aufträge Projektorganisation Personal Mitarbeiter n Mitarbeiter 1 Datensatz Name Datensegment Datenelement Nr Nachname Anschrift Vorname Titel PLZ Ort Straße Gehalt Qualifikation Logische Datenorganisation Hierarchischer Aufbau/ Gliederung Datenelement Datensatz Datei Datenbank Datenelement kleinste nicht weiter zerlegbare logische Einheit entspricht einem Datenfeld einer Bildschirmmaske Datensatz Zusammenfassung von Datenelementen entspricht einer Gruppe logisch zusammengehöriger Datenfelder wie z.B. Name oder Adresse Datensatzarten Formatierte Sätze: sie besitzen eine feste Einteilung in Datenelemente mit festen Feldgrenzen entsprechend einer tabellarischen Strukturierung Variable Sätze: sie besitzen keine Strukturierung, sondern die Datenelemente werden fortlaufend erfasst und durch ein oder mehrere Trennsymbole unterschieden Wertung : Formatierte Datensätze gestatten einen schnellen Zugriff, führen aber zu einer unwirtschaftlichen Speicherausnutzung Variable Datensätze hingegen sind langsam im Zugriff, nutzen den Speicher aber effizient aus konkurrierende Ziele Datei- versus Datenbankorganisation Datei Zusammenfassung gleichartiger, logisch zusammengehörender Datensätze Dateien erlauben mehrere Operationen: Suchen, Ändern, Einfügen und Entfernen von Datensätzen Datenbank Zusammenfassung mehrerer Dateien zwischen denen logische Abhängigkeiten existieren und die von einem eigenen Datenbankverwaltungssystem verwaltet werden. Anwendungsprogramm und DBMS Anwendungssysteme Datenbankverwaltungssysteme Datenbestände DBMS: Datenbankmanagementsystem • Bereitstellung der Daten für verschiedene Anwendungsprogramme • Koordination von parallelen Zugriffen auf die Datenbestände • Schaffung der Voraussetzungen für flexiblen Datenzugriff und unterschiedliche Sichtweisen. Datenunabhängigkeit beim Drei-Ebenen-Modell Externe Ebene Logische/ Konzeptionelle Ebene Interne Ebene Logische Datenunabhängigkeit. Es können neue externe Sichten angelegt werden, ohne dass die logische Ebene modifiziert werden muss. Physische Datenunabhängigkeit. Es erfolgt eine Trennung zwischen der logischen Ebene und den Daten beziehungsweise den ZugriffsMechanismen. Datenintegrität Datenintegrität: Alle Aspekte, die das korrekte und zuverlässige Arbeiten mit Datenbanken sicherstellen und unterstützen Datenkonsistenz Datensicherheit Datenschutz Inhaltliche Richtigkeit Sicherung der Daten gegen Verlust und zulässige Änderung Schutz der Daten gegen unberechtigten Zugriff Freiheit von Widersprüchen Betrifft das logische Datenschema Betrifft den technischorganisatorischen Betrieb Betrifft den technischrechtlichen Umgang mit Daten Datenmodelle Arbeitsschritte zur Entwicklung einer Datenbank Das semantische Datenmodell Logische Datenmodelle Bedeutung der Datenmodell am Markt Arbeitsschritte zur Entwicklung einer Datenbank Realität Semantisches Datenmodell Logisches Datenmodell DatenbankDefinition Anwendungsentwicklung Physische Datenorganisation Systemdenken. Betrachtung eines Ausschnitts der Realität mit einer spezifischen Fragestellung. Semantisches Datenmodell. Dargestellt als ER-Diagramm. Logisches Datenmodell. Umsetzung des semantischen Modells in ein logisches Datenmodell. DatenbankDefinition/ Beschreibung. Einsatz des DDL des eingesetzten Datenbankverwaltungssystems. Anwendungsprogramm. Definition der externen BenutzerSichten. Physische Datenorganisation. (Speicher- und Datenorganisation, Zugriffsmethoden, Reorganisation etc.) Datenbankarchitektur Externes Schema konzeptionelles Schema Raumbelegung Prüfungsliste Prüfung Prüfungsaushang Aufsicht Prüfungsfach internes Schema Aufsichteneinteilung ERM Dozent Basistabellen Basistabellen DBMS ER-Diagramm Softwarehaus ER-Diagramm – relationales Modell Student (0,m) belegt (0,n) Mtnr Name SemGr Adresse Student ( Mtnr, Name, SemGr, Adresse) Fach ( Vorlnr, Fach, Semester, Raum, Zeit) Belegung (Mtnr, Vorlnr) Vorlesung Vorlnr Fach Semester Raum Zeit Baumstruktur beim hierarchischen Datenmodell Kunde Müller Auftrag 711 Auftragsposition 1 Auftrag 823 Auftrag 925 Auftragsposition 2 • Entwicklung erfolgte auf Basis klassischer Dateisysteme • Die Darstellung erfolgt in Form einer Baumstruktur. Das „Wurzelobjekt“ ist oben. Problembereiche des hierarchischen Modells Die reale Welt ist nicht immer hierarchisch strukturiert. Deshalb können mit diesem Modell nicht alle Strukturen abgebildet werden. Mit hierarchischen Modellen lassen sich nur 1:1 und 1:nBeziehungen abbilden. Jede m:n-Beziehung muss in 1:nBeziehungen aufgelöst werden. Dies führt zu redundanter Datenhaltung. Änderungen von Hierarchiebeziehungen sind aufwendig. Es entsteht ein großer Aufwand bei Auswertungen, die von hierarchischen Zugriffspfaden abweichen. Struktur des Netzwerkmodells Kunde 1 ordert mc Artikel mc liefert 1 Lieferant mc liegt auf 1 Lagerort • Jedes Objekt kann mehrere Vorgänger und mehrere Nachfolger aufweisen. • Damit können 1:1, 1:m, m:1 und n:m-Beziehungen abgebildet werden. Problembereiche des Netzwerkmodells Einsatzbereiche. Heute werden nur noch wenige Datenbankverwaltungssysteme eingesetzt, die auf Netzwerkmodellen basieren. Vorteile. Die Abbildung vielfältiger Beziehungen, auch von m:n-Beziehungen, ist möglich. Gegenüber dem hierarchischen Modell verringern sich hierbei die Redundanzen. Nachteile. Die Verarbeitung von Daten ist aufwendiger als bei hierarchisch strukturierten Modellen; Die Änderung der Datenstruktur ist aufgrund der zahlreichen Verknüpfungen sehr aufwendig. Begriffe des relationalen Datenmodells [01] Bei neueren Datenbankverwaltungssystemen hat sich das relationale Datenmodell [auch Relationenmodell] durchgesetzt. Es wurde 1968 bis 1973 von E.F. CODD entwickelt und 1970 veröffentlicht. Entitätstypen werden in Form von zweidimensionalen Tabellen dargestellt. Die Tabellen können beliebig viele Entitäten beinhalten. Die Tabellen, die über einen Primärschlüssel verfügen, werden als Relationen bezeichnet. Begriffe des relationalen Datenmodells [02] Innerhalb der Tabelle ist die Reihenfolge der Attribute und der Tupel beliebig. Die Datenbasis eines Datenbanksystems wird gemeinsam durch alle Relationen gebildet. Beispiele für Datenbankverwaltungssysteme auf Basis des Relationenmodells: Oracle, Ingres, Access, Paradox, DB2, Adabas, Informix, Progress, Sybase, R3 SAP. Begriffe des relationalen Modells [03] Tabelle: Relation; Entitätstypen Tabellenkopf: Name der Relation R. KUNDEN KundenNr Name Wohnort 1000 Detmer Hamburg 1001 Friedrich Lübeck 1002 Berg Rendsburg 1003 Müller Buchholz 1004 Schmidt Flensburg Domäne: Wertebereich - Zusammenfassende Darstellung aller möglichen Attributwerte eines Attributs Attribute: Spalte Attributwert: Datenfeld Entität: Zeile; Tupel; Datensatz Primärschlüssel und Fremdschlüssel R. KUNDEN KundenNr Name Wohnort R. Rechnungen Nichtschlüsselattribut RechnNr Betrag KundenNr Primärschlüssel NichtFremdschlüssel Schlüsselattribut 1000 Detmer Hamburg 1001 Friedrich Lübeck 1002 Berg Rendsburg 7765 117,75 1000 1003 Müller Buchholz 7766 188,20 1003 7767 25,82 1000 7768 733,20 1000 Primärschlüssel Logischer Datenbankentwurf auf Basis des relationalen Modells Unterschiedliche Vorgehensweise Ziele der Normalisierung Funktionale und transitive Abhängigkeit Probleme unnormalisierter Relationen Arbeitsschritte der Normalisierung Ergebnisse der Normalisierung Aufgaben der Normalisierung Vermeidung von Redundanzen Vermeidung von Anomalien Vermeidung von Null-Werten Sicherung der Daten-Integrität Optimierte Speicherplatz-Ausnutzung Prozess der Normalisierung Daten in 3 NF-Form Prozess der Normalisierung AusgangsRelation R.Rechnung Unnormalisierte Form der Daten: Alle Daten befinden sich in einer Tabelle, unabhängig von ihren Beziehungen. Name Wohnort Strasse Art ... ..... .... ..... Von der Ausgangsrelation zur 3NF-Form 3 NF Dritte Normalform Daten in 3 NF-Form 2 NF Zweite Normalform 1 NF Erste Normalform AusgangsRelation R. Rechnung Die Daten der Ausgangsrelation werden im Rahmen der Normalisierung durch schrittweise Zerlegung in mehrere Relationen aufgeteilt. Informationsverluste dürfen dadurch nicht entstehen. Bedingungen der Normalformen Dritte Normalform (3 NF) Die Relation muss sich in der 2 NF befinden Alle Nicht-Schlüsselattribute müssen direkt vom Primärschlüssel abhängig sein. Zweite Normalform (2 NF) Die Relation muss sich in der 1 NF befinden Jedes Nicht-Primärschlüsselattribut muss von allen Teilen des Primärschlüssels abhängig sein. Erste Normalform (1 NF) Attribute müssen atomar sein. Es dürfen keine Wiederholungsgruppen auftreten Jede Relation hat einen Primärschlüssel. Dieser identifiziert jedes Tupel eindeutig. Funktionale Abhängigkeit Definition. In einer Relation R {X,Y} ist das Attribut Y funktional abhängig von X (X bestimmt Y funktional), wenn zu jedem Wert des Attributs X genau ein Wert des Attributs Y gehört. Erläuterung: „Funktional abhängig sind solche Datenfelder, die sich nie unabhängig von einander ändern können und wo ein bestimmter wert eines Datenfeldes nicht in verschiedenen Kombinationen mit dem Datenfeld Y auftauchen kann.“ [Ortmann, D. (2001): Datenbanken professionell aufbauen. München. S. 37] Beispiel: Der Abteilungsname ist funktional abhängig von der Abteilungs-Nummer. X Abteilungsnummer A01 A02 Y Abteilungs_Name Export Import Anzahl Mitarbeiter 32 28 Volle funktionale Abhängigkeit Definition. X sei ein zusammengesetztes Attribut aus den Attributen X1 und X2. In einer Relation R {X1, X2, Y} ist das Attribut Y voll funktional abhängig von X, wenn Y von X funktional abhängig ist, nicht aber von X1 oder X2. Erläuterung: „Es besteht eine funktionale Abhängigkeit zwischen einem Datenfeld Y und einer Kombination von anderen Datenfeldern X1 und X2. Wobei aber Y nicht von einem einzelnen Datenfeld aus dieser Kombination funktional abhängig ist.“ [Ortmann, D. (2001): Datenbanken professionell aufbauen. München. S. 38] Beispiel: In einer Kantine wird das Essen dem gemeinsamen Schlüssel aus Tischnummer und Personalnummer zugeordnet. X1 Tischnummer 07 08 X2 Personalnummer 1 2 Y Essen Bauernfrühstück Grüner Salat Transitive Abhängigkeit Definition. In einer Relation R {X, Y, Z} ist das Attribut Z transitiv abhängig von X, wenn Y funktional abhängig von X, (X aber nicht von Y), und Z funktional abhängig von Y ist. Erläuterung: „X sei der Schlüssel der Tabelle (Y funktional abhängig von X, aber nicht umgekehrt), und innerhalb der Tabelle gibt es eine weitere funktionale Abhängigkeit zwischen Z und Y.“ [Ortmann, D. (2001): Datenbanken professionell aufbauen. München. S. 38] Beispiel: Der Preis ist abhängig vom Essen, nicht aber vom Schlüssel der Relation. X1 Tischnummer 07 08 X2 Y Personalnummer Essen 1 Bauernfrühstück 2 Grüner Salat Z Preis 14,50 11,20 Beispiel: Daten normalisieren 1. Normalform Eine Relation ist in der 1. Normalform, wenn kein Attribut enthalten ist, zu dem es pro Datensatz mehrere Attributswerte geben kann, d.h. wenn in jeder Zeile und Spalte nur atomare, nicht weiter zerlegbare Werte gespeichert werden. Auftrag (Aufnr, Artikelnr, Artikelbezeichnung, Menge, Preis, Kundennr, Kundenname, Adresse, Datum) Auftrag Bestellartikel (Aufnr, Kundennr, Kundenname, Adresse, Datum) (Aufnr, Artikelnr, Artikelbezeichnung, Menge, Preis) Primärschlüssel Zusammengesetzter Schlüssel Beispiel: Daten normalisieren 1. Normalform Als Beispiel sollen die Tourendaten verwendet werden. Die Tabelle Tourendaten genügt nicht der 1. NF, da die dritte Spalte noch weiter aufgeteilt werden könnte. Die geteilten Tabellen und entsprechende Beziehung zueinander erfüllt die 1. NF Tourendaten TourenZiele TourenTermine (TourendatenNr, Bezeichnung, Länge, Termine) (TourenNummer, Tour, Kurzbeschreibung,Länge, Grad, Start, Ziel) (TourTerminNr, TourenNummer, Beginn, Ende , MaxTeilnehmer) Primärschlüssel Zusammengesetzter Schlüssel Beispiel: Daten normalisieren 2. Normalform Gilt nur bei zusammengesetztem Primärschlüssel! Eine Relation ist in der 2. Normalform, wenn sie in der 1. Normalform ist und keine Attribute enthält, die in einer 1:1 Beziehung zum Primärschlüssel oder Teilen des Primärschlüssels stehen, d.h. jede Spalte die nicht zum Primärschlüssel gehört, ist vom kompletten PS abhängig. Auftrag Bestellartikel (Aufnr, Kundennr, Kundenname, Adresse, Datum) (Aufnr, Artikelnr, Artikelbezeichnung, Menge, Preis) Auftrag Bestellartikel Artikel Preis (Aufnr, Kundennr, Kundenname, Adresse, Datum) (Aufnr, Artikelnr, Menge) (Artikelnr, Artikelbezeichnung) (Artikelnr, Preis) Beispiel: Daten normalisieren 3. Normalform Eine Relation ist in der 3. Normalform, wenn sie in der 2. Normalform ist und keine Attribute enthält, die untereinander abhängig sind. Auftrag Bestellartikel Artikel Preis (Aufnr, Kundennr, Kundenname, Adresse, Datum) (Aufnr, Artikelnr, Menge) (Artikelnr, Artikelbezeichnung) (Artikelnr, Preis) Auftrag Kunde Anschrift Bestellartikel Artikel Preis (Aufnr, Kundennr, Datum) (Kundennr, Kundenname) (Kundennr, Adresse) (Aufnr, Artikelnr, Menge) (Artikelnr, Artikelbezeichnung) (Artikelnr, Preis) Daten integrieren Auftrag Kunde Anschrift Bestellartikel Artikel Preis (Aufnr, Kundennr, Datum) (Kundennr, Kundenname) (Kundennr, Adresse) (Aufnr, Artikelnr, Menge) (Artikelnr, Artikelbezeichnung) (Artikelnr, Preis) Auftrag Kunde Bestellartikel Artikel Auftrag 1:n Kunde 1:1 1:n Bestellartikel Anschrift n:1 Artikel (Aufnr, Kundennr, Datum) (Kundennr, Kundenname, Adresse) (Aufnr, Artikelnr, Menge) (Artikelnr, Artikelbezeichnung, Preis) 1:1 Preis Wesentliche Merkmale von Transaktionen Atomarität [Atomicity] Eine Transaktion wird nur vollständig ausgeführt oder gar nicht. Konsistenz [Consistency] Eine Transaktion ist eine konsistenzerhaltende Operation. Isoliertheit [Isolation] Andere gleichzeitig ablaufende Transaktionen haben keinen Einfluss auf das Ergebnis einer aktiven Transaktion. [Erforderlich für reibungslosen Mehrbenutzerbetrieb] Mehrere gleichzeitig ablaufende Transaktionen haben das gleiche Resultat, als hätten sie nacheinander stattgefunden. Dauerhaftigtkeit [Durability] Änderungen, die durch Transaktionen bewirkt wurden, können nicht mehr verloren gehen. [Siehe auch: Matthiesen, G. u. M. Unterstein (2000): Relationale Datenbanken und SQL. Konzepte der Entwicklung und Anwendung. 2. Aktualisierte Auflage. München. S. 228] Datenbanken und Objektorientierung Grenzen des Relationalen Modells. Anfang der 80er Jahre wurde deutlich, dass für einige Anwendungsgebiete das relationale Datenmodell nicht optimal ist: Karthografische Anwendungen Multimedia-Anwendungen CAD-Datenbanken Dokumentenverwaltungssysteme Ablauf der Diskussion. Zunächst wurde Konzepte zur Erweiterung des relationalen Datenmodells entwickelt. Ab 1985 erschienen Arbeiten zu objektorientierten Datenbanksystemen. Standardisierung objektorientierter Datenbanken Früher Start. Seit 1993 versuchen Vertreter verschiedener Softwarehäuser einen Standard für OO-Datenbanken zu etablieren. Bildung der Gruppen ODMG (Object Database Management Group) und OMG (Object Management Group). Veröffentlichung in: [Catell, R.G. (1997): Object Database Standard ODMG 2.0. Zusammenarbeit mit Gruppen, die andere Standards erarbeiten. [ANSI X3H2: SQL3; ANSI X3H7: Object Information Management; ANSI X3J16: C++] Kein Industriestandard. Das veröffentlichte Konzept bildet noch keinen Industriestandard oder gar eine Norm. Begriffe zum Thema Datenbanken Entitätsintegrität Referentielle Integrität Temporale Datenbanken Entitätsintegrität Jede Relation muss über ein Schlüsselattribut verfügen, das die Tupel eindeutig identifiziert. Dieser sogenannte Primärschlüssel kann aus einem einzelnen Attribut oder einer Kombination von Attributen bestehen. Referentielle Integrität Aus jeder im Rahmen der Normalisierung gebildeten Form der Daten müssen die in der unnormalisierten Ausgangsrelation vorhandenen Informationen wieder rekonstruiert werden können. Die Referentielle Integrität einer Datenbank wird durch das Einfügen von Fremdschlüssel sichergestellt. Die DBMS stellen sicher, dass für jedes Fremdschlüsselattribut ein entsprechendes Primärschlüsselattribut vorhanden ist. Operationen, die ausgeführt werden sollen, wenn diese Bedingungen nicht erfüllt sind, werden zurückgewiesen oder aber es ist eine Reihenfolge der Operationen einzuhalten. vom DBMS vorgegebene Temporale Datenbanken “Eine temporale Datenbank [engl. temporal database] speichert die vollständige Geschichte der Objekte und Beziehungen. Informationen, die einmal in die Datenbank eingegeben wird, wird nicht mehr gelöscht.” [HANSEN, 2000: 975] Anwendungsbereiche: Personaldatenbank Planungsdatenbank Historische Daten SQL: Datenbeschreibung/ Datenmanipulation Grundlegende Merkmale Datenbeschreibung mit SQL Datenmanipulation Aufgaben für verschiedene Teilgebiete Zusammenfassende Aufgabe Datenbeschreibung Mit einer Datenbeschreibungssprache wird das logische Datenmodell in eine Datenbank-Definition umgesetzt. Anlage von Datenstrukturen Keine Dateneingabe Eintrag der Datenbeschreibung in ein Data Dictionary Aufgaben der Datenbeschreibung Benennen von Relationen und Attributen Definition der Beziehungen zwischen Relationen Definition von Datentypen, Wertebereichen und Schlüsseleigenschaften Definition von Zugriffsrechten Definition von Integritätsbedingungen Definition von modellexternen Konsistenzbedingungen Vorgehensweise 1. Schritt : Sammeln der Datenelemente Datenliste PS Datenfeld Typ Länge PS : Datenfeld : Typ : Länge : NULL : Entität : Alias : Beschreib. NULL Entität Alias Beschreibung Primärschlüssel [Ja / Nein] Bezeichnung des Datenfeldes, wie es gespeichert werden soll Datentyp (z.B. Integer, Währung, Text, ext.) maximale Zahl der Zeichen pro Wert leeres Datenfeld zulässig? [Ja / Nein] Welcher Entitätsmenge wird das Datenfeld zugeordnet Alternative Bezeichnungen für das Datenfeld : Weiter Angaben zum Datenfeld (z.B. zulässige Werte etc.) Vorgehensweise 2. Schritt : Datenobjekte (Entitäten) finden Datenliste PS J Datenfeld Typ Länge NULL Entität Alias AUFNR INT 10 N Auftragsnummer DATUM DAT 8 N Auftragsdatum ARTNR INT 10 N Artikelnummer ARTIKEL TXT 80 J Artikelbezeichnung KNR INT 10 N Kundennummer KNAME TXT 50 J Auftrag Auftrag Artikel Artikel Kunde Kunde Kundenname Beschreibung Entity-Relationship-Modell (ERM) Beziehungsarten 1 : 1 identifizierende Beziehung z.B. Student hat Matrikelnummer 1 : n charakterisierende und klassifizierende Beziehung z.B. Semestergruppe hat Student n : m nicht eindeutige Beziehung, sie muß im Rahmen der Datennormalisierung aufgelöst werden. Beispiel: Student besucht Vorlesung Hierarchische Beziehung Definition. Zu jeder Entität eines untergeordneten Entitätstyps (Kindrelation) existiert genau eine Entität eines übergeordneten Entitätstyps (Elternrelation) mc KUNDEN RECHNUNGEN Erläuterung. Jede Rechnung ist einem Kunden zugeordnet, ein Kunde kann keine, eine oder mehrere Rechnungen erhalten. Arbeitsschritte bei hierarchischen Beziehungen: Hierarchische Beziehungen werden direkt in Relationen umgesetzt. Primärschlüssel der Elternrelation werden als Fremdschlüssel in die Kindrelation übernommen. Hierbei kann der Fremdschlüssel sowohl Schlüssel- als auch Nichtschlüsselattribut sein. Er kann jedoch in der Kindrelation nicht alleiniger Primärschlüssel sein. Ein Beispiel: R. KUNDE KundenNr R. RECHNUNG ... RechnNr KundenNr ... erweitertes Entity-Relationship-Modell (eERM) 1. Optionale Beziehungen Eine Beziehung ist optional, wenn sie auch den Wert "NULL" haben kann : 1 : c Student Note c : c Student Parkplatz Student belegt Parkplatz c : n Fachbereich Parkplatz Fachbereich hat Parkplätze in der Tiefgarage 1 : cn Fachbereich Student Student hat Note Fachbereich hat Studenten (Ausnahme FB13) c : cn Student Buch n : cm Student Vorlesung cn : cm Bauteil Bauteil Student hat Buch ausgeliehen Student besucht Vorlesung Bauteil enthält Bauteil (Stückliste) Konditionelle Beziehung Definition. Bei einer konditionellen Beziehung ist jeder Entität eines Entitätstyps eine oder keine Entität eines anderen Entitätstyps zugeordnet. c LIEFERANT mc ARTIKEL Erläuterung. Ein Lieferant kann keinen, einen oder mehrere Artikel liefern. Ein Artikel kann von einem oder keinem Lieferanten geliefert werden. (Falls er selbst hergestellt wird.) Vorgehensweise: Es wird eine zusätzliche Relation eingefügt. LIEFERANT 1 mc LIEFERBEZIEH UNG c 1 ARTIKEL R. LIEFERANT R. LIEFERBEZIEHUNG R. ARTIKEL LieferantN r. LieferantN r. ArtikelNr. .. ArtikelNr. .. Vorgehensweise 3. Schritt : Beziehungen zwischen den Entitätsmengen beschreiben Kunde (1,1) • • • • erteilt Kunde erteilt einen oder mehrere Aufträge Ein Auftrag ist eindeutig einem Kunden zugeordnet Ein Auftrag enthält einen oder mehrere Artikel Ein Artikel ist in keinem, einem oder mehreren Aufträgen enthalten (1,n) Auftrag Artikel (1,1) (1,1) (1,n) enthält Auftragsposition (1,n) enthält Datentypen Datentyp Erläuterung Beispiel char (Länge) Zeichenkette mit vorgegebener maximaler Länge Artikel_name (30), decimal (Länge, Dezimalstellen) numeric (Länge, Dezimalstellen) Dezimalstellen mit vorgegebener maximaler Länge und Anzahl der Dezimalstellen Artikel_menge numeric (4,2) date Syntax in SQL-Server: datetime Datumswert Kunden_geburtsdatum datetime char Datenmanipulation Operationen der Datenmanipulation: Abfragen von Daten Einfügen, Ändern oder Löschen von Daten Aufbereitung auszugebener Daten Definition von Views Merkmale der Abfragesprache SQL Entwicklung SQL: Structured Querry Language. Ursprünglich von IBM als Abfragesprache konzipiert. Inzwischen verfügt SQL über einen mächtigen Funktionsumfang. SQL hat sich als Standard für relationale Datenbanken durchgesetzt. Einsatz in der Regel durch Systementwickler Erste Normung durch American National Standards Institut (ANSI) 1981 und 1986 (SQL-86) Entstehung zahlreicher SQL-Dialekte 1992: SQL2 (ISO 9075) 1999: SQL:1999 wird veröffentlicht. (vormals als SQL3 bezeichnet.) Charakterisierung von SQL “SQL ist eine relationale, anweisungsorientierte, deskriptive und mengenorientierte Datenbanksprache, die sowohl selbstständig als auch eingebettet eingesetzt werden kann.” [Wirtschaftsinformatik, Lektion 3: 71] SQL-Komponenten SQL DDL DML DCL (Data Definition Language) (Data Manipulation Language) (Data Control Language) Anlegen von Datenstrukturen Kernbereich von SQL Sprache für die Kontrolle der Privilegien; Festlegung der Zugriffsrechte Operationen zum Formulieren von Abfragen und zur Änderung des Datenbestandes CREATE, DROP, ALTER SELECT, INSERT, DELETE GRANT, REVOKE SQL-Anweisungen SCHLÜSSELWORT Name (Werte und Parameter); Es folgen Namen, Werte und sonstige Parameter Schlüsselwort, kennzeichnet die auszuführende Funktionen Abschluss der Anweisung durch ein Semikolon Erzeugung von Tabellen CREATE TABLE tabellenname (spaltenbeschreibung, spaltenbeschreibung, ...); Spaltennamen, Datentypangabe, Angabe ob Nullwerte zulässig sind. Beispiel CREATE TABLE ARTIKEL (ARTNR NUMBER(8) NOT NULL, BEZEICHNUNG CHAR(30), EPREIS NUMBER(10,2)); Erläuterung: Eine Relation „Artikel“ mit drei Attributen wird definiert. Löschen von Tabellen DROP TABLE tabellenname Mit dem gleichen Befehl können auch Views gelöscht werden. Beispiel DROP TABLE ARTIKEL; Erläuterung: Die Tabelle „Artikel“ wird vollständig gelöscht. Primärschlüssel PRIMARY KEY (primärschlüssel, primärschlüssel), Beispiel 1 PRIMARY KEY (KUNR), Beispiel 2 CREATE TABLE KUGRUPPE (KUGRUNR NUMBER(4) NOT NULL, RABATTSATZ NUMBER(5,2), PRIMARY KEY (KUGRUNR); Erläuterung: Im ersten Beispiel wird KUNR zum Primärschlüssel; das zweite Beispiel zeigt, wie die Tabelle KUGRUPPE erstellt und KUGRUNR als Primärschlüssel definiert wird. Fremdschlüsselbeziehungen FOREIGN KEY (primärschlüssel, primärschlüssel) REFERENCES tabellenname Es wird kontrolliert, ob die Fremdschlüsseleinträge immer auf gültige Primärschlüssel in einer anderen Relation verweisen (Referentielle Integrität) Beispiel 1 FOREIGN KEY (KUGRUNR) REFERENCES KUGRUPPE Beispiel 2 Primary KEY (RENR, REDAT, ARTNR), FOREIGN KEY (RENR, REDAT) REFERENCES RECHNUNGEN, FOEIGN KEY (ARTNR) REFERENCES ARTIKEL CHECK-Klausel CHECK ((primärschlüssel, primärschlüssel), IN (SELECT primärschlüssel FROM tabellenname)) Beispiel 1 CHECK ((KUGRUNR) IN (SELECT KUGRUNR FROM KUNDEN)) Beispiel 2 CHECK ((RENR, REDAT) IN (SELECT RENR, REDAT FROM RECHPOS)) Erläuterung: Im ersten Beispiel wird geprüft, ob einer Kundengruppe mindestens ein Kunde zugeordnet ist. Im zweiten Beispiel wird geprüft, ob mindestens eine Position pro Rechnung vorhanden ist. Abfragen von Daten Abfragen von Daten erfolgen mit der SELCET-Anweisung Selektion: Zeilen nach bestimmten Bedingungen auswählen Projektion: Auswahl gewünschter Spalten Verbund: Verknüpfung verschiedener Tabellen über gemeinsame Schlüssel Kombinationen der Operationen sind möglich. Ausgangsrelation Abfrage Ergebnisrelation Anfragetypen Grundlegende Anfragetypen Projektion: Zeige ausgewählte Attributwerte für alle Entities Selektion: Zeige alle Attributwerte für ausgewählte Entities E1 E2 E3 E4 E5 E6 E7 A1 AW 1,1 AW 2,1 AW 3,1 AW 4,1 AW 5,1 AW 6,1 AW 7,1 A2 A W 1,2 A W 2,2 A W 3,2 A W 4,2 A W 5,2 A W 6,2 A W 7,2 A3 AW 1,3 AW 2,3 AW 3,3 AW 4,3 AW 5,3 AW 6,3 AW 7,3 A4 A W 1,4 A W 2,4 A W 3,4 A W 4,4 A W 5,4 A W 6,4 A W 7,4 E1 E2 E3 E4 E5 E6 E7 A1 A W 1,1 AW 2,1 A W 3,1 AW 4,1 AW 5,1 A W 6,1 A W 7,1 A2 A W 1,2 AW 2,2 A W 3,2 AW 4,2 AW 5,2 A W 6,2 A W 7,2 A3 A W 1,3 AW 2,3 A W 3,3 AW 4,3 AW 5,3 A W 6,3 A W 7,3 A4 A W 1,4 AW 2,4 A W 3,4 AW 4,4 AW 5,4 A W 6,4 A W 7,4 Projektion/Selektion liefern neue Relation Anfragetypen Projektion und Selektion sind kombinierbar Zeige ausgewählte Attributwerte für ausgewählte Entities Weiterer Anfragetyp: Join Verbund Daten entstammen dabei aus mehr als einer Relation Beispiele: Liste aller Zimmer mit Art und Ausstattung (Projektion) Liste aller Gäste mit KdNr, Name, Wohnort und Strasse aus Schleswig (Selektion) Liste aller Einzelzimmer mit Ausstattung (Projektion und Selektion) Liste aller Zimmer mit ZiNr und Preis (Join aus Zimmer und Preis) Anfrage von Daten SELECT-Befehl von SQL SELECT-Befehl erwartet Einhaltung syntaktischer Regeln Reihenfolge der Schlüsselwörter Klammerung von Unteranfragen, etc. SELECT-Befehl stellt mächtige Funktionen zur Verfügung SELECT-Syntax Komponente SELECT Funktion Spaltenliste Projektion: Auswahl der gewünschten Spalten SELECT [DISTINCT | ALL] Spaltennamen | * FROM Tabellennamen | Viewnamen Verbund: Verbindung der verschiedenen gewünschten Tabellen über gemeinsamen Schlüssel [WHERE Bedingungen, die Tupel spezifizieren] Selektion: Auswahl bestimmter Zeilen DISTINCT: Ignoriert doppelte Datensätze ALL: Auch doppelte Datensätze werden gefunden Boolsche Operatoren (AND, OR, NOT) Relationenopertaoren (>, <, = ..) Spezielle Operatoren (BETEEN, IN, IS NULL, LIKE, EXISTS) Unterabfragen [GROUP BY Spaltenname, nach gruppiert wird] denen Tupel, die in einer ausgewählten Spalte gleiche Attributwerte enthalten, werden zu einer Gruppe zusammengefasst. [Having Auswahlbedingung] Auswahl bestimmter Gruppen. Die HavingKomponente kann nur zusammen mit der GROUP BY-Komponente verwendet werden. [ORDER BY Spaltenname |Spaltennummer ] Spaltenname ASC Spaltenname DESC] Erzwingt eine bestimmte Sortierreihenfolge der Zeilen in der Ergebnisrelation. Einfügen von Daten Ziel: Einfügen neuer Tupel in eine Relation INSERT INTO tabellenname (spaltenliste) VALUES (werteliste); Beispiel INSERT INTO KUNDEN (KNR, NAME, ORT) VALUES (123, ´Schulze´, ´Stuttgart´); Ändern von Daten Ziel: Ändern von Tupeln UPDATE tabellenname SET spalte = Ausdruck, ... WHERE auswahlbedingung; (WHERE-Bedingung ist optional) Beispiel 1 Beispiel 2 UPDATE KUNDEN SET ORT = ´Stuttgart´ WHERE ORT = ´Stuttgard´ UPDATE RECHNUNG SET BETRAG = BETRAG * 1.15 WHERE KNR NOT IN (SELECT KNR FROM KUNDEN WHERE ORT = ´München´); Erläuterung: Im ersten Beispiel wird die Schreibweise eines Ortsnamens korrigiert. Im zweiten Beispiel erhöht die Anweisung die Rechnungsbeträge der Kunden, die nicht aus München kommen, um 15 Prozent. Löschen von Daten Ziel: Löschen von Tupeln DELETE FROM tabellenname WHERE auswahlbedingung; (WHERE-Bedingung ist optional) Beispiel 1 Beispiel 2 DELETE FROM KUNDEN; DELETE FROM KUNDEN WHERE ORT = ´HAMBURG´; Erläuterung: Im ersten Beispiel werden alle Tupel aus der Relation Kunden gelöscht. Im zweiten Beispiel werden alle Tupel von Kunden aus Hamburg gelöscht. Definition von Views [01] View-Tabellen sind virtuelle Tabellen. CREATE VIEW viewname (spaltenliste) AS Select-Anweisung Tabellen und Spalten, die die Basis für den View bilden. Definition der Spalten, aus denen der View bestehen soll.Wenn keine Angaben gemacht werden, werden die Spalten aus den Tabellen übernommen, die den View bilden. Viewname = Name unter dem der View aufgerufen und im SQL-Systemkatalog verwaltet wird. Definition von Views [02] CREATE VIEW RECHKUNDE (RENR, BETRAG, KNR, NAME, ORT) AS SELECT RENR, BETRAG, R.KNR, NAME, ORT FROM RECHNUNG R, KUNDE K WHERE R.KNR = K.KNR ORDER BY RENR; Erläuterung:Das Beispiel liefert aus den Tabellen KUNDEN und RECHNUNG für jede Rechnung den zugehörigen Kundennamen und Wohnort. Funktion von Views Wiederkehrende Speicherung von Anfragen – Reproduktion auf Knopfdruck Views nutzen alle DML-Operationen Möglichkeit zur bewussten virtuellen Redundanz, z.B. Umsatz als Produkt aus Preis und Menge Bereitstellung von vorgefertigten Reports als Folge von SQLAnweisungen durch die SW-Hersteller Erläuterungen zur SQL-Syntax Funktion MAX, AVG, SUM, COUNT, STDDEV ... Literal nummerische, „alphabetische“ Konstante Ausdruck Nummerisch: +, -, /, Bedingung Relational: =, <, >, <>, >=, <= Boolean: IN, Exists