Datenbanken Unit 7: Normalisierung ctd.

Ähnliche Dokumente
Datenbanken 6: Normalisierung

Datenbanken 6: Normalisierung

Datenbanken Unit 5: Funktionale Abhängigkeit

Datenbanken Unit 11: Erstellen u. Ändern von Datenbanken und Tabellen Verbindung von Java auf Datenbanken

Übung 9. Tutorübung zu Grundlagen: Datenbanken (Gruppen Do-T24 / Do-T31 WS 2016/2017)

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

3. Normalform. Redundanz: Land mehrfach gespeichert Anomalien?

Normalisierung II. Ziele

Datenbanken (Übung 12)

Relationale Entwurfstheorie (Teil 2)

8. Tutorübung zu Grundlagen: Datenbanken

Datenbanken Unit 4: Das Relationale Modell & Datenintegrität

Aufgabe 7. Sei die Schema R(A, B, C, D, E) mit folgenden fkt. Abh.:

Rückblick: Relationales Modell

Kapitel DB:VII (Fortsetzung)

Wiederholung VU Datenmodellierung

Grundlagen: Datenbanken

Wiederholung VU Datenmodellierung

S.Müllenbach Datenbanken Informationsanalyse Normalformen- 1. Kurse. Name TNR ...

Datenbanken Unit 9: OLAP, OLTP und objektrelationale Datenbanken

Zerlegung einer Relation

Gruppe A Bitte tragen Sie SOFORT und LESERLICH Namen und Matrikelnr. ein, und legen Sie Ihren Studentenausweis bereit.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Datenbanken und SQL. Kapitel 3. Datenbankdesign Teil 1: Normalformen. Edwin Schicker: Datenbanken und SQL

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

Grundlagen: Datenbanken

Datenbanken Unit 2: Das ER-Modell

Wir haben folgende Ausprägung der Relation Studenten:

2. Übungsblatt 3.0 VU Datenmodellierung

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 18. Juni 2007

5. Relationale Entwurfstheorie

Vorlesung Datenbanktheorie. Church-Rosser-Eigenschaft der Verfolgungsjagd. Berechnung von chase(t, t, Σ) Vorlesung vom Mittwoch, 05.

Datenbanken Unit 9: OLAP, OLTP und objektrelationale Datenbanken

Datenbanksysteme und Datenmodellierung

Datenbankensysteme Aufgabenblatt 2

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Datenbanksysteme 1 Sommersemester Juni 2006

Gruppe B Bitte tragen Sie SOFORT und LESERLICH Namen und Matrikelnr. ein, und legen Sie Ihren Studentenausweis bereit.

Datenbanken Unit 9: OLAP, OLTP, Data Warehouse Ranking Algorithmen

Informationssysteme. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Sommersemester

Kapitel 11: Relationale Entwurfstheorie

Themenübersicht Relationale Entwurfstheorie. Inhalt

Verfeinerung des relationalen Schemas

Kapitel 6 Relationale Entwurfstheorie. Funktionale Abhängigkeiten Normalformen Normalisierung durch Dekomposition

Daniel Warner SQL. Das Praxisbuch. Mit 119 Abbildungen. Franzis

Klausur Konzeptionelle Modellierung

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

4. Normalformen. Qualitätsanforderungen an Tabellen. Klassische Normalformen (1,. 2., 3.) Spezielle Normalformen

Datenbanken Unit 3: Das relationale Modell

Kapitel 7: Normalformen

Datenbanken Unit 3: Das relationale Modell

2. Übungsblatt 3.0 VU Datenmodellierung

Übung Datenbanksysteme Normalformen

Introduction to Data and Knowledge Engineering

Datenbanken 1 Sommersemester 2014/

Kapitel 7: Normalformen

(4 Punkte) Aufgabe 1: Relationenalgebra - Relationenkalkül

Kapitel 7: Normalformen

Normalisierung (Dekomposition)

Transkript:

Datenbanken Unit 7: Normalisierung ctd. 4. IV. 2017

Outline 1 Organisatorisches 2 SQL 3 Normalisierung ctd Wiederholung 1NF bis 3NF/BCNF

Organisatorisches Zweiter Zwischentest in der ersten UE nach den Osterferien. Stoff: Alles bisher, exklusive heute (ohne Self Joins) Neue ÜBeispiele abzugeben bis 17. Mai. NULL-Werte im ersten Zwischentest: 100% = 9 Punkte

SQL Nachbesprechung Wissensüberprüfung Self Joins

Nachbesprechung Wissensüberprüfung DISTINCT Totaler Join

