Datenbanken Thomas Thobe Datenbanken 1. Einführung in die Datenorganisation 1-1 Datenbanken Thomas Thobe Warum eine Datenbank ? 1-2 Thomas Thobe Datenbanken Datenbanken Persistenz dauerhafte Speicherung von (strukturierten) Daten zur Überwindung zeitlicher und räumlicher Distanz 1-3 Thomas Thobe Datenbanken Datenbanken Datenunabhängigkeit der Anwendung einfache Handhabung der Daten, ohne die systemtechnische Speicherung zu kennen 1-4 Thomas Thobe Datenbanken Datenbanken Offenheit der Daten für neue Anwendungen die Daten sind anwendungsneutral gespeichert und enthalten alle für ihre Nutzung erforderlichen Informationen (z.B. Datentyp, Wertebereich, Konsistenzregeln) 1-5 Thomas Thobe Datenbanken Datenbankmodelle: hierarchisch: Die Datenobjekte stehen in verdrahteten Eltern-Kind-Beziehungen zueinander. netzwerkartig: Die Datenobjekte werden miteinander in Netzen verdrahtet. 1-6 Thomas Thobe Datenbanken Datenbankmodelle: relational: Die Datenobjekte stehen in flachen Tabellen, Beziehungen ergeben sich aus Werten der Tabellenspalten. objektorientiert: Die Datenobjekte werden miteinander verdrahtet, sind gegebenenfalls miteinander verwandt und können vom System immer eindeutig identifiziert werden. 1-7 Thomas Thobe Datenbanken Es existiert eine Vielzahl von Misch- und Nebenformen, wie zum Beispiel das objektrelationale Modell. 1-8 Datenbanken Thomas Thobe Mittlerweile gibt es neben den relationalen Modellen auch andere Speicherformen für Datenbanken. Immer populärer werden objektorientierte Datenbanken und XMLDatenbanken (dokumentenorientierten Datenbanken NoSQL). Aber auch weitere NoSQL(2x)-Datenbanken sind auf dem Vormarsch..... Thomas Thobe 9 1-9 Datenbanken Thomas Thobe Etwa seit 2001 ist aufgrund mangelnder Skalierbarkeit relationaler Datenbanken die Bedeutung der NoSQL-Systeme gewachsen! Bekannte Implementierungen sind Riak, Apache Cassandra, CouchDB, MongoDB und Redis! Thomas Thobe 10 1 - 10 Datenbanken Thomas Thobe Relativ neu ist auch SQLite. Dies ist eine Programmbibliothek, die ein relationales Datenbanksystem enthält. SQLite unterstützt einen Großteil der im SQL-92-Standard festgelegten SQL-Sprachbefehle. Eingesetzt wird SQLite unter anderem in Betriebssystemen für Mobiltelefone, wie Symbian OS oder Android. Außerdem nutzt der Browser Mozilla Firefox seit Version 3 SQLite – beispielsweise für Lesezeichen und Cookies! Thomas Thobe 11 1 - 11 Datenbanken Thomas Thobe Letzten Endes aber sind relationale Datenbanksysteme immer noch die, welche die höchste Datensicherheit, Konsistens und Verfügbarkeit garantieren!! siehe ORACLE !!! Thomas Thobe 12 1 - 12 Thomas Thobe Datenbanken Datenbanken Ausfallsicherheit Reparatur von Datenbeständen nach Systemfehlern, Rollback und Logfilesegmente Mehrbenutzerbetrieb gleichzeitiges Benutzen einer gemeinsamen Datenbasis durch verschieden Anwendungen (Anwender) mittels geeigneter Synchronisation der Zugriffsreihenfolge und Vermeidung wechselseitiger Beeinflussung 1 - 13 Thomas Thobe Datenbanken Datenbanken Integritätssicherung Wenn die Daten nur von einem Prozeß verändert werden dürfen, sind sie immer authentisch Assoziativität Die assoziative Suche nach Daten ist automatisch gegeben. 1 - 14 Thomas Thobe Datenbanken Datenbanken Redundanzfreiheit keine Wiederholung von Speicherinhalten für unterschiedliche Anwendungen 1 - 15 Thomas Thobe Datenbanken Datenbankbegriffe Entity Eine Entität ist eine strukturiertes Datenobjekt, welches Eigenschaften besitzt, die durch Attribute beschrieben werden. Beispiel: Angestellte einer Firma ! 1 - 16 Thomas Thobe Datenbanken Datenbankbegriffe Entity Vorsicht, wenn sich zu einer Entity eine Ober-Entity finden lässt! Diese strukturierten Datenobjekte haben Beziehungen untereinander. Dies findet sich wieder im: 1 - 17 Thomas Thobe Datenbanken Datenbankbegriffe Entity-Relationship-Model (ER-Modell) P.Chen spezifizierte 1976 ein Modell (s.o.), welches häufig genutzt wird um Informationsstrukturen der realen Welt auf ein Schema abzubilden, das dann in die Datenstrukturen transformiert wird. Das ER-Modell ist damit ein Hilfsmittel für den Datenbankentwickler die Datenstrukturen zu erkennen, zu gruppieren und miteinander in Beziehungen zu setzen. 1 - 18 Thomas Thobe Datenbanken Datenbankbegriffe Entity-Relationship-Model (ER-Modell) Beispiel: Mitarbeiter einer Firma betreut Kunden ! (Tafel) 1 - 19 Thomas Thobe Datenbanken Aufgabe: Entwerfen Sie ein ER-Modell für ein Mahnwesen : Gehen Sie davon aus, dass ein Kunde eine Mahnung erhält, wenn offene Posten zum Fälligkeitstag nicht vollständig ausgeglichen sind! 1 - 20 Thomas Thobe Datenbanken Aufgabe: Entwerfen Sie ein ER-Modell für ein Mahnwesen : Gehen Sie davon aus, dass ein Kunde eine Mahnung erhält, wenn offene Posten zum Fälligkeitstag nicht vollständig ausgeglichen sind! Kunde 1 - 21 Thomas Thobe Datenbanken Aufgabe: Entwerfen Sie ein ER-Modell für ein Mahnwesen : Gehen Sie davon aus, dass ein Kunde eine Mahnung erhält, wenn offene Posten zum Fälligkeitstag nicht vollständig ausgeglichen sind! Kunde Offene Posten 1 - 22 Thomas Thobe Datenbanken Aufgabe: Entwerfen Sie ein ER-Modell für ein Mahnwesen : Gehen Sie davon aus, dass ein Kunde eine Mahnung erhält, wenn offene Posten zum Fälligkeitstag nicht vollständig ausgeglichen sind! Kunde Offene Posten Mahnung 1 - 23 Datenbanken Thomas Thobe Aufgabe: Entwerfen Sie ein ER-Modell für ein Mahnwesen : Gehen Sie davon aus, dass ein Kunde eine Mahnung erhält, wenn offene Posten zum Fälligkeitstag nicht vollständig ausgeglichen sind! Kunde hat Offene Posten Mahnung 1 - 24 Datenbanken Thomas Thobe Aufgabe: Entwerfen Sie ein ER-Modell für ein Mahnwesen : Gehen Sie davon aus, dass ein Kunde eine Mahnung erhält, wenn offene Posten zum Fälligkeitstag nicht vollständig ausgeglichen sind! Kunde hat Offene Posten führt zu Mahnung 1 - 25 Datenbanken Thomas Thobe Aufgabe: Entwerfen Sie ein ER-Modell für ein Mahnwesen : Gehen Sie davon aus, dass ein Kunde eine Mahnung erhält, wenn offene Posten zum Fälligkeitstag nicht vollständig ausgeglichen sind! Kunde hat Offene Posten führt zu erhält Mahnung 1 - 26 Datenbanken Thomas Thobe Aufgabe: Entwerfen Sie ein ER-Modell für ein Mahnwesen : Gehen Sie davon aus, dass ein Kunde eine Mahnung erhält, wenn offene Posten zum Fälligkeitstag nicht vollständig ausgeglichen sind! Etwas fehlt noch!! Kunde hat Offene Posten führt zu erhält Mahnung 1 - 27 Datenbanken Thomas Thobe Aufgabe: Entwerfen Sie ein ER-Modell für ein Mahnwesen : Gehen Sie davon aus, dass ein Kunde eine Mahnung erhält, wenn offene Posten zum Fälligkeitstag nicht vollständig ausgeglichen sind! Kardinalitäten ! Kunde hat Offene Posten führt zu erhält Mahnung 1 - 28 Datenbanken Thomas Thobe Aufgabe: Entwerfen Sie ein ER-Modell für ein Mahnwesen : Gehen Sie davon aus, dass ein Kunde eine Mahnung erhält, wenn offene Posten zum Fälligkeitstag nicht vollständig ausgeglichen sind! Kardinalitäten ! Kunde hat n Offene Posten 1 führt zu erhält Mahnung 1 - 29 Datenbanken Thomas Thobe Aufgabe: Entwerfen Sie ein ER-Modell für ein Mahnwesen : Gehen Sie davon aus, dass ein Kunde eine Mahnung erhält, wenn offene Posten zum Fälligkeitstag nicht vollständig ausgeglichen sind! Kardinalitäten ! Kunde hat n Offene Posten 1 1 führt zu n erhält Mahnung 1 - 30 Datenbanken Thomas Thobe Aufgabe: Entwerfen Sie ein ER-Modell für ein Mahnwesen : Gehen Sie davon aus, dass ein Kunde eine Mahnung erhält, wenn offene Posten zum Fälligkeitstag nicht vollständig ausgeglichen sind! Kardinalitäten ! Kunde hat n Offene Posten 1 1 1 führt zu n erhält n Mahnung 1 - 31 Thomas Thobe Datenbanken Datenbankbegriffe Relation Eine Relation entspricht einem Entitätstyp. Sie ist durch einen Namen und eine Menge von Attributen bestimmt, die miteinander in Beziehung stehen. In SQL-Datenbanken wird eine Relation als Tabelle bezeichnet. 1 - 32 Thomas Thobe Datenbanken Datenbankbegriffe Attribute Ein Attribut beschreibt eine bestimmte Eigenschaft der Relation. Attribute dürfen nicht zusammengesetzt sein oder Mehrfachwerte annehmen. Wenn ein Attribut keinen Wert besitzt, erhält es den künstlichen Wert NULL. Ein Attribut repräsentiert ein Datenfeld. 1 - 33 Thomas Thobe Datenbanken Datenbankbegriffe Tupel Ein Tupel entspricht einer Entität. Der Grad eines Tupels gibt die Anzahl der Attribute an. In einer Relation dürfen keine doppelten Tupel enthalten sein. Konzeptionell entspricht ein Tupel einem Datensatz. 1 - 34 Thomas Thobe Datenbanken Datenbankbegriffe Primärschlüssel Ein Primärschlüssel dient zur eindeutigen Identifikation eines Tupels. Er kann aus einem oder mehreren Attributen bestehen. Keines der Schlüsselattribute darf den Wert NULL annehmen. 1 - 35 Thomas Thobe Datenbanken Datenbankbegriffe Fremdschlüssel Ein Fremdschlüssel in einer Relation stellt die Beziehung zu einer anderen Relation her. Er ist ein Attribut oder eine Attributkombination, das oder die in einer anderen Relation als Primärschlüssel dient. 1 - 36 Thomas Thobe Datenbanken Datenbankbegriffe Fremdschlüssel Fremdschlüssel dürfen den Wert NULL annehmen. Wenn ein Fremdschlüssel einen Wert enthält, muß er auch in der Relation enthalten sein, auf die sich der Fremdschlüssel bezieht. 1 - 37 Datenbanken Thomas Thobe Sportartikel GmbH Sportartikel GmbH 1 - 38 Datenbanken Thomas Thobe Sportartikel GmbH Kunde Produkt Auftrag Lager 1 - 39 Datenbanken Thomas Thobe Ort Status PLZ Adresse Strasse Sportartikel GmbH Firma Kunde Produkt Auftrag Lager 1 - 40 Datenbanken Thomas Thobe Ort Status PLZ Adresse Strasse Firma Sportartikel GmbH Preis Bezeichnung Kunde Produkt Auftrag Lager 1 - 41 Datenbanken Thomas Thobe Ort Status ANummer PLZ Adresse Strasse Firma Sportartikel GmbH Preis Bezeichnung Kunde Produkt Auftrag Lager LDatum 1 - 42 Datenbanken Thomas Thobe Ort Status ANummer PLZ Adresse Strasse Firma Sportartikel GmbH Preis Bezeichnung Kunde Produkt Auftrag Lager LDatum Ort Strasse 1 - 43 Datenbanken Thomas Thobe Ort Status KNr ANummer PLZ Adresse Strasse Firma Sportartikel GmbH Preis Bezeichnung Kunde Produkt Auftrag Lager LDatum Ort PNr Strasse 1 - 44 Datenbanken Thomas Thobe Ort Status KNr PLZ Adresse Strasse Firma Sportartikel GmbH Preis Kunde Bezeichnung PNr Produkt erteilt lagern bestellt Lager Auftrag ANummer LDatum Ort Strasse 1 - 45 Datenbanken Thomas Thobe Ort Status KNr PLZ Adresse Strasse Firma Sportartikel GmbH Preis Kunde Bezeichnung PNr Produkt 1 erteilt lagern bestellt m Lager Auftrag ANummer LDatum Ort Strasse 1 - 46 Datenbanken Thomas Thobe Ort Status KNr PLZ Adresse Strasse Firma Sportartikel GmbH Preis Kunde Bezeichnung PNr Produkt 1 m erteilt lagern bestellt 1 m Lager Auftrag ANummer LDatum Ort Strasse 1 - 47 Datenbanken Thomas Thobe Ort Status KNr PLZ Strasse Adresse Firma Sportartikel GmbH Preis Kunde Bezeichnung PNr Produkt 1 m erteilt m lagern bestellt 1 m n Lager Auftrag ANummer LDatum Ort Strasse 1 - 48 Datenbanken Thomas Thobe Ort Status KNr PLZ Strasse Adresse Sportartikel GmbH Preis Firma Kunde Bezeichnung PNr Produkt 1 m m Menge erteilt lagern bestellt 1 m n Preis Lager Auftrag ANummer LDatum Ort Strasse 1 - 49 Datenbanken Thomas Thobe Sportartikel GmbH Preis Produkt Bezeichnung PNr m Menge bestellt n Preis Auftrag ANummer LDatum 1 - 50 Datenbanken Thomas Thobe Sportartikel GmbH Preis Produkt Menge Bezeichnung PNr Preis Auftragspos Auftrag ANummer LDatum 1 - 51 Datenbanken Thomas Thobe Sportartikel GmbH Preis Produkt Bezeichnung PNr enthält Auftragspos enthält Auftrag ANummer LDatum 1 - 52 Datenbanken Thomas Thobe Sportartikel GmbH Preis 1 m Produkt Bezeichnung PNr enthält Auftragspos enthält Auftrag ANummer LDatum 1 - 53 Datenbanken Thomas Thobe Sportartikel GmbH Preis 1 m n 1 Produkt Bezeichnung PNr enthält Auftragspos enthält Auftrag ANummer LDatum 1 - 54 Datenbanken Thomas Thobe Sportartikel GmbH Preis Produkt Menge Bezeichnung PNr Preis Auftragspos Auftrag ANummer ANummer PNr LDatum 1 - 55 Datenbanken Thomas Thobe Entity Relationship Model Kunde 1 Produkt 1 m enthält erteilt m enthält m Auftrag 1 Auftragspos n lagern 1 Lager 1 - 56 Datenbanken Thomas Thobe Das relationale Datenmodell Entity Relationship Modell relationales Datenmodell Das Semantische Datenmodell (ERM) wird auf das relationale Schema abgebildet. Grundregel: Jede Entität (auch Beziehungsentität) wird in eine Relation überführt (Gegenstands- und Beziehungsrelation) Entität (Datenobjekt) Relationship (Beziehung) Attribut Gegenstandsrelation ggf. Beziehungsrelation Felder 1 - 57 Datenbanken Thomas Thobe ERM - RDM Student (n) belegt (1) Mtnr Name SemGr Adresse Vorlesung Vorlnr Fach Semester Raum Zeit Student ( Mtnr, Name, SemGr, Adresse) Fach ( Vorlnr, Fach, Semester, Raum, Zeit) Belegung (Mtnr, Vorlnr) 1 - 58 Datenbanken Thomas Thobe Relationales Datenmodell oder Relationenmodell: Primärschlüssel Fremdschlüssel Attribut 1 Attribut 2 Attribut 3 Attribut 4 Primärschlüssel Attribut 1 Attribut 2 Attribut 3 Attribut 4 Fremdschlüssel Primärschlüssel Fremdschlüssel Attribut 1 Attribut 2 Attribut 3 Attribut 4 1 - 59 Thomas Thobe Datenbanken Datenbanken Relationen und Kardinalitäten Ein Fremdschlüssel in einer Relation stellt die Beziehung zu einer anderen Relation her. Er ist ein Attribut oder eine Attributkombination, das oder die in einer anderen Relation als Primärschlüssel dient. Beim Gang von dem ER-Modell zum Relationenmodell muss man, um dem gerecht zu werden, sich die Kardinalitäten, also die Beziehungsverhältnisse zwischen den Relationen anschauen und eintragen. Dann ist zu entscheiden, welche Schlüssel als Fremdschlüssel wo eingetragen werden müssen, und ob weitere Relationen geschaffen werden müssen 1 - 60 Thomas Thobe Datenbanken Ablauf der Datenbankerstellung: A. ER-Modell erstellen A.1 A.2 A.3 A.4 A.5 A.6 Entitäten bestimmen Attribute der Entitäten vollständig erfassen Beziehungen der Entitäten feststellen Kardinalitäten bestimmen n:m-Beziehungen auflösen Normalisieren B. Relationen-Modell erstellen B.1 B.2 B.3 B.4 ER-Modell 1:1 in Relationen übertragen Primärschlüssel festlegen Fremdschlüssel festlegen und eintragen Zugriffe auf alle Daten prüfen 1 - 61 Datenbanken Thomas Thobe Entity Relationship Model Kunde 1 Produkt 1 m enthält erteilt m enthält m Auftrag 1 Auftragspos n lagern 1 Lager 1 - 62 Datenbanken Thomas Thobe Relationales Datenmodell oder Relationenmodell: Primärschlüssel Fremdschlüssel Attribut 1 Attribut 2 Attribut 3 Attribut 4 Primärschlüssel Attribut 1 Attribut 2 Attribut 3 Attribut 4 Fremdschlüssel Primärschlüssel Fremdschlüssel Attribut 1 Attribut 2 Attribut 3 Attribut 4 1 - 63 Thomas Thobe Datenbanken Auftrag I: Erstellen Sie in Gruppen ein EntityRelationship-Model für eine Videothek. 1 - 64 Datenbanken Thomas Thobe Auftrag I: Erstellen Sie in Gruppen eine Datenbank für eine Videothek. Dfghshdsfh Fgdffgdfgd Sagfasg fydsfdsfds,s dfköölöldöä ldsfldsöäfläl sfäsfslfflsfk söklfdsfksfö dsködskfsfls ödsdfsfksd fsadfdsfsdfd sfsfdsfdsfsfs dfsfsfsfsfsfs dfsfsfsfsfsfs vyxcvxcvxc Sagfasg Sagfasg fydsfdsfds,s dfköölöldöä ldsfldsöäfläl sfäsfslfflsfk söklf fydsfdsfds,s dfköölöldöä ldsfldsöäfläl sfäsfslfflsfk söklfd 1 - 65 Datenbanken Thomas Thobe Eine Videothek Ein Kunde kommt in eine Videothek und leiht sich was aus....... Was? Ein Produkt...... Zu welchem Preis ? Wer verleiht ihm was? Mitarbeiter..... Preis........ 1 - 66 Datenbanken Thomas Thobe Eine Videothek Ein Kunde kommt in eine Videothek und leiht sich ein Produkt aus ! 1 - 67 Datenbanken Thomas Thobe Eine Videothek Kunde 1 - 68 Datenbanken Thomas Thobe Eine Videothek Kunde Produkte 1 - 69 Datenbanken Thomas Thobe Eine Videothek Kunde leiht Produkte 1 - 70 Datenbanken Thomas Thobe Eine Videothek m Kunde n leiht Produkte 1 - 71 Datenbanken Thomas Thobe Eine Videothek Produkte Kunde gehen macht Verleih 1 - 72 Datenbanken Thomas Thobe Eine Videothek Produkte Kunde 1 gehen macht m Verleih 1 - 73 Datenbanken Thomas Thobe Eine Videothek Produkte Kunde 1 1 gehen macht m n Verleih 1 - 74 Datenbanken Thomas Thobe Eine Videothek Kunden_ID Name Adresse Tel. Kunde_seit Kunde_bis Produkte Kunde 1 1 gehen macht m n Verleih 1 - 75 Datenbanken Thomas Thobe Eine Videothek Produkt_ID Kunden_ID Name Adresse Tel. Kunde_seit Kunde_bis Produkte Kunde 1 Pr_Name Pr_Art Pr_Preis PR-Datum 1 gehen macht m n Verleih 1 - 76 Datenbanken Thomas Thobe Eine Videothek Produkt_ID Kunden_ID Name Adresse Tel. Kunde_seit Kunde_bis Produkte Kunde 1 Pr_Name Pr_Art Pr_Preis PR-Datum 1 gehen macht m n Verleih Verleih_ID Kunde_ID Produkt_ID Mitarbeiter Verleih_von Verleih_bis 1 - 77 Datenbanken Thomas Thobe Eine Videothek Produkt_ID Kunden_ID Pr_Name Pr_Art Pr_Preis PR-Datum Name Adresse Tel. Kunde_seit Kunde_bis Verleih_ID Kunde_ID Produkt_ID Mitarbeiter Verleih_von Verleih_bis 1 - 78 Datenbanken Thomas Thobe Eine Videothek Kunden_ID Produkt_ID Name Adresse Tel. Kunde_seit Kunde_bis Pr_Name Pr_Art Pr_Preis PR-Datum Verleih_ID Kunden_ID Produkt_ID Mitarbeiter Verleih_von Verleih_bis 1 - 79 Datenbanken Thomas Thobe Eine Videothek Kunden_ID Produkt_ID Name Adresse Tel. Kunde_seit Kunde_bis Pr_Name Pr_Art Pr_Preis PR-Datum Spielekonsole XBox ? Verleih_ID Kunden_ID Produkt_ID Mitarbeiter Verleih_von Verleih_bis 1 - 80 Datenbanken Thomas Thobe Eine Videothek Kunden_ID Produkt_ID Name Adresse Tel. Kunde_seit Kunde_bis Pr_Name Pr_Art_Id Pr_Preis PR-Datum Spielekonsole XBox ? ???????????????????? Verleih_ID Kunden_ID Produkt_ID Mitarbeiter Verleih_von Verleih_bis 1 - 81 Datenbanken Thomas Thobe Eine Videothek Kunden_ID Produkt_ID Name Adresse Tel. Kunde_seit Kunde_bis Pr_Name Pr_Art_Id Pr_Art_Name Pr_Preis PR-Datum ???????????????? Verleih_ID Kunden_ID Produkt_ID Mitarbeiter Verleih_von Verleih_bis 1 - 82 Datenbanken Thomas Thobe Eine Videothek Kunden_ID Produkt_ID Name Adresse Tel. Kunde_seit Kunde_bis Pr_Name Pr_Art_Id Pr_Art_Name Pr_Preis PR-Datum ???????????????? Verleih_ID Kunden_ID Produkt_ID Mitarbeiter Verleih_von Verleih_bis 1 - 83 Thomas Thobe Datenbanken Datenbankbegriffe Normalisierung 1 - 84 Thomas Thobe Datenbanken Datenbankbegriffe Grundregel der Normalisierung Dieselbe Information darf nur einmal in den Daten vorkommen. Die Normalisierung dient somit der Erstellung redundanzarmer Datenbestände. 1 - 85 Thomas Thobe Datenbanken Datenbanken Normalisierung Normalisierung kann als Regelwerk verstanden werden, Datenstrukturen zu erstellen, die keine logischen Fehler enthalten. Dabei ist in der Theorie eine Führung bis zur 6. Normalform möglich, aber in den seltensten Fällen sinnvoll. Viele „zu weit“ normalisierten Datenbanken sind von „praxisnahen“ Entwickler bereits „zurück“ normalisiert worden. Ein Normalisierung bis zur dritten Normalform ist aber unerläßlich. 1 - 86 Thomas Thobe Datenbanken 1. Normalisierung: Ein Relationstyp ist in der 1.Normalform, wenn alle Attribute maximal einen Wert haben. oder Die Wertebereiche der Merkmale sind atomar (es gibt keine zusammengesetzten Werte) oder Die erste Normalform fordert, dass alle Attribute einer Entität/Entity in atomarer Form auftreten. 1 - 87 Thomas Thobe Datenbanken 2. Normalisierung: Ein Relationstyp ist in der 2.Normalform, wenn er in der 1. ist und jedes Attribut vom gesamten Primärschlüssel abhängt oder 1.NF + Nichschlüsselmerkmale sind von allen Schlüsselmerkmalen voll funktional abhängig oder Relationen befinden sich in der zweiten Normalform, wenn sie sich in der ersten Normalform befinden und kein Attribut existiert, dass nicht zum Schlüssel gehört und nur von einem Teil des Schlüssels voll funktional abhängig ist. 1 - 88 Thomas Thobe Datenbanken 3. Normalisierung: Die 3.Normalform ist erfüllt, wenn die 2. Normalform erfüllt ist und die Nicht-Schlüssel-Attribute funktional unabhängig voneinander sind oder 2.NF + kein Nichschlüsselmerkmal ist von irgend einem Schlüssel transitiv (über Umwege) abhängig oder Die dritte Normalform fordert, dass sich eine Relation in der zweiten Normalform befindet und alle Attribute, die nicht zum Schlüssel gehören nur vom Schlüssel abhängig sind. Mit anderen Worten, es darf keine Abhängigkeiten zwischen den Attributen geben. 1 - 89 Thomas Thobe Datenbanken Normalisierung an einem Beispiel: Normalisierung an einem Beispiel: Normalisierungsbeispiel 1 - 90 Datenbanken Thomas Thobe Eine Videothek Kunden_ID Produkt_ID Name Adresse Tel. Kunde_seit Kunde_bis Pr_Name Pr_Art_Id Pr_Art_Name Pr_Preis PR-Datum ???????????????? Verleih_ID Kunden_ID Produkt_ID Mitarbeiter Verleih_von Verleih_bis 1 - 91 Datenbanken Thomas Thobe Eine Videothek 1.NF Kunden_ID Produkt_ID Name Adresse Tel. Kunde_seit Kunde_bis Pr_Name Pr_Art_Id Pr_Art_Name Pr_Preis PR-Datum ???????????????? Verleih_ID Kunden_ID Produkt_ID Mitarbeiter Verleih_von Verleih_bis 1 - 92 Datenbanken Thomas Thobe Eine Videothek 1.NF Kunden_ID Produkt_ID Name Adresse Tel. Kunde_seit Kunde_bis Pr_Name Pr_Art_Id Pr_Art_Name Pr_Preis PR-Datum ???????????????? Verleih_ID Kunden_ID Produkt_ID Mitarbeiter Verleih_von Verleih_bis 2.NF oder 3.NF 1 - 93 Datenbanken Thomas Thobe Eine Videothek 1.NF Kunden_ID Produkt_ID Name Adresse Tel. Kunde_seit Kunde_bis Pr_Name Pr_Art_Id Pr_Art_Name Pr_Preis PR-Datum 3.NF ???????????????? Verleih_ID Kunden_ID Produkt_ID Mitarbeiter Verleih_von Verleih_bis 2.NF oder 3.NF 1 - 94 Datenbanken Thomas Thobe Eine Videothek Kunden_ID Name Plz Ort Strasse Tel. Kunde_seit Kunde_bis Produkt_ID Pr_Art_ID Pr_Name Pr_Art_ID Pr_Preis Pr-Datum Pr_Art_Name Verleih_ID Kunden_ID Produkt_ID Verleih_von Verleih_bis 1 - 95 Datenbanken Thomas Thobe Eine Videothek Kunden_ID Name Plz Ort Strasse Tel. Kunde_seit Kunde_bis Produkt_ID Pr_Art_ID Pr_Name Pr_Art_ID Pr_Preis_ID Pr-Datum Pr_Art_Name Pr_Preis_ID Verleih_ID Pr_Preis Kunden_ID Produkt_ID Verleih_von Verleih_bis 1 - 96 Datenbanken Thomas Thobe Eine Videothek PLZ Kunden_ID Ort Name Plz Strasse Tel. Kunde_seit Kunde_bis Produkt_ID Pr_Art_ID Pr_Name Pr_Art_ID Pr_Preis_ID Pr-Datum Pr_Art_Name Pr_Preis_ID Verleih_ID Pr_Preis Kunden_ID Produkt_ID Verleih_von Verleih_bis 1 - 97 Datenbanken Thomas Thobe Eine Videothek Ein Kunde kommt in eine Videothek und leiht sich was aus....... Was? Ein Produkt...... Zu welchem Preis ? Wer verleiht ihm was? Mitarbeiter..... Preis........ 1 - 98 Datenbanken Thomas Thobe Eine Videothek PLZ Kunden_ID Ort Name Plz Strasse Tel. Kunde_seit Kunde_bis Mitarb_ID Name Vorname PLZ Strasse Prov Mitarb_seit Mitarb_bis Produkt_ID Pr_Art_ID Pr_Name Pr_Art_ID Pr_Preis_ID Pr-Datum Pr_Art_Name Pr_Preis_ID Verleih_ID Pr_Preis Kunden_ID Produkt_ID Verleih_von Verleih_bis 1 - 99 Datenbanken Thomas Thobe Eine Videothek PLZ Kunden_ID Ort Name Plz Strasse Tel. Kunde_seit Kunde_bis Mitarb_ID Name Vorname PLZ Strasse Prov Mitarb_seit Mitarb_bis Produkt_ID Pr_Art_ID Pr_Name Pr_Art_ID Pr_Preis_ID Pr-Datum Pr_Art_Name Pr_Preis_ID Verleih_ID Pr_Preis Kunden_ID Produkt_ID Mitarb_ID Verleih_von Verleih_bis 1 - 100 Datenbanken Thomas Thobe Eine Videothek PLZ P Kunden_ID P Ort Name Plz Strasse Tel. Kunde_seit Kunde_bis Produkt_ID P Pr_Art_ID P Pr_Name Pr_Art_ID F Pr_Preis_ID F Pr-Datum Pr_Art_Name Mitarb_ID P Name Vorname PLZ Strasse Prov Mitarb_seit Mitarb_bis Pr_Preis_ID P Pr_Preis Verleih_ID P Kunden_ID F Produkt_ID F Mitarb_ID F Verleih_von Verleih_bis Rechnung? Bestellung? Lager? Offene Posten? 1 - 101 Thomas Thobe Datenbanken Exkurs: Referentielle Integrität 1 - 102 Thomas Thobe Datenbanken Exkurs: Referentielle Integrität 1. Man kann keinen Datensatz aus einer Relation löschen, wenn er noch als Fremdschlüssel-Datensatz in einer anderen Relation vorhanden ist! 1 - 103 Datenbanken Thomas Thobe Exkurs: Referentielle Integrität 1. Man kann keinen Datensatz aus einer Relation löschen, wenn er noch als Fremdschlüssel-Datensatz in einer anderen Relation vorhanden ist! Mitarb_ID Name Vorname PLZ Strasse Prov Mitarb_seit Mitarb_bis Verleih_ID Kunden_ID Produkt_ID Mitarb_ID Verleih_von Verleih_bis 1 - 104 Thomas Thobe Datenbanken Exkurs: Referentielle Integrität 2. Man kann keinen Datensatz mit einem Fremdschlüssel anlegen, wenn der Fremdschlüssel noch nicht als Primärschlüsseldatensatz existiert 1 - 105 Thomas Thobe Datenbanken Exkurs: Kunden_ID Referentielle Integrität 2. Man kann keinen Datensatz mit einem Fremdschlüssel anlegen, wenn der Fremdschlüssel noch nicht als Primärschlüsseldatensatz existiert Name Plz Strasse Tel. Kunde_seit Kunde_bis Verleih_ID Kunden_ID Produkt_ID Mitarb_ID Verleih_von Verleih_bis 1 - 106