Datenbanken (Übung 12) Prof. Dr.-Ing. Norbert Fuhr Dipl.-Inform. Thomas Beckers (tbeckers@is.inf.uni-due.de) Universität Duisburg-Essen Fachgebiet Informationssysteme 1. 2. Februar 2012 Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 1 / 24
Transaktionen ACID Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 2 / 24
Transaktionen ACID Atomicity Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 2 / 24
Transaktionen ACID Atomicity Consistency Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 2 / 24
Transaktionen ACID Atomicity Consistency Isolation Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 2 / 24
Transaktionen ACID Atomicity Consistency Isolation Durability Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 2 / 24
Transaktionen CREATE TABLE benutzer ( login vorname nachname geburtsdatum verbleibende_stimmen ) VARCHAR(30) NOT NULL PRIMARY KEY, VARCHAR(100), VARCHAR(100), DATE, INTEGER CREATE TABLE album ( id titel kuenstler ) INTEGER NOT NULL PRIMARY KEY, VARCHAR(50), VARCHAR(120) CREATE TABLE stimmen ( login VARCHAR(30) NOT NULL REFERENCES benutzer, album_id INTEGER NOT NULL REFERENCES album, PRIMARY KEY (login, album_id) ) Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 3 / 24
Transaktionen 1... 2 Class. forname ( "com.ibm.db2.jcc. DB2Driver " ) ; 3 4 i n t albumid = getalbumidfromuserinput ( ) ; 5 S t r i n g b e n u t z e r L o g i n = getuserloginfromuserinput ( ) ; 6 7 C o n n e c t i o n conn = n u l l ; 8 t r y { 9 conn = DriverManager. getconnection ( "jdbc :db2 :// musikdb " ) ; 0 1 // Hole v e r b l e i b e n d e Stimmen von B e n u t z e r aus d e r DB 2 i n t verbleibendestimmen = verbleibendestimmen ( conn, benutzerlogin ) ; 3 4 i f ( v e r b l e i b e n d e S t i m m e n >= 1) { 5 // A k t u a l i s i e r e f r e i e Stimmen von B e n u t z e r 6 S t r i n g updatestatement = " UPDATE benutzer SET " v e r b l e i b e n d e s t i m m e n =? 7 WHERE l o g i n =?"; 8 9 PreparedStatement s1 = conn. preparestatement ( updatestatement ); 0 1 s1. setint (1, verbleibendestimmen - 1); 2 3 s1. setstring (2, benutzerlogin ); 4 5 s1. executeupdate (); Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 4 / 24
Transaktionen 1 // Füge Stimmen von Benutzer f ü r Album in die DB ein 2 S t r i n g i n s e r t S t a t e m e n t = " INSERT INTO stimmen VALUES (?,?)" ; 3 4 PreparedStatement s2 = conn. preparestatement ( insertstatement ) ; 5 6 s2. s e t S t r i n g ( 1, b e n u t z e r L o g i n ) ; 7 8 s2. s e t I n t ( 2, albumid ) ; 9 0 s2. e x e c u t e U p d a t e ( ) ; 1 } 2 3 } catch ( SQLException e ) { 4 // Ausnahmen b e h a n d e l n 5... 6 } f i n a l l y { 7 // Resourcen s c h l i e ß en 8... 9 } 0... Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 5 / 24
Transaktionen conn.setautocommit(false); conn.commit(); conn.rollback(); Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 6 / 24
Schlüssel Superschlüssel Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 7 / 24
Schlüssel Superschlüssel Schlüsselkandidat/Schlüssel Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 7 / 24
Schlüssel Superschlüssel Schlüsselkandidat/Schlüssel Primärschlüssel Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 7 / 24
Schlüssel R : {A, B, C, D} A B Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 8 / 24
Schlüssel R : {A, B, C, D} A B A, B, C, D Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 8 / 24
Schlüssel R : {A, B, C, D} A B A, B, C, D Superschlüssel Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 8 / 24
Schlüssel R : {A, B, C, D} A B A, B, C, D Superschlüssel A, C, D Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 8 / 24
Schlüssel R : {A, B, C, D} A B A, B, C, D Superschlüssel A, C, D Schlüsselkandidat ( auch Superschlüssel) Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 8 / 24
Schlüssel R : {A, B, C, D} A B A, B, C, D Superschlüssel A, C, D Schlüsselkandidat ( auch Superschlüssel) A Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 8 / 24
Schlüssel R : {A, B, C, D} A B A, B, C, D Superschlüssel A, C, D Schlüsselkandidat ( auch Superschlüssel) A Nichts Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 8 / 24
1NF Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 9 / 24
1NF keine mehrwertigen Attribute Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 9 / 24
1NF keine mehrwertigen Attribute bei unserer Definition des relationalen Modell immer erfüllt Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 9 / 24
2NF Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 10 / 24
2NF Nichtschlüsselattribut (nicht prim): Attribut, das in keinem Schlüsselkandidaten vorkommt Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 10 / 24
2NF Nichtschlüsselattribut (nicht prim): Attribut, das in keinem Schlüsselkandidaten vorkommt Definition 2NF: jedes Nichtschlüsselattribut A in R ist voll funktional abhängig von jedem Schlüsselkandidaten Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 10 / 24
2NF Beispiel R : {A, B, C, D} AB C B D Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 11 / 24
2NF Beispiel R : {A, B, C, D} AB C B D Schlüsselkandidaten: AB Nichtschlüsselattribute: C und D Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 11 / 24
2NF Beispiel R : {A, B, C, D} AB C B D Schlüsselkandidaten: AB Nichtschlüsselattribute: C und D C ist voll funktional abhängig von AB Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 11 / 24
2NF Beispiel R : {A, B, C, D} AB C B D Schlüsselkandidaten: AB Nichtschlüsselattribute: C und D C ist voll funktional abhängig von AB D ist nicht voll funktional abhängig von AB (wg. B D) Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 11 / 24
2NF Beispiel R : {A, B, C, D} AB C B D Schlüsselkandidaten: AB Nichtschlüsselattribute: C und D C ist voll funktional abhängig von AB D ist nicht voll funktional abhängig von AB (wg. B D) nicht in 2NF Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 11 / 24
R : {A, B, C, D} AB C C D D A Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 12 / 24
R : {A, B, C, D} AB C C D D A Schlüssel: AB, BC, BD Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 12 / 24
1NF Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 13 / 24
1NF 2NF keine Nichtschlüsselattribute 3NF keine Nichtschlüsselattribute (nächste Folie) Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 13 / 24
3NF Für jede FD α B muss mindestens eine der drei folgenden Bedingungen erfüllt sein: Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 14 / 24
3NF Für jede FD α B muss mindestens eine der drei folgenden Bedingungen erfüllt sein: α ist Superschlüssel Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 14 / 24
3NF Für jede FD α B muss mindestens eine der drei folgenden Bedingungen erfüllt sein: α ist Superschlüssel B ist prim (Schlüsselattribut) Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 14 / 24
3NF Für jede FD α B muss mindestens eine der drei folgenden Bedingungen erfüllt sein: α ist Superschlüssel B ist prim (Schlüsselattribut) α B ist trivial (d.h B α) Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 14 / 24
3NF Schlüsselkandidaten: AB, BC, BD Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 15 / 24
3NF Schlüsselkandidaten: AB, BC, BD AB C Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 15 / 24
3NF Schlüsselkandidaten: AB, BC, BD AB C AB ist Superschlüssel Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 15 / 24
3NF Schlüsselkandidaten: AB, BC, BD AB C AB ist Superschlüssel C ist prim Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 15 / 24
3NF Schlüsselkandidaten: AB, BC, BD AB C AB ist Superschlüssel C ist prim AB C ist trivial Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 15 / 24
3NF Schlüsselkandidaten: AB, BC, BD AB C AB ist Superschlüssel C ist prim AB C ist trivial C D Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 15 / 24
3NF Schlüsselkandidaten: AB, BC, BD AB C AB ist Superschlüssel C ist prim AB C ist trivial C D C ist Superschlüssel Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 15 / 24
3NF Schlüsselkandidaten: AB, BC, BD AB C AB ist Superschlüssel C ist prim AB C ist trivial C D C ist Superschlüssel D ist prim Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 15 / 24
3NF Schlüsselkandidaten: AB, BC, BD AB C AB ist Superschlüssel C ist prim AB C ist trivial C D C ist Superschlüssel D ist prim C D ist trivial Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 15 / 24
3NF Schlüsselkandidaten: AB, BC, BD AB C AB ist Superschlüssel C ist prim AB C ist trivial C D C ist Superschlüssel D ist prim C D ist trivial D A Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 15 / 24
3NF Schlüsselkandidaten: AB, BC, BD AB C AB ist Superschlüssel C ist prim AB C ist trivial C D C ist Superschlüssel D ist prim C D ist trivial D A D ist Superschlüssel Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 15 / 24
3NF Schlüsselkandidaten: AB, BC, BD AB C AB ist Superschlüssel C ist prim AB C ist trivial C D C ist Superschlüssel D ist prim C D ist trivial D A D ist Superschlüssel A ist prim Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 15 / 24
3NF Schlüsselkandidaten: AB, BC, BD AB C AB ist Superschlüssel C ist prim AB C ist trivial C D C ist Superschlüssel D ist prim C D ist trivial D A D ist Superschlüssel A ist prim D A ist trivial Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 15 / 24
3NF Schlüsselkandidaten: AB, BC, BD in 3NF AB C AB ist Superschlüssel C ist prim AB C ist trivial C D C ist Superschlüssel D ist prim C D ist trivial D A D ist Superschlüssel A ist prim D A ist trivial Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 15 / 24
BCNF Für jede FD α B muss mindestens eine der zwei folgenden Bedingungen erfüllt sein: Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 16 / 24
BCNF Für jede FD α B muss mindestens eine der zwei folgenden Bedingungen erfüllt sein: α ist Superschlüssel Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 16 / 24
BCNF Für jede FD α B muss mindestens eine der zwei folgenden Bedingungen erfüllt sein: α ist Superschlüssel α B ist trivial (d.h B α) Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 16 / 24
BCNF Schlüssel: AB, BC, BD Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 17 / 24
BCNF Schlüssel: AB, BC, BD AB C Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 17 / 24
BCNF Schlüssel: AB, BC, BD AB C AB ist Superschlüssel Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 17 / 24
BCNF Schlüssel: AB, BC, BD AB C AB ist Superschlüssel AB C ist trivial Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 17 / 24
BCNF Schlüssel: AB, BC, BD AB C AB ist Superschlüssel AB C ist trivial C D Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 17 / 24
BCNF Schlüssel: AB, BC, BD AB C AB ist Superschlüssel AB C ist trivial C D C ist Superschlüssel Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 17 / 24
BCNF Schlüssel: AB, BC, BD AB C AB ist Superschlüssel AB C ist trivial C D C ist Superschlüssel C D ist trivial Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 17 / 24
BCNF Schlüssel: AB, BC, BD AB C AB ist Superschlüssel AB C ist trivial C D C ist Superschlüssel C D ist trivial D A Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 17 / 24
BCNF Schlüssel: AB, BC, BD AB C AB ist Superschlüssel AB C ist trivial C D C ist Superschlüssel C D ist trivial D A D ist Superschlüssel Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 17 / 24
BCNF Schlüssel: AB, BC, BD AB C AB ist Superschlüssel AB C ist trivial C D C ist Superschlüssel C D ist trivial D A D ist Superschlüssel D A ist trivial Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 17 / 24
BCNF Schlüssel: AB, BC, BD AB C AB ist Superschlüssel AB C ist trivial C D C ist Superschlüssel C D ist trivial D A D ist Superschlüssel D A ist trivial nicht in BCNF Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 17 / 24
BCNF Zerlegungsalgorithmus (Kurzform): Solange es eine Relation R gibt, die nicht in BCNF ist: Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 18 / 24
BCNF Zerlegungsalgorithmus (Kurzform): Solange es eine Relation R gibt, die nicht in BCNF ist: Finde nicht-triviale FD α β (α β = ; α R, d.h. α ist kein Superschlüssel) Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 18 / 24
BCNF Zerlegungsalgorithmus (Kurzform): Solange es eine Relation R gibt, die nicht in BCNF ist: Finde nicht-triviale FD α β (α β = ; α R, d.h. α ist kein Superschlüssel) Ersetze R durch R 1 = α β und R 2 = R β Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 18 / 24
BCNF z.b. Zerlegung gemäß C D Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 19 / 24
BCNF z.b. Zerlegung gemäß C D R 1 (C, D) mit C D R 2 (A, B, C) mit AB C Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 19 / 24
BCNF z.b. Zerlegung gemäß C D R 1 (C, D) mit C D R 2 (A, B, C) mit AB C D A geht verloren! Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 19 / 24
BCNF z.b. Zerlegung gemäß C D R 1 (C, D) mit C D R 2 (A, B, C) mit AB C D A geht verloren! vielleicht doch lieber in 3NF lassen? Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 19 / 24
Unterschiede zwischen relationaler Algebra und SQL Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 20 / 24
Unterschiede zwischen relationaler Algebra und SQL GROUP BY, Aggregatfunktionen Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 20 / 24
Unterschiede zwischen relationaler Algebra und SQL GROUP BY, Aggregatfunktionen Menge vs. Multimenge, Tabellen ohne Primärschlüssel Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 20 / 24
Unterschiede zwischen relationaler Algebra und SQL GROUP BY, Aggregatfunktionen Menge vs. Multimenge, Tabellen ohne Primärschlüssel Reihenfolge der Attribute Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 20 / 24
Unterschiede zwischen relationaler Algebra und SQL GROUP BY, Aggregatfunktionen Menge vs. Multimenge, Tabellen ohne Primärschlüssel Reihenfolge der Attribute Dreiwertige Logik Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 20 / 24
Relationale Algebra Bahnhöfe: ( Name: string, StadtName: string, Bundesland: string ) Züge: ( ZugNr: integer, StartBHf: string, ZielBHf: string ) verbindet: ( VonBHf: string, NachBHf: string, ZugNr: integer, Abfahrt: date, Ankunft: date ) Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 21 / 24
Relationale Algebra Welche Züge halten mindestens einmal in Duisburg? Π ZugNr (σ StadtName = Duisburg (Bahnhöfe) VonBHf = Name (verbindet)) Π ZugNr (σ StadtName = Duisburg (Bahnhöfe) NachBHf = Name (verbindet)) oder einfacher: Π ZugNr (σ StadtName = Duisburg (Bahnhöfe) VonBHf = Name NachBHf = Name (verbindet)) Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 22 / 24
Relationale Algebra Welche Städte sind ohne Umsteigen von Essen Hauptbahnhof zu erreichen? Π StadtName (σ StartBHf = Essen HBf (verbindet) NachBHf = Name (Bahnhöfe)) Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 23 / 24
Min/Max-Notation Jede Fußballmannschaft besteht aus mindestens 11 Spielern. Jeder Spieler gehört natürlich nur zu genau einer Mannschaft. Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 24 / 24
Min/Max-Notation Jede Fußballmannschaft besteht aus mindestens 11 Spielern. Jeder Spieler gehört natürlich nur zu genau einer Mannschaft. Dipl.-Inform. Thomas Beckers (UDE) Datenbanken (Übung 12) 1. 2. Februar 2012 24 / 24