DISTINCT Zum Löschen von Mehrfacheinträgen in Ergebnistabellen verwendet man einfach DISTINCT. Bei Mehrfacheinträgen in Ergebnistabellen erkennt Abgabesystem die Abfrage nicht als richtig an! GROUP BY soll ausschließlich zur Berechnung von Aggregatfunktionen verwendet werden: Kein GROUP BY ohne Aggregatfunktion im SELECT!!!

Totaler Join Joins auf alle Tabellen der Datenbank sind keine gute Idee: manche Einträge fallen raus zuviele Einträge bei N : M-Relationen ( falsches Ergebnis für COUNT bzw. SUM) Performance Join immer nur auf jene Tabellen, die für Beantwortung der Frage benötigt werden!

Wiederholung 1NF bis 3NF/BCNF Outline 1 Organisatorisches 2 SQL 3 Normalisierung ctd Wiederholung 1NF bis 3NF/BCNF

Wiederholung 1NF bis 3NF/BCNF Normalisierung: Überblick Wir kennen inzwischen: funktionale Abhängigkeiten (FDs) Eigenschaften guter Zerlegungen (Verlustlosigkeit, Abhängigkeitserhaltung)

Wiederholung 1NF bis 3NF/BCNF Normalisierung: Überblick Wir kennen inzwischen: funktionale Abhängigkeiten (FDs) Eigenschaften guter Zerlegungen (Verlustlosigkeit, Abhängigkeitserhaltung) Wir hätten gerne: guten Weg, um eine gegebene Relation R in kleinere Relationen zu zerlegen

Wiederholung 1NF bis 3NF/BCNF Normalisierung: Überblick Wir kennen inzwischen: funktionale Abhängigkeiten (FDs) Eigenschaften guter Zerlegungen (Verlustlosigkeit, Abhängigkeitserhaltung) Wir hätten gerne: guten Weg, um eine gegebene Relation R in kleinere Relationen zu zerlegen Wir machen dies über: Schritt-für-Schritt Normalisierung Mit jedem Schritt erreichen wir eine höhere Normalisierungsstufe (1 bis 4).

Wiederholung 1NF bis 3NF/BCNF Normalisierung: NF1 bis NF3/BCNF NF1: alle Spalten atomar NF2: alle Nichtschlüsselattribute voll funktional abhängig vom Schlüssel NF3 u. BCNF: keine funktionalen Abhängigkeiten zwischen Nichtschlüsselattributen

Outline 1 Organisatorisches 2 SQL 3 Normalisierung ctd Wiederholung 1NF bis 3NF/BCNF

und mehrwertige Abhängigkeiten Beispiel: möchten gerne Sprach- und Sportkurse für Studierende in Tabelle speichern: MNr Sprachkurs Sportkurs 1335335 Italienisch Schifahren 1335335 Spanisch Fechten 1335335 NULL Fußball Es ist offensichtlich keine gute Idee, zwei (oder mehr) voneinander unabhängige N : M Relationen in einer Tabelle zu speichern.

Beispiel Beispiel. Offenbar ist es besser, die beiden Relationen zu trennen: MNr Sprachkurs 1335335 Italienisch 1335335 Spanisch MNr Sportkurs 1335335 Schifahren 1335335 Fechten 1335335 Fußball

Beispiel Ein Join der beiden Relationen gibt für jeden Studenten alle Kombinationen von Sport- und Sprachkursen. MNr Sprachkurs Sportkurs 1335335 Italienisch Schifahren 1335335 Italienisch Fechten 1335335 Italienisch Fußball 1335335 Spanisch Schifahren 1335335 Spanisch Fechten 1335335 Spanisch Fußball

Beispiel Ein Join der beiden Relationen gibt für jeden Studenten alle Kombinationen von Sport- und Sprachkursen. MNr Sprachkurs Sportkurs 1335335 Italienisch Schifahren 1335335 Italienisch Fechten 1335335 Italienisch Fußball 1335335 Spanisch Schifahren 1335335 Spanisch Fechten 1335335 Spanisch Fußball Aufgrund der Verlustlosigkeitsbedingung müssen wir verlangen, dass beim Speichern von mehreren N : M Relationen in einer Tabelle jeweils alle Kombinationen von Werten abgelegt werden.

