d.h. zu Definitions-Stelle eindeutiger Funktionswert x X! y Y : (x,y) f umgekehrt: (x 1,y), (x 2,y) f ist o.k. X Y f(x) = y

Ähnliche Dokumente
SQL: statische Integrität

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Kap 4: Abbildung des E/R Modells auf das relationale Modell. Entity steht in Bez. Anzahl der a A r b B

Grundlagen des relationalen l Modells

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Design Theorie für relationale Datenbanken

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Relationale Entwurfstheorie (Teil 2)

9. Einführung in Datenbanken

Datenbanken: Relationales Datenbankmodell RDM

Tag 4 Inhaltsverzeichnis

Kapitel 3: Datenbanksysteme

Kommunikation und Datenhaltung

ABTEILUNGS- ABTEILUNGS- LEITER NAME

Datenbanken. Rückblick: Datenbank-Entwurfsprozess. Semantische Datenmodellierung (vgl. Kapitel 2)

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Rückblick: Datenbankentwurf

Tag 4 Inhaltsverzeichnis

Datenbanken 6: Normalisierung

Musterlösung zur Finalklausur Datenbanksysteme am

Normalformen: Sinn und Zweck

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

10. Datenbank Design 1

Matthias Schubert. Datenbanken. Theorie, Entwurf und Programmierung relationaler Datenbanken. 2., überarbeitete Auflage. Teubner

Datenbankentwurf. 4.2 Logischer Entwurf. Kapitel 4. ER-Modell. Umsetzung. Entwurfsdokumentation. relationales Modell. Verbesserung

4. Normalisierung von Relationenschemata

9. Normalformen / Erweiterungen 9.1 Vorbemerkung, Zielsetzung, Inhalt Datenmodellierung und Integritätsaspekte

Logischer Entwurf von Datenbanken

Konzeptueller Entwurf

Theorie zur Übung 8 Datenbanken

Datenbanken Unit 4: Das Relationale Modell & Datenintegrität

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

Handout zur Unit Datenmodellierung Web-Technologien Datenmodellierung Prof. Dr. rer. nat. Nane Kratzke

Datenbank- und Informationssysteme. Lösungsvorschläge zu Übungsblatt 2. Sommersemester CREATE DOMAIN KennzeichenDomain AS VARCHAR(9);

Vorlesung Datenbank-Entwurf Klausur

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

Datenbanksysteme Übungsblatt 1

Grundlagen: Datenbanken WS 15/16

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

Klausur zur Vorlesung Datenbanken I im Wintersemester 2011/12

In die Zeilen würden die Daten einer Adresse geschrieben werden. Das Ganze könnte in etwa folgendermaßen aussehen:

Teil 2-6. Vorlesung. Modul: Programmierung B-PRG Grundlagen der Programmierung II

Informations- und Wissensmanagement

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

Klausur PI Datenbanken II vom Name: Praktische Informatik (Krägeloh)

(Objekt-Arten) Kinder Babynahrung Meistens Substantiva! meistens Verben! Attribute von Entity Mengen und Beziehungen. Autos. Name. Person.

Kapitel 7: Formaler Datenbankentwurf

Logischer DB-Entwurf. Prof. Dr. T. Kudraß 1

Datenintegrität. Bisherige Integritätsbedingungen

5. Normalisierung von Relationen

3. Das Relationale Datenmodell

Kapitel 3: Datenbanksysteme

6. Datenintegrität. Integritätsbedingungen

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Datenbanksysteme Teil 3 Indizes und Normalisierung. Stefan Maihack Dipl. Ing. (FH) Datum:

Datenbanksysteme 2015

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

Labor 3 - Datenbank mit MySQL

Datenadminstrator, Datenbankdesigner, Systemanalytiker (für die logische Sicht zuständig)

Relationale Datenbanken

Grundlagen von Datenbanken SS 2010

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Software-Engineering Einführung

5.3 Datenänderung/-zugriff mit SQL (DML)

Datenbanken. Sommersemester 2010 Probeklausur

Aufgabe 1) Übung 4: 1.2

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Kapitel 7: Referentielle Integrität

Datenbanken 1 Sommersemester 2014/

