Kursthemen

  • 11 A: Datenbanken

    Bücherregal, CC0Herzlich Willkommen im Kurs Informatik 11 A zum Thema Relationale Datenbanksysteme!

    Sie werden in diesem Kurs erfahren, wie Sie umfangreiche Datensammlungen effektiv erstellen und verwalten können. Die dabei notwendigen Handlungsschritte ermöglichen Ihnen einen Zugang zu Problemlösetechniken der Informatik.

    Der Moodle-Kurs begleitet den Unterricht. Sie finden hier alle Tafelbilder, Aufgaben, Dateien, Arbeitsblätter sowie Lösungen. Die Unterlagen werden nach der Behandlung in der Stunde freigegeben. 

    Stand: 14.11.2022 - Der Kurs ist aktuell wieder geschlossen.

  • Wissenschaft Informatik

    • Was ist eigentlich Informatik? Geht es in der Informatik um die gleichen Inhalte und Fragestellungen wie in den Klassen 5 bis 10, also im Textverarbeitung, Präsentieren, Problemlösen und Tabellenkalkulation? Was macht man eigentlich als Informatiker?

    • Icon Aufgabe

      Erstellen Sie mithilfe des Lehrbuchs Schöningh Informatik Bd. 1 Seite 6ff. und des Films "Was macht man im Informatik-Studium?" ein Mindmap zur Beantwortung der Fragen

      • Was ist Informatik?
      • Wie ist die Wissenschaft der Informatik gegliedert?
      • Womit beschäftigen sich die Teilgebiete der Informatik?

      Kennzeichnen Sie im Mindmap alle Bereiche, auf denen Sie im bisherigen Informatikunterricht schon einmal gearbeitet haben.

  • Effektive Speicherung und Verwaltung großer Datenmengen

    • Richard Wossidlo gilt als Urvater der mecklenburgischen Volkskunde. Zeit seines Lebens sammelte er niederdeutsche Wörter, Redewendungen und insbesondere Volksüberlieferungen. Seine Daten schrieb Wossidlo auf Karten und sortierte sie in Karteikästen. Dieses Zettelkastensystem wurde mittlerweile von Informatikern digitalisiert und steht allen Menschen als Wossidlo-Archiv zur Verfügung.

      Richard Wossidlo vor seinem Zettelkasten - Quelle: Schularchiv
      Richard Wossidlo vor seinem Zettelkasten - Quelle: Schularchiv

    • Feststellungen:

      Die Aufgabe lässt sich prinzipiell mit der Tabellenkalkulation lösen. Jedoch ist der vom Nutzer zu betreibende Aufwand sehr groß, da sich dieser beim Suchen oder Ergänzen an verschiedenen Eintragungen (i. d. R. Nummern) durch die Tabellen hangeln muss.

      Offensichtlich sind Tabellen geeignete Konstruktionen, um umfangreiche Daten zu speichern. Die Verwaltung dieser Daten, also das Suchen, Erweitern und Ändern ist aber zu umständlich. Eine Tabellenkalkulation scheint bei umfangreichen Daten also das falsche Werkzeug zum Verwalten umfangreicher Datenmengen zu sein. Es muss einen besseren Weg geben.

      Die Lösung liegt in der Verwendung von Datenbanksystemen. Diese sollten die Vorteile der Speicherung von Daten in Tabellen haben und auf jeden Fall effiziente Möglichkeiten zum Eingeben, Ändern und Abfragen von Daten besitzen. 

    • Aufbau eines DBS und Anforderungen an ein DBS

    • Beispiel

      Für jeden Schüler des Gymnasiums werden jährlich die Stammdaten (Name, Vorname, Geburtsdatum, Anschrift, Telefon) erfasst bzw. kontrolliert. Die Eingabe der Daten in den PC erfolgt im Sekretariat. Diese Grunddaten benötigen aber auch:

      • der Koordinator der Sekundarstufe II, um das Kurssystem aufzubauen,
      • der Koordinator der Sekundarstufe I, um die WPU-Kurse zu planen,
      • die Schülerbibliothek, um die Leihlisten zu aktualisieren,
      • der LAN-Administrator, um die Schüleraccounts zu erstellen.

      Jeder Nutzer erhielt von allen Daten eine Kopie auf seinem Rechner. Damit konnte er auf diese zugreifen und Veränderungen in ihnen vornehmen. Ging ein Schüler vom Gymnasium ab, so konnte es passieren, dass seine Daten nur im Sekretariat gelöscht wurden. Die anderen Nutzer mit ihren veränderten Daten erfuhren nichts vom Abgang des Schülers. 

      Es ergab sich folgende Datennutzungsstruktur:

    • Icon Aufgabe
      1. Diskutieren Sie Nachteile der obigen Struktur. Leiten Sie Schlussfolgerungen ab.
      2. Beurteilen Sie die beiden Ansätze zur Speicherung von Daten einer Surfschule (S. 390f. Aufgabe 1-4) sowie eines Online-Buchhandels (S. 298). Leiten Sie Schlussfolgerungen für gute Datenbankensysteme ab.
    • Icon Aufgabe

      Behauptung: Datenbanksystem bestehen aus einer Zwei-Schicht-Architektur und bieten exzellente Möglichkeiten zum Speichern und Verwalten umfangreicher Datenmengen. 

      Informieren Sie sich (in zwei Gruppen) im Lehrbuch Schöningh "Informatik 2" Kapitel 7.1 ab Seite 293 unten und 7.2 ab Seite 298 (ab Zwischenüberschrift ) bzw. im Lehrbuch HeLP "Datenbanken - Informatik für die Sekundarstufe II" Kapitel 2.1 über Datenbanksysteme. Ermitteln Sie Aspekte, die die Behauptungen untermauern. Stellen Sie diese unter Verwendung der u. g. Bereiche in einer Lernübersicht dar.

      • Aufbau, Zugriff und Bestandteile (incl. Aufgaben der Teile) eines Datenbanksystems 
      • Anforderungen an Datenbanksysteme:
        Datenkonsistenz, Datenintegrität, Redundanzarmut, Datensicherheit, Datenschutz, Mehrbenutzerbetrieb, Datenunabhängigkeit, zentrale Kontrolle
    • Nachteile einer solchen Datenverwaltung:
      • starke Datenredundanz, d. h. dieselben Daten werden mehrfach gespeichert
      • nach längerer Zeit erhöhte Dateninkonsistent, d. h. Widersprüchlichkeit zwischen den Datensammlungen 
      • Unflexibel beim Einarbeiten von Änderungen, d. h. Änderungen müssen für jeden Nutzer vorgenommen werden
      • verminderter Datenschutz und geringe Datensicherheit, d. h. Nutzer erhalten Daten, deren Einsicht für sie nicht zulässig ist, Datendiebstahl wird vereinfacht
      • keine Standards, d. h. jedes Programm verwaltet die Daten anders
      Datenverwaltung optimal/heute 

      In der vernetzten Schule gibt es die Schülerdaten nur einmal. Die einzelnen Anwender/Programme greifen nach Prüfung der Befugnis über das Datenbankmanagementsystem (DBMS) logisch auf die Datenbasis zu und erhalten eine eingeschränkte, auf ihre Aufgaben zugeschnittene Sicht auf die Daten. Eine direkte Manipulation der Daten ist nicht mehr möglich. Das DBMS überwacht die Zugriffe. 

      Ein solcher Aufbau ist sinnvoll und dient als Modell für den allgemeinen Aufbau eines Datenbanksystems.

      Grundsätzlicher Aufbau von Datenbanksystemen

      Ein Datenbanksystem (DBS) setzt sich aus einer Datenbasis und einem Datenbank-Managementsystem (DBMS) zusammen. Das DBMS ist ein Softwaresystem zur Definition, Administration, Manipulation und Abfrage von Daten. Es stellt die Schnittstelle zwischen Benutzer und Datenbasis dar und dient der effizienten Speicherung und Abfrage der strukturierten Daten. Die Datenbasis enthält neben den reinen Nutzdaten auch die zur Verwaltung des gesamten Systems nötigen Metadaten. 

      Kriterien/Anforderungen an DBS

      Aus dem formalen Aufbau von Datenbanksystemen ergeben sich Eigenschaften, die gleichzeitig Kriterien für ein gute DBS sind: 

      • Integritätssicherung 
        Daten werden bereits während der Eingabe auf Korrektheit überprüft und Fehleingaben verhindert
      • Redundanzarmut
        ungeordnete Mehrfachspeicherung von Datenwerten wird vermieden
      • Datensicherheit
        ungewollter Datenverlust wird durch Backup- und Prüfmechanismen verhindert
      • Datenschutz
        Zugriffskontrolle und spezifische Sichten sorgen für einen Zugang gemäß der Rechte des Nutzers
      • Mehrbenutzerbetrieb
        mehrere Benutzer können parallel mit den Daten der Datenbank arbeiten, Kollisionen werden verhindert
      • Datenunabhängigkeit
        das DBMS ist nicht an die Daten der Datenbank gekoppelt, es kann unabhängig von den Daten weiterentwickelt werden
      • zentrale Kontrolle
        ein Administrator ist in der Lage, das gesamte System von einem Rechner aus zu verwalten

      nach Horn/Kerner/Forbrig: Lehr- und Übungsbuch Informatik Bd. 1

    • Daten anordnen mit Tabellen – relationale Datenbanksysteme

    • Edgar F. Codd (Quelle: Wikipedia)Die Aufgabe mit der Bibliotheksverwaltung hat ergeben, das sich die Daten in Tabellen strukturieren lassen. Diese Art der Modellierung wird relationales Datenbankmodell genannt und geht auf die Arbeit von Edgar F. Codd (Turing-Preisträger 1981) bei IBM aus dem Jahr 1970 zurück. Folgende Begriffe prägen das Modell:

      Das Relationenschema lässt sich kurz notieren: Person (PNr, Name, Vorname, PLZ, Ort)

      Ziel des Kurses ist es, solche Strukturen aus Datenbankanforderungen selbst zu entwickeln. Zuvor wollen wir aber mal schauen, ob das Datenbanksystem wirklich besser in der Lage ist, Informationen aus den Tabellen zu ermitteln. Wir erinnern uns ja mit Grausen an die Bibliotheksaufgabe zurück!

      Bild: (c) IBM, Quelle Wikipedia, https://en.wikipedia.org/wiki/File:Edgar_F_Codd.jpg

    • Icon Aufgabe

      Vielleicht habt ihr oben im Kurs bereits das (noch leere) Glossar entdeckt. Eure Aufgabe ist es, dieses im Laufe des Kurses zu füllen. Tragt also Begriffe und deren Bedeutung ein. Es sollte kurz und prägnant sein. Prüft aber auch die Eintragungen anderer. Falls ihr darin Diskussionsbedarf seht, nutzt die Kommentarfunktion und einigt euch auf eine einheitliche Formulierung.

  • Daten abfragen - Abfragesprache SQL

    • Icon Link/URL

      Bearbeiten wir das Hauptproblem bei der Verwaltung von Daten in Tabellen, nämlich die Frage: Wie kommen wir gezielt an Informationen. Das Datenbankmanagementsystem verfügt dazu über eine mächtige Sprache: SQL - und die lernen wir nun (erstmal spielerisch). Auf geht es nach SQL Island!

    • Icon Datei
      Lösungen SQL-Island Datei
      Nicht verfügbar, es sei denn: Sie sind in LK
    • CC BY SA 4.0, Dicklyon, https://commons.wikimedia.org/wiki/File:Don_Chamberlin.jpgDie Kommunikation mit dem Datenbanksystem erfolgt mithilfe der Programmiersprache SQL.

      Diese Sprache wurde in den 1970er Jahren von Donald D. Chamberlin (ACM Software System Award 1988) und Raymond F. Boyce basierend auf den Arbeiten von Edgar F. Codd (Turing Award 1981) bei IBM im Rahmen eines Forschungsprojektes entwickelt und 1987 international standardisiert. Im Gegensatz zu bisher im Unterricht behandelten Programmiersprachen die eine Schrittfolge zur Lösung eines Problems angeben (imperative Sprache), ist SQL eine beschreibende (= deklarative) Sprache.

      SQL-Befehle werden in verschiedene Klassen eingeteilt. Für den Informatikunterricht sind relevant:

      • DDL – Data Definition Language
        Befehle zur Definition von Tabellen und Sichten
      • DML – Data Manipulation Language
        Befehle zur Datenmanipulation und Datenabfrage

      Da wir fertige Datenbanksysteme nutzen wollen, ist zunächst nur die Datenabfrage interessant für uns.

      Bild: CC BY-SA 4.0, Dicklyon, https://commons.wikimedia.org/wiki/File:Don_Chamberlin.jpg

    • Hinweis: Parallel zur Erarbeitung der Operationen der Relationenalgebra erfolgt die Fortsetzung der Arbeit im SQL-Tutorial.

    • Operationen auf Tabellen – Selektion, Projektion, Join

      Der SQL-Select-Befehl ermöglicht das Filtern und Abfragen von Daten aus den Tabellen des relationalen Datenbanksystems. Grundlage des Befehls sind mathematische Operationen auf Tabellen, die als Relationenalgebra bezeichnet werden. Keine Panik - die Mathematik ist einfach!

    • Icon Aufgabe

      Ergänzen Sie das Arbeitsblatt zu den Operationen der Relationenalgebra Selektion, Projektion und Join mithilfe des Lehrbuchs Schöningh Informatik II, Kapitel 7.3.

    • Icon Datei
      02 AB Relationenalgebra Lösung Datei
      Nicht verfügbar, es sei denn: Sie sind in LK
    • Zusammenfassung der Operationen der Relationenalgebra

      Selektion: Bei der Selektion erfolgt eine Auswahl von Zeilen einer Tabelle, die bestimmten Eigenschaften genügen.

      Beispiel: Aus der Tabelle Schüler sollen alle Zeilen selektiert werden, für die das Attribut Name den Wert "Müller" hat.

      Schüler SName = 'Müller'(Schüler)
      SNr Vorname Name
      4711 Paul Müller
      0815 Erich Schmidt
      7472 Sven Lehmann
      1234 Olaf Müller
      2313 Jürgen Paulsen

      SNr Vorname Name
      4711 Paul Müller
      1234 Olaf Müller
       

      Projektion: Bei der Projektion erfolgt eine Auswahl von Spalten einer Tabelle mit Redundanzbeseitigung

      Beispiel: Aus der Tabelle Schüler soll das Attribut Name projiziert werden. 

      Schüler PName(Schüler)
      SNr Vorname Name
      4711 Paul Müller
      0815 Erich Schmidt
      7472 Sven Lehmann
      1234 Olaf Müller
      2313 Jürgen Paulsen

      Name
      Müller
      Schmidt
      Lehmann
      Paulsen

      Nacheinanderausführung von Projektion und Selektion

      Beispiel: Aus der Tabelle Schüler sollen die Vornamen aller Schüler angezeigt werden, deren Nachname Müller ist. 

      Schüler PVorname(SName = 'Müller'(Schüler))
      SNr Vorname Name
      4711 Paul Müller
      0815 Erich Schmidt
      7472 Sven Lehmann
      1234 Olaf Müller
      2313 Jürgen Paulsen

       →

      Vorname
      Paul
      Olaf
       
      Inner Join: Ein Join ist der Verbund zwei Relationen über ein verbindendes Attribut zu einer neuen Tabelle. Beim Inner Join werden genau die Datensätze zusammengeführt, bei denen in beiden Tabellen das verbindende Attribut den gleichen Wert besitzt.

      Beispiel: Aus den Tabellen Schüler und Kurse soll ein Inner Join gebildet werden. Das verbindende Attribut lautet SNr. 

      Schüler Kurse JSchüler.SNr = Kurs.SNr(Schüler, Kurs)
      SNr Vorname Name
      4711 Paul Müller
      0815 Erich Schmidt
      7472 Sven Lehmann
      1234 Olaf Müller
      2313 Jürgen Paulsen
      SNr KNr Fehlzeit Punkte
      0815 03 0 12
      4711 03 12 03
      4711 09 8 05
      1234 23 3 14

       

       →

      SNr Vorname Name KNr Fehlzeit Punkte
      4711 Paul Müller 03 12 03
      4711 Paul Müller 09 8 05
      0815 Erich Schmidt 03 0 12
      1234 Olaf Müller 23 3 14
       

      Da zu den SNr 7472 und 2314 der Tabelle Schüler keine "Gegenstücke" in der anderen Tabelle existieren, werden diese Datensätze nicht in der neuen Relation übernommen!

      Äußerer Verbund – Left Join, Right Join, Full Join (nur für den LK): Beim äußeren Verbund werden die Datensätze der beiden Tabellen zusammengeführt, auch wenn für das verbindende Attribut in einer der beiden Tabellen (LEFT/RIGHT) oder in beiden Tabellen (FULL) kein Attributwert vorliegt. In diesem Fall entstehen NULL-Werte. Die Abgabe LEFT bzw. RIGHT kennzeichnet dabei die Tabelle in der Reihenfolge der Notation des SQL-Befehls. 

      Beispiel: Für alle Schüler soll der Status der Spindvermietung angezeigt werden. Es ist also ein Verbund zwischen den Tabellen Schüler und Spind herzustellen wobei alle Schülerangaben angezeigt werden sollen. Es liegt also ein LEFT JOIN vor. Das verbindende Attribut lautet SNr. 

      Schüler Spind J(Left)Schüler.SNr = Spind.SNr(Schüler, Spind)
      SNr Vorname Name
      4711 Paul Müller
      0815 Erich Schmidt
      7472 Sven Lehmann
      1234 Olaf Müller
      2313 Jürgen Paulsen
      ID SNr Ort Beginn
      101   A2  
      102 4711 A1 2020-08-03
      103 4711 A1 2020-08-23
      104 1234 A2 2019-10-01
      105 A3

       

       →

      SNr Vorname Name ID Ort Beginn
      4711 Paul Müller 102 A1 2020-08-03
      4711 Paul Müller 103 A1 2020-08-23
      0815 Erich Schmidt      
      7472 Sven Lehmann
      1234 Olaf Müller 104 A2 2019-10-01
      2313 Jürgen Paulsen
       

    • Relationenalgebra und SQL

      Der SELECT-Befehl

      Die SQL-Abfrage erfolgt mit dem Befehl SELECT unter Angabe von bis zu sechs Komponenten. Die allgemeine Syntax hat die Gestalt:

      SELECT [ALL | DISTINCT] {spalten | *}
      FROM tabelle [alias] [tabelle [alias]] ...
      [WHERE {bedingung | unterabfrage}]
      [GROUP BY spalten [HAVING {bedingung | unterabfrage}]]
      [ORDER BY spalten [ASC | DESC]...];

      Die schwierige Syntax lässt sich wie folgt verstehen:

      Klausel Erläuterung
      SELECT [DISTINCT] Wähle die Werte aus der/den Spalte [mehrfache Datensätze nur einmal] ...
      FROM ... aus der Tabelle bzw. den Tabellen ...
      WHERE ... wobei die Bedingung(en) erfüllt sein soll(en) ...
      GROUP BY ... und gruppiere die Ausgabe von allen Zeilen mit gleichem Attributwert zu einer einzigen ...
      HAVING ... wobei darin folgende zusätzliche Bedingung(en) gelten müssen/muss ...
      ORDER BY [ASC/DESC] ... und sortiere nach den Spalten [auf- bzw. absteigend].
      Selektion in SQL

      Aus der Tabelle Schüler sollen alle Zeilen selektiert werden, in denen der Name "Müller" steht. Die Selektion hat also die Form SName = 'Müller'(Schüler).

      Die Umsetzung in SQL lautet: 

      SELECT * 
      FROM Schüler
      WHERE Name = 'Müller';
      Schüler Ergebnis
      SNr Vorname Name
      4711 Paul Müller
      0815 Erich Schmidt
      7472 Sven Lehmann
      1234 Olaf Müller
      2313 Jürgen Paulsen

      SNr Vorname Name
      4711 Paul Müller
      1234 Olaf Müller
       

      Die WHERE-Klausel liefert also die Selektion. Um zu zeigen, dass alle Spalten angezeigt werden sollen, wird das Stern-Symbol verwendet.

      Nun sollen aus der Tabelle Schüler sollen alle Zeilen selektiert werden, in denen der Name "Müller" steht und deren Vorname mit "O" beginnt. Die Selektion hat also die Form SName = 'Müller' UND Vorname beginnt mit 'O'(Schüler).

      Die Umsetzung in SQL lautet: 

      SELECT * 
      FROM Schüler
      WHERE Name = 'Müller' AND Vorname LIKE 'O%';
      Schüler Ergebnis
      SNr Vorname Name
      4711 Paul Müller
      0815 Erich Schmidt
      7472 Sven Lehmann
      1234 Olaf Müller
      2313 Jürgen Paulsen

       →

      SNr Vorname Name
      1234 Olaf Müller
       

      Bedingungen lassen sich mit AND, OR und NOT verknüpfen. Das Prozentsymbol steht als Platzhalter für eine beliebige Folge von Zeichen. Soll ein einzelnes Zeichen ausgeblendet werden, so benutzt man den Unterstrich als Joker. LIKE wird verwendet im Sinne von "SO WIE". 

      Operator Erklärung
      = < <= >= > <> vergleicht ein Attributwert mit einem anderen bzw. Konstante auf 
      Gleichheit, kleiner als, kleiner gleich, größer gleich, größer, Ungleichheit
      BETWEEN ... AND ... vergleicht, ob der Attributwert zwischen zwei Grenzen liegt (incl. Grenzwerte)
      IN (..., ..., ...) vergleicht, ob der Attributwert ein Element der Menge ist
      LIKE vergleicht Zeichenketten anhand von Ähnlichkeitsoperatoren mit Unterscheidung auf Groß- und Kleinschreibung:
      %: Platzhalter für beliebige Zeichen
      _: Platzhalter für genau ein Zeichen
      IS (NOT) NULL prüft, ob ein Attributwert (nicht) undefiniert ist
      Projektion in SQL

      Aus der Tabelle Schüler sollen alle Spalten mit dem Attribut "Name" projiziert werden. Die Projektion hat also die Form PName(Schüler).

      Die Umsetzung in SQL lautet: 

      SELECT Name
      FROM Schüler; 
      Schüler Ergebnis
      SNr Vorname Name
      4711 Paul Müller
      0815 Erich Schmidt
      7472 Sven Lehmann
      1234 Olaf Müller
      2313 Jürgen Paulsen

      Name
      Müller
      Schmidt
      Lehmann
         
      Paulsen

      Im Gegensatz zur Projektion laut Relationenalgebra zeigt SQL alle Mehrfacheintragungen an. Um dies zu unterbinden, muss dem SELECT-Befehl das Schlüsselwort DISTINCT hinzugefügt werden.

      Die Umsetzung in SQL lautet: 

      SELECT DISTINCT Name 
      FROM Schüler; 
      Schüler Ergebnis
      SNr Vorname Name
      4711 Paul Müller
      0815 Erich Schmidt
      7472 Sven Lehmann
      1234 Olaf Müller
      2313 Jürgen Paulsen

      Name
      Müller
      Schmidt
      Lehmann
      Paulsen

      Hintereinanderausführung von Projektion und Selektion

      Aus der Tabelle Schüler sollen die Vornamen aller Schüler angezeigt werden, deren Nachname Müller ist. 
      Die Abfrage hat also die Form PVorname(SName = 'Müller'(Schüler)).

      Die Umsetzung in SQL lautet: 

      SELECT Vorname 
      FROM Schüler
      WHERE Name = 'Müller';
      Schüler Ergebnis
      SNr Vorname Name
      4711 Paul Müller
      0815 Erich Schmidt
      7472 Sven Lehmann
      1234 Olaf Müller
      2313 Jürgen Paulsen

      Vorname
      Paul
      Olaf
       

      Die Abarbeitung des SQL-Befehls erfolgt also immer von innen nach außen, d. h. zuerst die Selektion, dann die Projektion. 

      Inner Join in SQL

      Aus den Tabellen Schüler und Kurse soll eine Tabelle gebildet werden. Das verbindende Attribut lautet SNr. Die Abfrage hat also die Form
      JSchüler.SNr = Kurs.SNr(Schüler, Kurse).

      Die Umsetzung in SQL lautet:

      SELECT * 
      FROM Schüler INNER JOIN Kurse
      ON Schüler.SNr = Kurse.SNr;
      Schüler Kurse Ergebnis
      SNr Vorname Name
      4711 Paul Müller
      0815 Erich Schmidt
      7472 Sven Lehmann
      1234 Olaf Müller
      2313 Jürgen Paulsen
      SNr KNr Fehlzeit Punkte
      0815 03 0 12
      4711 03 12 03
      4711 09 8 05
      1234 23 3 14

       →

      SNr Vorname Name SNr KNr Fehlzeit Punkte
      4711 Paul Müller 4711 03 12 03
      4711 Paul Müller 4711 09 8 05
      0815 Erich Schmidt 0815 03 0 12
      1234 Olaf Müller 1234 23 3 14
       

      Das Ergebnis ist ein INNER JOIN, wobei die entstandene Tabelle Spalten mehrfach enthält. Ein solcher Ergebnis wird aber i. d. R. nicht gewünscht. Es genügen oft nur einige Spalten des Verbundes.

      Aus den Tabellen Schüler und Kurse sollen alle Schülernamen mit ihren Fehlzeiten aufgelistet werden. Der Befehl lautet:

      SELECT Schüler.Vorname, Schüler.Name, Kurse.KNr, Kurse.Fehlzeit 
      FROM Schüler INNER JOIN Kurse
      ON Schüler.SNr = Kurse.SNr 
      ORDER BY Kurse.Fehlzeit DESC;
      Ergebnis
      Vorname Name KNr Fehlzeit
      Paul Müller 03 12
      Olaf Müller 23 3
      Erich Schmidt 03 0
      Erich Schmidt 23 0
       

    • nur im LK: Outer Join in SQL

      Das im Kurs eingesetzte SQLite unterstützt als äußeren Verbund nur den LEFT JOIN. Ein RIGHT JOIN wird über die Änderung der Reihenfolge der Tabellen realisiert.

      Beispiel: Für alle Schüler soll der Status der Spindvermietung angezeigt werden. Es ist also ein Verbund zwischen den Tabellen Schüler und Spind herzustellen wobei alle Schüler angezeigt werden sollen. Es liegt also ein LEFT JOIN vor. Das verbindende Attribut lautet SNr. 

      Schüler Spind Ergebnis
      SNr Vorname Name
      4711 Paul Müller
      0815 Erich Schmidt
      7472 Sven Lehmann
      1234 Olaf Müller
      2313 Jürgen Paulsen
      ID SNr Ort Beginn
      101   A2  
      102 4711 A1 2020-08-03
      103 4711 A1 2020-08-23
      104 1234 A2 2019-10-01
      105 A3

       

       →

      SNr Vorname Name ID Ort Beginn
      4711 Paul Müller 102 A1 2020-08-03
      4711 Paul Müller 103 A1 2020-08-23
      0815 Erich Schmidt      
      7472 Sven Lehmann
      1234 Olaf Müller 104 A2 2019-10-01
      2313 Jürgen Paulsen
       

      Der SQL-Befehl lautet:

      SELECT * 
      FROM Schüler LEFT JOIN Spind
      ON Schüler.SNr = Spind.SNr;

      Ist eine Liste der Schüler erwünscht, die keine Spinde gemietet haben, so kann dies wie folgt abgefragt werden:

      SELECT Schüler.SNr 
      FROM Schüler LEFT JOIN Spind
      ON Schüler.SNr = Spind.SNr
      WHERE Spind.ID IS NULL;
    • nur für den LK: SQL-Befehle zum Einfügen, Löschen und Ändern von Daten

      Sowohl im SQL-Tutorial als auch auf SQL-Island sind uns weitere Befehle begegnet, die zum Einfügen, Löschen oder Ändern von Daten verwendet wurden.
      Fassen wir diese hier kurz zusammen:

      Einfügen eines vollständigen Datensatzes in der Reihenfolge der Attribute gemäß Relationenschema
      INSERT INTO tabelle
      VALUES (wert1, wert2, ...)
      Einfügen eines Datensatzes mit Angabe der Attribute, die die Werte erhalten sollen
      INSERT INTO tabelle (attribut1, attibut2, ...)
      VALUES (wert1, wert2, ...)
      Löschen von Datensätzen, die eine Bedingung erfüllen
      DELETE FROM tabelle
      WHERE bedingung
      Ändern von Daten, die eine Bedingung erfüllen
      UPDATE tabelle
      SET attribut1 = wert1, attribut2 = wert2, ...
      WHERE bedingung
    • Übungen

    • Icon Datei
      01 Uni-Aufgabe 1 Lösungen Datei
      Nicht verfügbar, es sei denn: Sie sind in LK
    • Icon Datei
      01 Aufgabe Teil 2 Lösung modifiziert (LK) Datei
      Nicht verfügbar, es sei denn: Sie sind in LK
    • Icon Datei
      02 Übungen zur Relationenalgebra Lösung Datei
      Nicht verfügbar, es sei denn: Sie sind in LK
    • Icon Datei
      03 Lösungen DB-Lehrbuch S. 64/2 Datei
      Nicht verfügbar, es sei denn: Sie sind in LK
  • Datenbankentwicklung durch Normalisierung (nur im LK)

    • In den bisherigen Stunden haben wir Datenbanken analysiert und aus ihnen Daten abgefragt. Wir wollen nun einen Schritt weiter gehen und selbst Datenbanken entwickeln. Liegt bereits eine Datensammlung vor, die erweitert oder angepasst werden soll, bietet sich der Prozess der Normalisierung an.  Dabei werden die vorhandenen Strukturen analysiert und ggf. so umgestellt, das eine wohlstrukturierte und redundanzarme Datenbank entsteht. Der Prozess der Normalisierung geht auf die Arbeit von Edgar F. Codd zurück.

      Probleme in nicht normalisierten Tabellen

      Schauen wir uns aber zunächst an einem Beispiel an, welche Probleme in Datensammlungen auftreten können, die nicht normalisiert wurden.

      Eine Schule verwaltet Lernangebote in der folgenden Relation:

      SNr  Name Vorname  Klasse  Klassenlehrer  LANr  Beschreibung Stunden 
      1 Jürgens Ina 11a Lempel 2 Tanz 12
      2 Schmidt Tom 12a Breier 2, 3 Tanz, Chor 22, 8
      3 Jäger Franz 11a Lempel 1, 2, 3 Elektronik, Tanz, Chor 15, 12, 2
      4 Olsen Ina 11b Sommer 2 Tanz 5
      5 Jürgens Paula 12a Breier 4 Töpfern 23

      Welche Auswirkungen auf die Datenintegrität (Widerspruchsfreiheit) hat ...

      1. das Einfügen des neuen Kurses "3D-Druck":
        → Dies ist derzeit nicht möglich, da SNr Schlüssel ist. Der Kurs muss also durch einen Schüler belegt sein, um ihn einzufügen. 
      2. der Abgang/das Löschen der Schülerin Nr. 5 Paula Jürgens:
        → Dies hat zur Folge, dass neben den Schülerdaten auch die Daten des Töpferkurses gelöscht werden. 
      3. das Ändern des Namens wegen Heirat der Lehrerin Lempel zu Lempel-Schmidt:
        → Dies muss in der Tabelle mehrfach geändert werden. Dabei besteht die Gefahr der Dateninkonsistenz.

      Das Ändern, Einfügen und Löschen von Daten kann also zu Problemen und Fehlern führen. Man bezeichnet dies als Änderungs- Einfüge-, Löschanomalie. Außerdem sind in der Tabelle Daten unnötigerweise mehrfach gespeichert. Die geforderte Redunandzarmut ist nicht gegeben.

    • Prozess der Normalisierung

      Um Redundanzen zu minimieren und die Datenintegrität zu erhalten, werden die Relationen schrittweise in die sog. 3. Normalform überführt. In unserem Fall liegt nur die Relation Lernangebotsübersicht vor:

      SNr  Name Vorname  Klasse  Klassenlehrer  LANr Beschreibung Stunden 
      1 Jürgens Ina 11a Lempel 2 Tanz 12
      2 Schmidt  Tom 12a Breier 2, 3 Tanz, Chor 22, 8
      3 Jäger Franz 11a Lempel 1, 2, 3 Elektronik, Tanz, Chor 15, 12, 2
      4 Olsen Ina 11b Sommer 2 Tanz 5
      5 Jürgens Paula 12a Breier 4 Töpfern 23
      1. Normalform

      Eine Relation befindet sich in der ersten Normalform, falls alle Attribute atomaren Werte aufweisen.

      Zur Bildung der ersten Normalform müssen die nicht atomaren Attributwerte durch Einfügen zusätzlicher Zeilen, Spalten oder neuer Relationen aufgeteilt werden. 

      Relation Lernangebotsübersicht kann durch Hinzufügen von Zeilen (oder durch Auslagern der nichtatomaren Attribute mit dem vorhandenen Schlüssel) in eine neue Relation in die erste Normalform überführt werden:

      SNr  Name Vorname  Klasse  Klassenlehrer  LANr  Beschreibung Stunden 
      1 Jürgens Ina 11a Lempel 2 Tanz 12
      2 Schmidt  Tom 12a Breier 2 Tanz 22
      2 Schmid Tom 12a Breier 3 Chor 8
      3 Jäger Franz 11a Lempel 1 Elektronik 15
      3 Jäger Franz 11a Lempel 2 Tanz 12
      3 Jäger Franz 11a Lempel 3 Chor 2
      4 Olsen Ina 11b Sommer 2 Tanz 5
      5 Jürgens Paula 12a Breier 4 Töpfern 23


      Beobachtung: Die Redundanz nimmt zu. Der bisherige Primärschlüssel verliert seine Eindeutigkeit. 

      2. Normalform

      Eine Relation befindet sich in der zweiten Normalform, falls 

        1. die Relation in der ersten Normalform ist und
        2. jedes Nichtschlüsselattribut vom Primärschlüssel voll funktional abhängig ist.

      Regel zum Prüfen der zweiten Bedingung: 
      Wenn Nichtschlüsselattribute von einem Teil des Schlüssels eindeutig identifiziert werden, dann liegt keine 2. Normalform vor!

      Schrittfolge zur Herstellung der zweiten Normalform: 

        1. Festlegen/Feststellen des Primärschlüssel
          → Falls dieser nur aus einem Attribut besteht, so liegt 2. NF vor. 
        2. Untersuchen, ob aus Teilschlüsselattributen bereits weitere Attribute folgen.
          → Falls dies nicht der Fall ist, so liegt die 2. NF vor. 
          → Falls dies der Fall ist, so Schritt 3.
        3. Bilden einer neuen Relation. Diese enthält das Teilschlüsselattribut und alle von ihm abhängigen Nichtschlüsselattribute. Das Teilschlüsselattribut wird in der neuen Relation der Primärschlüssel.
        4. Löschen der ausgelagerten Nichtschlüsselattribute in der Ausgangsrelation.
        5. Wiederholen des Vorgangs ab Schritt 2, bis alle Nichtschlüsselattribute vom gesamten Schlüssel funktional abhängig sind.

      In der Relation Lernangebotsübersicht ist die Attributkombination SNr und LANr der neue Primärschlüssel. Aus dem Teilschlüssel LANr lässt sich bereits eindeutig auf das Attribut "Beschreibung" schließen. Aus SNr lässt sich eindeutig auf die Attribute "Name", "Vorname", "Klasse" und" Klassenlehrer" schließen. Somit sind zwei neue Relationsschemen Lernangebot und Schüler zu erzeugen und das verbleibende Schema Lernangebotsübersicht so zu überarbeiten, dass die Attribute "Beschreibung", "Name", "Vorname", "Klasse" und "Klassenlehrer" gelöscht werden.

      Relation Lernangebot Relation Schüler Relation Lernangebotsübersicht
      LANr Beschreibung 
      1 Elektronik
      2 Tanz
      3 Chor
      4 Töpfern
      SNr  Name  Vorname  Klasse  Klassenlehrer 
      1 Jürgens Ina 11a Lempel
      2 Schmidt Tom 12a Breier
      3 Jäger Franz 11a Lempel
      4 Olsen Ina 11b Sommer
      5 Jürgens Paula 12a Breier
      ↑Nr ↑LANr  Stunden 
      1 2 12
      2 2 22
      2 3 8
      3 1 15
      3 2 12
      3 3 2
      4 2 5
      5 4 23
      3. Normalform

      Eine Relation befindet sich in der dritten Normalform, falls

        1. die Relation in der zweiten Normalform ist und
        2. zwischen den Nichtschlüsselattributen keine Abhängigkeiten existieren, d. h. aus keinem Nichtschlüsselattribut folgt ein anderes Nichtschlüsselattribut (Fachbegriff: keine transitiven Abhängigkeiten) 

      Regel zum Prüfen der zweiten Bedingung:
      Wenn aus einem Nichtschlüsselattribut ein anderes Nichtschlüsselattribut folgt, dann liegt keine 3. Normalform vor! 

        Schrittfolge zur Herstellung der dritten Normalform:

          1. Untersuchung, ob aus Nichtschlüsselattributen andere Nichtschlüsselattribute folgen. 
            → Falls dies nicht der Fall ist, so liegt bereits die 3. NF vor.
            → Falls dies der Fall ist, so Schritt 3.
          2. Bilden einer neuen Relation. Diese enthält das Nichtschlüsselattribut und die von ihm abhängigen Attribute.  Das Nichtschlüsselattribut wird in der neuen Relation der Primärschlüssel.
          3. Löschen der ausgelagerten Nichtschlüsselattribute mit Ausnahme des Attributes, das in der neuen Relation Primärschlüssel ist.
          4. Wiederholen des Vorgangs ab Schritt 1, bis keine Abhängigkeiten mehr bestehen.

        In den Relation Lernangebotsübersicht und Lernangebot gibt es nur ein Nichtschlüsselattribut. Daher liegen die Tabellen in der 3. NF vor. In der Relation Schüler folgt aus dem Nichtschlüsselattribut "Klasse" jedoch der "Klassenlehrer". Somit ist eine neue Relation Klassenübersicht mit den Attributen "Klasse" (Primärschlüssel) und "Klassenlehrer" zu erzeugen und das verbleibende Schema Schüler so zu überarbeiten, dass das Attribut "Klassenlehrer" gelöscht wird.

        Relation Lernangebot Relation Schüler Relation Lernangebotsübersicht Relation Klassenübersicht
        LANr Beschreibung 
        1 Elektronik
        2 Tanz
        3 Chor
        4 Töpfern
        SNr Name  Vorname  ↑Klasse 
        1 Jürgens Ina 11a
        2 Schmidt Tom 12a
        3 Jäger Franz 11a
        4 Olsen Ina 11b
        5 Jürgens Paula 12a
        ↑SNr ↑LANr  Stunden 
        1 2 12
        2 2 22
        2 3 8
        3 1 15
        3 2 12
        3 3 2
        4 2 5
        5 4 23
        Klasse Klassenlehrer
        11a Lempel
        11b Sommer
        12a Breier
      • Icon Datei
        01 AB Normalisierung Lösungen Datei
        Nicht verfügbar, es sei denn: Sie sind in LK
      • Icon Datei
        01 Normalisierungsablauf Lösung Datei
        Nicht verfügbar, es sei denn: Sie sind in LK
    • Datenbankentwicklung

      • Der Informatik-Kurs erhält von der Firma "Flotte Flitzer" - einer Vermietungsfirma für Sport- und Mittelklassewagen - den Auftrag, eine relationale Datenbank für die Erfassung der Vermietung der Autos und die Verwaltung des Fuhrparks (die Angaben über den Fahrzeugtyp und die Dokumentation von Reparaturen) zu entwickeln. Eine genaue Anforderungsdefinition befindet sich im Ausschreibungstext der Firma. Der Informatik-Kurs soll dabei zunächst nur die relationale Datenbank entwickeln. Eine grafische Oberfläche ist noch nicht erforderlich.

      • Etappen für den Entwurf eines Datenbanksystems

        Die systematische Entwicklung eines Datenbanksystems erfolgt in Schritten, deren korrekte Ausführung maßgeblich über die Qualität des Endprodukts entscheidet. Im Allgemeinen ist folgender Ablauf notwendig:

        Diese Schritte werden gern in drei Phasen/Etappen zusammengefasst. 

        Anforderungsspezifikation und 
        konzeptionelle Entwurfsetappe

        logische Entwurfsetappe

        physischer Entwurf und Implementierung

        • IST-Analyse
        • SOLL-Konzept (Erstellung eines Profils für die Anforderungen an das DBS)
        • Abbildung des erforderlichen Realitätssausschnitts entsprechend der Anforderungen und Bedingungen unabhängig vom DBMS in eine grafische Darstellung durch die Abstraktion von Objekten und deren Beziehung zueinander auf Entitätstypen und Beziehzungstypen 

         

         

        • Umwandlung des ER-Modells in das relationale Datenmodell  mithilfe eines Regelsystems
        • Festlegung von Primärschlüssel- und Fremdschlüsselattributen
        • Festlegung der Datentypen der Attribute ggf. mit weiteren Einschränkungen zur Sicherstellung der Integrität und Konsistenz
        • Festlegung von Sichten und Zugriffsrechte zur Sicherstellung des Datenschutzes und der Datensicherheit
        • Implementation im DBMS
        • Eingaben von Grunddaten

        Entity-Relationship-Modell (ER-Modell)

        relationales Modell
        Relationenschema

        Datenbanksystem

    • Konzeptionelle Phase: ER-Modellierung

      • Die Modellierung mithilfe des Entity-Relationship-Modells wurde 1976 vom taiwanischer Informatiker Peter Chen entwickelt. Dieses Modell ist die Grundlage für Analyse- und Design-Methoden in der Entwicklung von Datenbanken und Software. Chen zählt zu den Pionieren der Informatik.

        Fotolink aus der Website von Peter Chen als Person der Zeitgeschichte: https://bit.csc.lsu.edu/~chen/chen.html

      • Entität, Attribut, Attributwert, Entitätstyp und Schlüssel

        Eine Entität ist ein eindeutig identifizierbares Objekt oder ein eindeutig identifizierbarer Sachverhalt, beispielsweise

        • der Schüler Karl Meier aus der Klasse 7a,
        • mein Fahrrad der Marke Mifa,
        • ein Exemplar des Buches "Abenteuer Informatik" mit der ISBN 978-38274-1635-3,
        • Konrad Zuses Computer Z3.

        Jede Entität wird durch Attribute/Eigenschaften mit ihren Werten beschrieben. Ein Attribut, dessen Wert zu einem Zeitpunkt unbestimmt/unbekannt ist, besitzt einen NULL-Wert. 

        Entität: Schüler Karl Meier aus der Klasse 7a
        Attribut mit Wert: Name = Meier, Vorname = Karl, Wohnort = Hohenwulsch, Schule = Dorfschule, Klasse = 7a, Telefon = NULL, ...

        Ein Entitätstyp ist eine abstrakte Beschreibung einer Menge von Entitäten mit gleichen Attributen. Eine Entität ist ein eindeutig identifizierbares Element des Entitätstyps. Ein Entitätstyp wird durch die Angabe des Namens und der Attribute vollständig beschrieben. 

        Karl Meier könnte eine Entität des Entitätstyps Schüler sein. 
        Seine Attribute Name und Vorname werden durch die Werte Meier bzw. Karl belegt.
        Objektorientierte Darstellung: Schüler.Name = "Meyer"

        Im Entity-Relationship-Diagramm (ER-Diagramm) wird der Entitätstyp durch Rechteck dargestellt und beschriftet. Die Attribute werden i. d. R. durch Ovale dargestellt, die eine Verbindung zum Entitätstyp haben. 

         

        Besonderheiten bei Attributen:

        • (Teil-) Schlüsselattribut – Unterstreichung:
          Ein Schlüssel ist eine minimale Kombination von Attributen, durch deren Werte jede Entität eindeutig identifiziert wird
          . Die Werte können sich während der Existenz der Entität unter bestimmten Bedingungen ändern, die Eindeutigkeit muss dabei stets gewahrt bleiben. Wird ein Attribut zur Identifikation benötigt, spricht man von einem einfachen Schlüssel. Ansonsten spricht man vom zusammengesetzten Schlüssel, jedes Attribut bezeichnet man als Teilschlüsselattribut.
        • Zusammengesetztes Attribut – Verbindung von Attribut zu Attribut:
          Ein Attribut besteht aus weiteren Eigenschaften, beispielsweise die Anschrift aus PLZ, Ort, Straße und Hausnummer. 
        • Mehrwertiges Attribut – doppelt Umrandung: 
          Die Eigenschaft kann mehrere Werte gleichzeitig annehmen, beispielsweise kann das Attribut Unterrichtsfach eines Lehrers einen, zwei oder mehr Eintragungen haben. 
        • Abgeleitetes Attribut – gestrichelte Umrandung:
          Dass Attribut kann aus aus anderen Attributen bestimmt werden, beispielsweise das Alter einer Person aus dem Attribut Geburtsdatum. 

        Beziehung, Beziehungstyp und Kardinalität

        Zwischen Entitäten können vielfältige Beziehungen bestehen, beispielsweise kann Lehrer Lempel der Klassenlehrer des Schülers Paul Meyer sein. Eine Beziehungen besteht zwischen mindestens zwei Entitäten und ist immer gerichtet. Für das Beispiel gilt dann:

        Richtung 1: der Lehrer Lempel unterrichtet den Schüler Karl Meyer.
        Richtung 2: der Schüler Karl Meyer wird von Lehrer Lempel unterrichtet.

        Eine Beziehung verbindet eine oder mehrere Entitäten miteinander. Assoziieren stets zwei Entitäten miteinander, so spricht man von binärer Beziehung. Ein Beziehungstyp umfasst alle Beziehungen, die gleichartig und wechselseitig zwischen zwei Entitätstypen bestehen. Ein Beziehungstyp kann Attribute besitzen. Ob ein Sachverhallt unserer Welt eine Entität oder Beziehung ist, steht oft nicht fest. Hier muss der Datenbankmodellierer angemessen entscheiden. Für die Darstellung von Beziehungstypen nutzt man das Rautensymbol und notiert darin den Namen des Beziehungstyp – möglichst als Verb.

        Die Kardinalität trifft eine Aussage über die maximale Anzahl der an einer Beziehung beteiligten Entitäten. Für die Datenstrukturierung interessieren nicht die genauen Zahlen, sondern nur die Angaben "höchstens eine Entität (1)" oder "mehrere Entitäten (n oder m)". Da der Beziehungstyp wechselseitig ist, wird die Kardinalität durch zwei Angaben vollständig beschrieben.

        a) Jeder Schüler geht in höchstens eine Klasse.
        b) Jede Klasse besteht aus mehreren Schülern.

        Es gibt drei Kombinationen, die wir in der Chen-Notation angeben:

        • 1:1: Jeder Raum ist Klassenraum für höchstens ein Klasse. Jede Klasse hat höchstens einen Raum als Klassenraum.
        • 1:n: Jeder Schüler geht in höchstens eine Klasse. Jede Klasse besteht aus mehreren Schülern.
        • n:m: Jeder Lehrer unterrichtet mehrere Klassen. Jede Klasse wird von mehreren Lehrern unterrichtet.

      • Zur Entwicklung eines ER-Modells analysieren wir die Anforderungsdefinition mithilfe der objektorientierten Sichtweise. Dies erfolgt in den Schritten:
        1. Finden der für die Aufgabenstellung wichtigen Objekte = Entitäten/Entity,
        2. Zuordnung der Objekte zu Klassen = Entitätstypen,
        3. Festlegen von aufgabenrelevanten Attributen dieser Klassen,
        4. Finden von geeigneten Schlüsseln zur Identifikation der Entitäten,
        5. Beschreibung von Beziehungen zwischen den Klassen, festlegen von Beziehungstypen,
        6. Bestimmen der Kardinalität der Beziehungstypen,
        7. Plausibilitätsprüfung.
      • Übungen

      • Icon Datei
        Lösung: Buchverwaltung2015 Datei
        Nicht verfügbar, es sei denn: Sie sind in LK
    • Logische Phase: Umwandlung in das relationale Modell

      • Wir wissen aus der Datenabfrage mithilfe von SQL bereits:

        Das relationale Modell ist ein Datenbankmodell, das Tabellen (Relationen) zur Beschreibung der Datenbasis benutzt. Es wird Relationenschema bezeichnet und besitzt folgende Merkmale:

        • Jede Relation besitzt einen eindeutigen Namen.
        • Die Tabellenköpfe bestehen aus Attributen (Feldern).
        • Attribute, die zu einem Schlüssel gehören, werden durch Unterstreichung hervorgehoben.
        • Eine Entität wird als Datensatz in der Zeile dargestellt.

        Als Primärschlüsselattribut bezeichnet man alle Attribute, die zum Primärschlüssel gehören.

        Als Fremdschlüsselattribut (oft auch nur Fremdschlüssel) bezeichnet man ein Attribut, das in einer anderen Tabelle Primärschlüsselattribut ist. Ein Fremdschlüsselattribut wird i. d. R. durch Kursivschrift, Pfeil vor dem Bezeichner oder gepunktete/gewellte Unterstreichung markiert.

        Ein Relationenschema lässt sich ohne Datensätze in der Kurzform wie folgt notieren: Tabellenname (Schlüsselattribut, AttributA, AttributB, ..., ↑Fremdschlüsselattribut)

      • Umwandlungsregeln ER-Modell → Relationenschema

        1. Jeder Entitätstyp wird in eine eigene Tabelle abgebildet.
          • Einfache Attribute werden Attribute der Tabelle.
          • Schlüssel werden zu Primärschlüsselattributen.
          • Bei zusammengesetzten Attributen gehen nur die Detailattribute in die Tabelle über.
          • Mehrwertige Attribute erzeugen eine eigene Tabelle. Es ist ein zweckmäßiger Name selbst zu wählen. Attribute der Tabelle werden das mehrwertige Attribut und der Schlüssel des Entitätstyp, der damit Fremdschlüssel wird. Alle Attribute der neuen Tabelle bilden den Primärschlüssel.
        2. Jede n:m-Beziehung wird in eine eigene Tabelle abgebildet. Die Schlüssel der beteiligten Entitätstypen kopieren sich in die Tabelle, werden Primärschlüsselattribute und damit Fremdschlüssel. Attribute der Beziehung werden in die Tabelle übernommen. Gegebenenfalls müssen zur Erreichung der Eindeutigkeit der Datensätze weitere Attribute zum Schlüssel hinzugefügt werden!
        3. Jede 1:n- oder 1:1-Beziehung kann aufgelöst werden. Der Schlüssel des Entitätstyps der „1-Seite“ kopiert sich als Fremdschlüsselattribut in die Tabelle des anderen Entitätstyps. Alle Attribute der Beziehung wandern in diese Tabelle. Bei einer 1:1-Beziehung geht nur einmalig ein Schlüssel auf die andere Seite über.
        4. Jede is_a-Beziehung wird aufgelöst. Der Primärschlüssel des allgemeineren/generalisierten Entitätstyps kopiert sich dabei als Schlüsselkandidat und Fremdschlüssel in die Tabelle des spezialisierten Entitätstyps.
        5. Liegt eine 1:1-Beziehung in der Form: "Eine Entität des Typs 1 muss genau mit einer Entität des Typs 2 in Beziehung stehen und umgekehrt", so lassen sich die beiden Tabellen zu einer vereinen. Primärschlüssel wird einer der beiden Schlüssel!
      • Icon Datei
        01 Maschinenverleih Lösung Datei
        Nicht verfügbar, es sei denn: Sie sind in LK
      • Übungen

      • Icon Datei
        04 Lösungen Datei
        Nicht verfügbar, es sei denn: Sie sind in LK
    • Physische Phase: Implementation des relationale Modells in ein DBS

      • SQLite als gewähltes Datenbanksystem

        Vor der Implementierung der Tabellen des relationalen Modells in ein Datenbanksystem wird jedem Attribut ein geeigneter Datentyp zugeordnet. Zusätzliche Angaben pro Attribut ermöglichen Einschränkungen des Wertebereichs und sorgen bei der Dateneingabe für Datenintegrität.

        Datentypen

        Wir unterscheiden zwischen den Datentypen (siehe auch SQLite-Dokumentation)

        • INTEGER – vorzeichenbehaftete Ganzzahl, gespeichert in max. 8 Byte,
        • REAL – vorzeichenbehaftete Gleitkommazahl, gespeichert in 8-Byte IEEE-Notation,
        • TEXT – Zeichenkette, gespeichert als UTF-8, UTF-16 oder UTF-16LE-Wert,
        • BLOB – Datenpaket, gespeichert wie eingegeben.

        In SQLite können bei der Definition der Attribute auch Zeit-, Datums- oder boolesche Datentypen angegeben werden, diese wandelt das System intern in einen Ersatztyp um. Bei der Dateneingabe sind Schreibweisen einzuhalten.

        • DATE – Ersatztyp TEXT in der Form 'YYYY-MM-DD'
        • TIME – Ersatztyp TEXT in der Form 'HH:MM:SS'
        • DATETIME – Ersatztyp TEXT in der Form 'YYYY-MM-DD HH:MM:SS'
        • BOOLEAN – Ersatztyp INTEGER mit den Werten 0 und 1

        Wertebereichsintegrität

        Bei der Definition von Attributen sind Wertebereichseinschränkungen und Vorgabewerte möglich, beispielsweise

        • NULL/Nicht NULL: NULL-Wert ist (nicht) zulässig,
        • Eindeutigkeit (UNIQUE): Attributwert muss über alle Datensätze hinweg eindeutig sein,
        • Standard (DEFAULT): Vorgabe eines Standardattributwertes, welches überschrieben werden kann,
        • Zustandsprüfung (CHECK): Vorgabe einer Bedingung für den Wert in Analogie zur WHERE-Klausel bei SQL-Abfragen.


        Bild: Festlegung der Attributeigenschaften in SQLiteStudio

        Festlegung von Primär- und Fremdschlüsseln

        Besteht der Primärschlüssel aus genau einem Attribut, erfolgt diese Festlegung bei der Definition des Attributs durch die Option Primärer Schlüssel. Weitere Optionen (AUTOINCREMENT, Sortierung) sind möglich.


        Bild: Festlegung zusätzlicher Primärschlüsseleigenschaften in SQLiteStudio

        Liegt ein zusammengesetzter Primärschlüssel vor, so sind die einzelnen Attribute ohne die Aktivierung der Option Primärer Schlüssel festzulegen. Im Anschluss muss man unter Bedingungen die Schlüsseleigenschaft festlegen.

         
        Bild: Definition eines zusammengesetzten Primärschlüssels mittles Bedingungsdefinition in SQLiteStudio

        Die Festlegung eines Fremdschlüssels erfolgt bei der Attributdefinition. Dem Attribut wird als Verweis die fremde Tabelle (Bezeichnung Primärtabelle) mit dem Schlüsselattribut zugeordnet.


        Bild: Festlegung der Fremdschlüsseleingeschaft und Setzen des Verweises in die Fremdtabelle in SQLiteStudio

        Unter Reaktionen sollte festgelegt werden, was beim Ändern/Löschen eines Datensatzes geschieht. Es gilt dabei:

        • NO ACTION: Verweigerung aller Änderungen
        • CASCADE: Weitergabe der Änderung/Löschung an die Detailtabelle
        • RESTRICT: Verweigerung der Änderung auch in der Primärtabelle
        • SET NULL/DEFAULT: Änderung des Verweises in der Detailtabelle auf NULL/DEFAULT, falls dort NULL/DEFAULT-Werte vorhanden/gestattet sind
      • Icon Datei
        02 Beispiel Zoo Lösung Datei
        Nicht verfügbar, es sei denn: Sie sind in LK
      • Icon Datei
        02 Beispiel Zoo Datei
        Nicht verfügbar, es sei denn: Sie sind in LK
      • Überlegungen zu Datenintegrität

        Fassen wir unser Wissen zur Datenintegrität zusammen. Wir unterscheiden zwischen drei Arten von Datenintegrität.

        Wertebereichsintegrität – Integrität auf Datenfeldebene (siehe oben)

        Es wird geprüft, ob der eingebebene Wert aus dem Wertebereichs des Attributes stammt. Das Datenbanksystem lässt verschiedener Datentypen zu, die wiederum eingeschränkt werden können. So ist es möglich, Ober- und Untergrenzen für die Werte anzugeben oder auch Plausibilitätsprüfung vorzunehmen. 

        Datenintegrität auf Datensatzebene

        Hier geht es um die die Korrektheit des Datensatzes, damit beim Hinzufügen, Ändern oder Löschen von Datensätzen keine Anomalien auftreten. Durch Normalisierung sichert man weitgehend die Datenintegrität auf Datensatzebene.

        Referentielle Integrität – Integrität auf Beziehungsebene

        Hier geht es um die die Korrektheit der Beziehungen zwischen den Attributen in einer Relation und der Erhaltung der Eindeutigkeit des Schlüssels. Bezahlt beispielsweise ein Kunde nicht seine Telefonrechnung, wird deshalb vom Telefonnetz abgetrennt und ein anderer Kunde erhält die freigewordenen Nummer, dann darf der neue Kunde nicht die Mahnung seines Vorgängers erhalten. Sollen festgelegte Beziehungen zwischen Relationen auch bei Änderungen oder Löschungen bestehen bleiben, so muss man dafür sorgen, dass die referentielle Integrität durchgesetzt wird. Referentielle Integrität sorgt für die Korrektheit und Konsistenz der Beziehungen zwischen den Relationen. Dadurch lassen sich Fehler in der Datenbestand, sog. Anomalien, verhindern (siehe oben Normalisierung).

      • Lösungen:

    • Datenschutz