Mehrwertige Abhängigkeiten Die Abhängigkeiten {MNr} {Sprachkurs} und {MNr} {Sportkurs} sind sogenannte mehrwertige Abhängigkeiten (MVDs). Idee: Bei FD α β bestimmt gegebener Wert für α eindeutig einen Wert für β. Bei MVD α β bestimmt gegebener Wert für α eindeutig eine Menge von Werten für β. Definition (MVD) β ist mehrwertig abhängig von α (Notation: α β), wenn es für alle Tupel mit identischen α-werten mehrere Tupel mit vertauschten β-werten gibt. (MVDs sind eine Verallgemeinerung von FDs.)

Mehrwertige Abhängigkeiten Definition (MVD) β ist mehrwertig abhängig von α (Notation: α β), wenn es für alle Tupel mit identischen α-werten mehrere Tupel mit vertauschten β-werten gibt. Im Beispiel: Wenn es Zeilen 1335335, Italienisch, Fechten und 1335335, Spanisch, Fußball gibt, dann auch Zeilen 1335335, Spanisch, Fechten und 1335335, Italienisch, Fußball.

Idee: Keine Tabelle enthält mehr als eine mehrwertige Relation. Definition (4NF) Eine Relation R ist in 4NF, wenn sie in 1NF ist und für jede MVD α β mindestens eine der folgenden Bedingungen gilt: 1 die MVD α β ist trivial, d.h. entweder β α oder β = R α, 2 α ist ein Superschlüssel von R. Anmerkung: Jede Relation in 4NF ist auch in BCNF.

Beispiel MNr Sprachkurs Sportkurs 1335335 Italienisch Schifahren 1335335 Italienisch Fechten 1335335 Italienisch Fußball 1335335 Spanisch Schifahren 1335335 Spanisch Fechten 1335335 Spanisch Fußball MVDs: {MNr} {Sprachkurs} und {MNr} {Sportkurs} Tabelle nicht in 4NF

Beispiel Beispiel. MNr Sprachkurs 1335335 Italienisch 1335335 Spanisch MNr Sportkurs 1335335 Schifahren 1335335 Fechten 1335335 Fußball ist in 4NF, weil MVDs {MNr} {Sprachkurs} und {MNr} {Sportkurs} in den beiden Tabellen R 1 und R 2 trivial: {Sprachkurs} = R 1 {MNr} und {Sportkurs} = R 2 {MNr}

4NF: Beispiel Achtung! Folgende Tabelle ist in 4NF. Gast Gasthof Bier R.Ortner Gösserbräu Gösser F.Huber Zur Post Gösser R.Ortner Zur Post Murauer

Verallgemeinerter Dekompositionsalgorithmus für 4NF Gegeben: Relation R, Menge F von MVDs Wir wollen: Zerlegung R 1,..., R n in 4NF Verallgemeinerter Dekompositionsalgorithmus: Initialisiere Z := {R}; while (es gibt R i in Z, das nicht in 4NF) do 1 Finde MVD α β in R i mit α β = und α R i. 2 Zerlege R i in R i1 := α β und R i2 := R i β. 3 Ersetze R i in Z durch R i1 und R i2, d.h. Z := (Z {R i }) {R i1, R i2 }. (Nachdem jede Relation in 4NF auch in BCNF ist, gibt es Fälle, wo eine 4NF Zerlegung nicht abhängigkeitserhaltend ist.)

Weiteres Beispiel Datenbank Personalabteilung: pers_no name lohn abt chef projekt kurs

Weiteres Beispiel Datenbank Personalabteilung: pers_no name lohn abt chef projekt kurs FDs: {pers_no} {name, lohn, abt, chef} {abt} {chef} {chef} {abt} MVDs: {pers_no} {projekt} {pers_no} {kurs}

Weiteres Beispiel Wenden Dekompositionsalgorithmus an: FD {pers_no} {name, lohn, abt, chef} gibt Zerlegung pers_no name lohn abt chef pers_no projekt kurs

Weiteres Beispiel Wenden Dekompositionsalgorithmus an: FD {abt} {chef} gibt Zerlegung pers_no name lohn abt abt chef pers_no projekt kurs

Weiteres Beispiel Wenden Dekompositionsalgorithmus an: MVDs {pers_no} {projekt} und {pers_no} {kurs} geben Zerlegung pers_no name lohn abt abt chef pers_no projekt pers_no kurs

Weiteres Beispiel Wenden Dekompositionsalgorithmus an: MVDs {pers_no} {projekt} und {pers_no} {kurs} geben Zerlegung pers_no name lohn abt abt chef pers_no projekt pers_no kurs ist in 4NF

Weiteres Beispiel Wenn mehr Informationen zu Projekten und Kursen gespeichert werden sollen: pers_no name lohn abt abt chef pers_no projekt_nr pers_no kurs_nr projekt_nr name... kurs_nr name...