Inhaltsverzeichnis Vorwort zur vierten Auflage Vorwort zur dritten Auflage Vorwort zur zweiten Auflage Vorwort zur ersten Auflage Hinweise zur CD

D1: Relationale Datenstrukturen (14)

OM Datenbanken. OM Datenbanken. 8.1 Was ist ein Datenbanksystem? Motivation

KonzMod-Braindump. von Ersties für Ersties. vom 3. August 2011

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Relationentheorie grundlegende Elemente

(Von der Nähe zur Distanz zum User geordnet)

Einführung in Datenbanksysteme

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #5. SQL (Teil 3)

Datenbanken und SQL. Kapitel 3. Datenbankdesign Teil 2: Entity-Relationship-Modell. Edwin Schicker: Datenbanken und SQL

Datenbanken: Datenintegrität.

7. Übung - Datenbanken

Kapitel 3: Datenbanksysteme

Datenbanken. Datenintegrität + Datenschutz. Tobias Galliat. Sommersemester 2012

Teil 7: Einführung in den logischen Entwurf

Datenbankmodelle 2. Das relationale Modell

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Programmierung 2

DV-Organisation und Anwendungsentwicklung. 4. Klausur

Dipl.-Hdl., Dipl.-Kfm. ACCESS 2007

Kapitel 06 Normalisierung von Relationen. 6 Die Normalisierung von Relationen

IV. Datenbankmanagement

Kapitel 7: Normalformen

Einteilung von Datenbanken

Relationale Datenbanken in der Praxis

Kapitel DB:VI (Fortsetzung)

Wirtschaftsinformatik 2. Tutorium im WS 11/12

Schlüssel bei temporalen Daten im relationalen Modell

1 Übungen zu Datenbank-Kategorien

DB2 for z/os. Übungen zur Schulung

Referentielle Integrität

Transkript:

Kapitel 7 Normalformen und DB-Entwurf Kap. 7.1 Normalformen Theorie Funktionale Abhängigkeit: f X Y f als Relation, d.h. Menge von Paaren {(x,y)} x: Definitions-Stelle, y: Funktionswert f ist Funktion (x 1, y 1 ), (x 2, y 2 ) f x 1 = x 2 y 1 = y 2 d.h. zu Definitions-Stelle eindeutiger Funktionswert x X! y Y : (x,y) f umgekehrt: (x 1,y), (x 2,y) f ist o.k. f X Y f(x) = y 1 Def: Sei R (D 1 x D 2 x... x a1 a2... D m ) mit Attributen am dann ist a j funktional abhängig von a i wenn Funktion g mit: g R.a i R.a i meist geschrieben als a i a j ohne explizite Angabe von g, g kann sich ändern r R : r.a j = g (r.a i ) Genauer: Zu jedem Zeitpunkt der Lebensdauer einer DB existiert eine Funktion g mit: g R.a i R.a j g änderbar zu g durch updates der DB. 2

Konkret: seien r 1, r 2,..., r k R mit r 1.a i = r 2.a i =... = r k.a i = d i r 1.a j = r 2.a j =... = r k.a j = d j und d j = g (d i ) Folge: Update Anomalie: Wertepaare (d i, d j ) an vielen Stellen in R nicht unabhängig änderbar: 1) für 1 Tupel r k : (r k.a i, r k.a j ) := (d k, g(d k )) ohne Änderung von g wird g(d k ) automatisch berechnet oder gar nicht gespeichert 3 2) oder Änderung von a j an vielen Stellen, i.e. aus g wird g update R set a i = d k where a i = d k i.e. ändere alle Tupel mit a i = d k bzw. g zu g mit g (d k ) = g (d k ) z.b. 1 2 a 2 3 b 3 2 a 4 5 c bei funktionaler Abhängigkeit a 2 a 3 4

Anmerkung: Funktionale Abhängigkeit von Primärschlüssel ist immer erfüllt Konsequenz: mehrfache Speicherung von (d i, d j ) in r 1,..., r k nicht nötig, Attribut a i verbleibt in R, a i g a j abspalten u. in weiterer Relation getrennt speichern R( k, a i, a j ) wird zerlegt in 2 Relationen R1 ( k, a i ) und R2 (a i, a j ) mit R( k, a i, a j ) = R1 ( k, a i ) ι R2 (a i, a j ) 5 Beispiel: LIEF : L# LNAME STATUS STADT TEILE : T# TNAME FARBE GEWICHT LT : L#, T# ANZAHL Werteänderung: z.b. L3 Blake 10 Paris nur 1 Tupel, da L# Schlüssel und L# sich nicht ändert 6

