Datenbanksysteme und Datenmodellierung

Werbung
Datenbanksysteme und Datenmodellierung
Begleitende Übung
zur Vorlesung von Prof. Dr. Uwe H. Suhl
Normalisierung (2)
und
„Weihnachts-Special“
(Termin #08: 15.12.2004)
Dipl.-Kfm. Sebastian Thimm
Wintersemester 2004 / 2005
Freie Universität Berlin
Fachbereich Wirtschaftswissenschaft
Institut für Produktion, Wirtschaftsinformatik und OR
Lehrstuhl für Wirtschaftsinformatik, Prof. Dr. Suhl
Terminübersicht (Übung)
KW 43
Keine Ü (nur V)
KW 44
27.10.04
Organisatorisches / Einführung und Grundlagen (KVVonline)
KW 45
03.11.04
Grundlagen: Arbeiten mit Datenbankprodukten (1)
KW 46
10.11.04
Grundlagen: Arbeiten mit Datenbankprodukten (2)
KW 47
17.11.04
Datenmodellierung: ERM
KW 48
24.11.04
Datenmodellierung: Relationenmodell
KW 49
01.12.04
Datenmodellierung: Normalisierung (1)
KW 50
08.12.04
Datenmodellierung: Besprechung Aufgabenblatt 4
KW 51
15.12.04
Datenmodellierung: Normalisierung (2)
KW 52
22.12.04
Keine V/Ü (Ferien)
KW 53
29.12.04
Keine V/Ü (Ferien)
KW 1
05.01.05
Datenmodellierung: Normalisierung (3) und SQL
KW 2
12.01.05
Datenmodellierung: SQL
KW 3
19.01.05
Datenmodellierung: SQL
KW 4
26.01.05
Gastvortrag
KW 5
02.02.05
Datenbanken in der Systementwicklung (Anwendungsfall)
KW 6
09.02.05
Klausurvorbereitung
KW 7
16.02.05
Klausurvorbereitung
KW 8
24.02.05
Klausur (90 Minuten, 4 CPS)
1
Heutige Agenda
1. Fortsetzung:
Besprechung der Lösungen von Übungsblatt 4 (Aufgabe 16 ff.)
2. Normalisierung I: 1NF bis BCNF
Kurze Wiederholung der Konzepte
Einige Übungsaufgaben Æ Übungsblatt 6
3. Normalisierung II: 4NF und 5NF
Mehrwertige Abhängigkeiten
Verlustfreiheit und Abhängigkeitstreue
4. Weihnachts-Special
.NET-TV zum Thema Datenbankzugriff (Film, ca. 30 Minuten)
Dipl.-Kfm. Sebastian Thimm
Fortsetzung:
Besprechung der Lösungen von Übungsblatt 4
(Aufgaben 16-24)
Siehe Foliensatz zur vorherigen Übung!
Dipl.-Kfm. Sebastian Thimm
2
Normalformen: Überblick
1. Normalform (1NF)
2. Normalform (2NF)
3. Normalform (3NF)
Basisannahme: fast trivial
basierend auf dem Konzept der
funktionalen Abhängigkeiten
Boyce-Codd-Normalform (BCNF)
4. Normalform (4NF)
basierend auf dem Konzept der
mehrwertigen Abhängigkeiten
5. Normalform (5NF) /
Project-Join-Normalform (PJNF)
basierend auf dem Konzept der
Join-Abhängigkeiten
Domain-Key-Normalform (DKNF)
„ultimative Normalform“
(jedoch faktisch keine praktische Relevanz)
Dipl.-Kfm. Sebastian Thimm
Übersicht: NF auf Basis f. A. (1NF bis BCNF)
Definition: Erste Normalform (1NF)
Ein Relationstyp befindet sich in der ersten Normalform, wenn der
Wertebereich jedes seiner Attribute atomar ist.
Definition: Zweite Normalform (2NF)
Ein Relationstyp befindet sich in der zweiten Normalform, wenn er
sich in 1. Normalform befindet und jedes Nichtschlüsselattribut von
jedem Kandidatenschlüssel voll funktional abhängig ist.
Definition: Dritte Normalform (3NF)
Ein Relationstyp befindet sich in der dritten Normalform, wenn er
sich in der 2. Normalform befindet und kein Nichtschlüsselattribut
transitiv von einem Kandidatenschlüssel abhängig ist.
Definition: Boyce-Codd-Normalform (BCNF)
Ein Relationstyp befindet sich in Boyce-Codd-Normalform, wenn
jede Determinante Kandidatenschlüssel ist.
Dipl.-Kfm. Sebastian Thimm
3
Übersicht: Notw. Definitionen für 1NF - BCNF
Definition:
Ein(e) Attribut(gruppe) Y heißt funktional abhängig von
Attribut(-gruppe) X, wenn es zu jedem Wert von X nur genau einen
Wert von Y geben kann.
Definition:
Ein(e) Attribut(gruppe) Y heißt voll funktional abhängig von
Attribut(gruppe) X, wenn Y von X funktional abhängig ist und es
keine Teilmenge von X gibt, von der Y funktional abhängig ist.
Definition:
Ein(e) Attribut(gruppe) Z heißt transitiv abhängig vom Schlüsselkandidaten X, wenn ein(e) Nichtschlüsselattribut(gruppe) Y
existiert, von der Z funktional abhängig ist, wobei Y selbst
funktional von X abhängig ist.
Definition:
Ein(e) Attribut(gruppe) X heißt Determinante, wenn es mindestens
ein anderes Attribut Y gibt, welches von X voll funktional anhängig
ist.
Dipl.-Kfm. Sebastian Thimm
Normalisierung: Empfohlenes Vorgehen
1. Prüfen, ob alle Attribute atomar sind. Î 1NF
In der Klausur nicht nötig, da gegeben.
2. Alle funktionalen und voll funktionalen Abhängigkeiten
identifizieren.
Am besten aufzeichnen!
3. Alle Kandidatenschlüssel identifizieren.
Dabei: Schlüssel- und Nichtschlüsselattribute identifizieren.
4. Falls zusammengesetzte Kandidatenschlüssel vorhanden
sind, sicherstellen, dass kein Nichtschlüsselattribut von einer
Teilmenge eines Kandidatenschlüssels abhängt. Î 2NF
5. Alle Abhängigkeiten zwischen Nichtschlüsselattributen
beseitigen. Î 3NF
6. Sicherstellen, dass jede Determinante ein
Kandidatenschlüssel ist. Î BCNF
Dipl.-Kfm. Sebastian Thimm
4
Normalisierung: Übung (Aufgabe 6.2)
Überführe den folgenden Relationstyp in die BCNF!
„ Rechnungen
(Rech#, Datum, Gesamtsumme, Menge, Kunden#, Kundenname, Kundenadresse,
Artikel#, Artikelbezeichnung, EKPreis, VKPreis)
„ Lösung:
Kunden (Kunden#, Kundenname, Kundenadresse) oder besser:
Kunden (Kunden#, Kundenname, Strasse, Hausnummer, PLZ, Ort)
Artikel (Artikel#, Artikelbezeichnung, EKPreis, VKPreis)
Rechnungen (Rech#, Datum, Kunden#)
Rechnungspositionen (Rech#, Artikel#, Menge)
Dipl.-Kfm. Sebastian Thimm
Normalisierung: Übung
Überführe den folgenden Relationstyp in die BCNF!
„ Projektverwaltung
(Pro#, Pro-Name, Auftraggeber#, Auftraggeber-Name, Mitarbeiter#, MitarbeiterName, Mit-Gehalt, Arbeitszeitanteil)
„ Lösung:
Projekt (Pro#, Pro-Name, Auftraggeber#)
Auftraggeber (Auftraggeber#, Auftraggeber-Name)
Mitarbeiter (Mitarbeiter#, Mitarbeiter-Name, Mit-Gehalt)
Arbeitszeit (Pro#, Mitarbeiter#, Arbeitszeitanteil)
Dipl.-Kfm. Sebastian Thimm
5
Normalisierung: Übung (Aufgabe 6.1, 1-6)
Gegeben sei folgender Relationstyp in 1NF:
Stimmen folgende Aussagen?
R (a, b, c)
1. Als triviale funktionale Abhängigkeit wird a → a bezeichnet. Ja!
Ja, sogar
2. Es sei: (a, c) ⇒ b und (a, b) ⇒ c.
Dann liegt mindestens 3NF vor, da es keine Nichtschlüsselattribute gibt. BCNF!
3. Es sei: (a, c) → b und c → b (Achtung, Fehler auf dem Aufgabenblatt!)
Nein, nur
Dann gilt: Da b funktional von c abhängig ist, befindet sich R in der 2. NF. 1NF!
4. Es sei: c → a und c → b
Dann gilt: Da es keinen zusammengesetzten Kandidatenschlüssel gibt, liegt
mindestens 2NF vor. Ja, sogar BCNF!
5. Es sei: (a, c) ⇒ b, dann gilt:
1. Da b voll funktional abhängig von der Attributgruppe (a, c) ist, liegt mindestens 2.
NF vor. Ja!
Nein! Zwar BCNF, aber weil jede
2. Da es nur ein Nichtschlüsselattribut gibt, befindet sich R in der BCNF. Det. ein KS!
6. Es sei: a → b, c → a und c → b
Dann gilt: Da b transitiv von c abhängig ist, befindet sich R nicht in der 3. NF.
Ja, nämlich 2NF!
Aufgaben 6.76.7-6.9 bitte selbstä
selbständig lö
lösen!
Dipl.-Kfm. Sebastian Thimm
Normalisierung: Übung (analog zu 6.4)
Gegeben sei folgender Relationstyp in 1NF:
Wie lautet die höchste Normalform in der sich
R befindet, wenn jeweils gilt:
R (a, b, c)
1. (a, c) → b
und
(a, b) → c
2. (a, c) → b
und
a→b
1NF! KS: (a, c)
3. (a, c) → b
und
a→c
BCNF! KS: a
4. a → b
und
b→a
3NF! KS: (a, c) und (b, c)
5. (a, c) → b
und
b→a
3NF! KS: (a, c) und (b, c)
BCNF! KS: (a, c) und (a, b)
6. b → a 1NF! KS: (b, c)
7. (a, b) sei KS
und
a Æ c 1NF! KS: (a, b)
8. (a, b) sei KS
und
(b, c) sei KS
und
a→c
3NF! KS: (a, b) und (b, c)
9. (a, b) Æ c
und
(a, c) → b
und
c→b
3NF! KS: (a, b) und (a, c)
10.(a, b) sei KS
und
(b, c) → a BCNF! KS: (a, b) und (b, c)
Dipl.-Kfm. Sebastian Thimm
6
Einschub: Wie löst man solche Aufgaben?
Beispiel:
Gegeben sei R (a, b, c, d, e) und folgende funktionale
Abhängigkeiten:
cÆa
cÆb
cÆd
cÆe
dÆe
dÆc
ferner sei bekannt,
dass (a, b) KS ist.
R (a, b, c, d, e)
Wie lauten alle KS?
(a, b), aber auch c!
Welches sind die NichtNur d und e!
schlüsselattribute?
Welche höchste NF liegt vor?
Nur 2 NF, da e über d sogar
von beiden KS transitiv abhängig ist!
Dipl.-Kfm. Sebastian Thimm
Einschub: Wie löst man solche Aufgaben?
Weiteres Beispiel:
Gegeben sei R (a, b, c) und folgende funktionale
Abhängigkeit:
aÆb
R (a, b, c)
Wie lauten alle KS?
(a, c)
Welches sind die Nicht- Nur b!
schlüsselattribute?
Welche höchste NF liegt vor? Nur 1 NF, da b vom einzigen KS
(a, c) nicht voll (sondern nur
partiell) funktional abhängig ist.
Dipl.-Kfm. Sebastian Thimm
7
Normalisierung: Übung (Aufgabe 6.5 – A)
Überführe in BCNF:
a Æ b, c, d, e
bÆc
A (a, b, c, d, e)
2NF liegt vor,
KS: a
Zerlegung in:
A1 (a, b, d, e)
A2 (b, c)
Dipl.-Kfm. Sebastian Thimm
Normalisierung: Übung (Aufgabe 6.5 – D)
Überführe in BCNF:
(a, b) ⇒ c, d, e
bÆc
D (a, b, c, d, e)
1NF liegt vor,
KS: (a, b)
Zerlegung in:
D1 (a, b, d, e)
D2 (b, c)
Dipl.-Kfm. Sebastian Thimm
8
Normalisierung: Übung (Aufgabe 6.5 – G)
Überführe in BCNF:
(a, b) ⇒ c, d, e
(a, c) ⇒ b, d, e
cÆd
G (a, b, c, d, e)
1NF liegt vor,
KS: (a, b), (a, c)
Zerlegung in:
G1 (a, b, c, e)
G2 (c, d)
Dipl.-Kfm. Sebastian Thimm
„Weihnachts-Special“: Film gucken!
Folge IV (April 2004):
Datenbankzugriff mit ADO.NET: Ökologisch wertvoll
Dauer: Ca. 30 Minuten
Das Video ist übrigens in den
Veranstaltungsmaterialien
verlinkt!
Dipl.-Kfm. Sebastian Thimm
9
„Weihnachts-Special“: Film gucken!
Direkter Datenbankzugriff: Klassisch
„ Jede Anwendung bzw. jeder Benutzer hält (mehr oder
weniger) permanent Verbindung zur Datenbank aufrecht.
„ Alle Datenmanipulationen werden mit SQL direkt auf dem Server
ausgeführt.
„ Daten werden vom Server i. d. R. in Form von zweidimensionalen
Recordsets zur Verfügung gestellt, die von der Anwendung lediglich
sequentiell gelesen werden können.
„ Das Recordset-Konzept basiert auf einem sog. Server-seitigen Cursor.
Indirekter Datenbankzugriff: Modern
„ Recordset-Konzept wird ersetzt durch sog. DataSet.
„ DataSet lässt sich als kleine “In-Memory“-DBS vorstellen und kann
mehrere Tabellen beinhalten.
„ Anwendung kann mit DataSet offline arbeiten – Verbindung zum Server
wird nur für Synchronisierungen und Updates benötigt.
Î Deutlich effizientere Nutzung der Datenbankressource!
Dipl.-Kfm. Sebastian Thimm
ADO.NET: Direkter Datenbankzugriff
OleDbConnection Verbindung = new OleDbConnection();
OleDbCommand Kommando = new OleDbCommand();
OleDbDataReader Leser;
Verbindung.ConnectionString = „PROVIDER=Platzhalter für Connectionstring“;
Kommando.CommandText = „SELECT * FROM Kunden“;
Kommando.Connection = Verbindung;
Kommando.Connection.Open();
Leser = Kommando.ExecuteReader();
while (Leser.Read())
{
Console.WriteLine(...);
}
PS: Hier „klassischer“ Zugriff ohne das
im Film vorgestellte DataSet (sondern
so, wie im Programmierpraktikum.NET
im SS’04 gezeigt)!
OleDbCommand
OleDb
Connection
OleDb
DataReader
OLE DB
(z.B.
Access)
Client
(z.B. Console)
Dipl.-Kfm. Sebastian Thimm
10
.NET TV: Folge 4 (April 2004)
Wer den Film verpasst hat oder ihn nochmals sehen
möchte, besucht bitte folgende URL:
http://www.microsoft.com/germany/ms/msdnbiblio/
dotnettv/april_2004.htm
(siehe auch Link auf der Website zur Lehrveranstaltung)
Dipl.-Kfm. Sebastian Thimm
11
Herunterladen