Schema Änderung: TNAME STADT FARBE STATUS Funkt. Abhängigkeiten sind grundsätzliche Entwurfs- u. Modellierungsentscheidungen, nicht Zufälligkeit des DB-Zustandes. 1. Normalform: Def: Relation R ist in 1. Normalform (1NF), wenn alle Domänen einfache Wertemengen sind. Def: Volle funktionale Abhängigkeit: Attribut d ist in R voll funktional abhängig von (a 1, a 2,..., a k ), wenn d nicht schon von echter Untermenge von (a 1,..., a k ) funktional abhängig ist. 7 Hinw: Jedes Attribut ist von Primärschlüssel funktional abhängig, nicht immer voll funktinal abhängig. Hinw: Falls Primärschl. nicht zusammengesetzt ist und Attr. a nicht konstant ist, ist a voll funktional abhängig von Primärschlüssel. 8

Bedeutung: Sei R (a, b, c, d) key is (a, b) und c funkt. abhängig von b, d.h. b c d.h. Attr. Wert r.c für r R ist der Gruppe von Entities mit Attr. Wert r.b gemeinsam, unabhängig von r.a d.h. (r.b., r.c) ist Aussage über Gruppe von Entities r.b. TNAME FARBE in der Relation TEILE : T# TNAME FARBE GEWICHT 327 Schraube silbern 12 347 Schraube silbern 9 2431 Reifen schwarz 3619 2432 Reifen schwarz 3730 9 Gruppen-Aussagen herausfaktorisieren: z.b. alle Schrauben sind silbern alle Reifen sind schwarz R (a, b, c, d) mit Abhängigkeiten c zerlegen b c a,b in d a,b d weitere Abhängigkeit a d führt zu a,b a d b c 10

R zerlegt in 3 Relationen R1 (a,b) R2 (b, c) R3 (a, d) R2, R3 sind schwache Entitäten, sie sind Aussagen über Gruppen und verschwinden mit letztem Gruppenmitglied in R1. 11 Def: D ist transitiv funktional abhängig von X (über C), wenn 1. X C D 2. X, C, D sind verschiedene Attribute 3. X C d.h. es gibt Entity-Mengen C D und d ist Eigenschaft von c z.b. L# Stadt STATUS 12

Strategien: Relation R (X, C, D) key X mit X C D zerlegen (faktorisieren) in: table R (X, C) key X table R (C, D) key C dann gilt: R = R ι 2,1 R 13 Def: Sei X Primärschlüssel, dann heißt Y Schlüsselkandidat, wenn X Y d.h. bijektive Abb. zwischen X und Y alternativ: Y Primärschl., X Schlüsselkandidat; in Vereinbarung (Schema Definition) festlegen. Anm: Theoretisch sind alle Schlüssel gleich gut zur Tupelidentifizierung, z.b. (Name, Tel#) oder (Name, Adresse) 14

Anm: Zerlegung nur sinnvoll bei transitiven Abhängigkeiten der Form X Y Z sonst mit X Y Z in R (X, Y, Z) R (X,Y) = R (Y, Z) d.h. Zerlegung lohnt nicht, mehr Speicher u. zusätzliche Joins. Erklärung: X, Y identifizieren diesselbe Entity, Y Z beschreibt Eigenschaft, aber keine neue Entity. 15 Def: R ist in zweiter Normalform (2NF) nach Codd, wenn: 1. R ist in 1NF 2. die Nicht-Schlüssel-Attribute sind voll funktional abhängig vom Primärschlüssel (d.h. keine Gruppeneigenschaften aus Primärschlüssel ersichtlich und deshalb auch nicht herausfaktorisierbar) Def.: R ist in 2NF nach Kent, wenn: 1. R ist in 1NF 2. Schlüsselkandidaten gilt: Attribute im Kompliment des Schlüsselkandidaten sind voll funktional abhängig von Schlüsselkandidat. (d.h. Kent entspricht Codd. Def. erweitert auf alle Schlüsselkandidaten) 16

Anm: 2NF Kent heißt: es gibt keine Gruppeneigenschaften, die nicht aus Primärschlüssel ersichtlich wären. Beispiel: Welche Normalformen sind verletzt? create table Kunden (K# integer Kname = (Vname string, Fname string), Adresse = ( PLZ char (7), Stadt string, Straße string, Haus# string ), Tel = ( Vorwahl integer, Tel# integer ), Fax = ( Vorwahl integer ) key is K# Fax# integer ) 17 Beispiele für Abhängigkeiten: PLZ Stadt Stadt, Straße PLZ Vorwahl, Tel#? Def: R ist in dritter Normalform 3NF, wenn 1. R ist in 2NF 2. R enthält keine transitiven funktionalen Abhängigkeiten. Hinweis: 3NF entsteht bei guter E/R Modellierung meistens automatisch! Für zusätzliche automatische Nachprüfung siehe spätere Kapitel. 18

Manipulationsanomalien: bei R in 1NF: 1. Gruppeneigenschaft verschwindet mit letztem Gruppenmitglied, z.b. (PLZ, Stadt) 2. Änderung einer Gruppeneigenschaft an mehreren Stellen, sonst Inkonsistenz, z.b. (PLZ, Stadt), Post hat vor einigen Jahren die PLZ geändert bei R in 2NF: 1. Eigentlich unabhängige Entity kann nur als Bestandteil einer anderen existieren, z.b. (Stadt, Vorwahl) verschwindet mit letzer PLZ 2. Änderung an mehreren Stellen z.b. Änderung von Vorwahl durch Telekom 19 Beispiel: LTS in 1NF. nicht in 2NF: LTS (L#, T#, A, Stadt) key is L#, T# mit funktionalen Abhängigkeiten: L#, T# A L# Stadt d.h. London ist gemeinsame Eigenschaft der Gruppe der Lieferungen des Lieferanten L4 1. Tatsache, daß L4 in London sitzt, verschwindet mit letzter Lieferung 2. An mehreren Stellen (Tupeln) zu ändern, falls L4 umzieht, weil Informationen redundant gespeichert sind. 20

Anmerkung: Normalformen-Theorie bezieht sich nur auf permanente, modellinhärente funktionale Abhängigkeiten, nicht auf zufällige Wertekonstellationen. Funktionale Abhängigkeit ist nachprüfbar, per Programm, aber nicht entdeckbar. Muß mit Schema-Definition als Invariante der Datenbank spezifiziert werden!! 21 Bedeutung der Normalformen: 1. Funktionale Abhängigkeiten festlegen, als Teil eines Datenmodells, Unternehmensmodells, z.b. in Bank 2. Mit funktionalen Abhängigkeiten relationales Schema fixieren: 2 a. Rel in 3NF definieren: keine zu überwachenden Abhängikeiten mehr, nur noch referentielle Integrität. 2 b. Rel in 1NF oder 2NF definieren: funktinale Abhängigkeiten durch DBS überwachen mit automatischer Beachtung von Update-Anomalien. Offene Frage: Effizienz u. Programmier-Bequemlichkeit??? Idee: 3NF entspricht am besten der natürlichen Semantik. 22

Beispiel: Schema in 3NF table Kunden3 ( K# Kname Plz Straße Haus# Tel# Fax# ) table Städte ( PLZ, Stadt ) table Vorwahlen ( Stadt, Vorwahl ) 23 Programmier Beispiele: Finde Telefon-Nr. von Kunde 17 select v.vorwahl, k.tel# from Kunden3 k, Städte s, Vorwahlen v where k. K# = 17 and k. PLZ = s. PLZ and s. Stadt = v. Stadt mit 1NF: Schema : Kunden select Vorwahl, Tel# from Kunden where K# = 17 24

mit 3NF und View Kunden: create view KundenView (...) as select... from Kunden3 k, Städte s, Vorwahlen v where k.plz = s. PLZ and s. Stadt = v. Stadt Query : select Vorwahl, Tel# from KundenView where K# = 17 Fazit: Programmierung einfach, Effizienz schlecht! 25