Teil 2 5. Vorlesung Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken und Informationssysteme Dr. Karsten Tolle [email protected] 1 Anmeldung zur Klausur Bis spätestens zum 16.07. anmelden! … was passiert dann? Raumzuordnung wird erstellt. Dort prüfen wo man schreibt! Klausur ist Freitag den 23. Juli 2 Grundlagen der Programmierung II DBIS - SS2010 Literatur • Folien/Übungen zu DB1 und DB2 sind online zugänglich • Bib. unter H, Treppe hoch, dann lauft ihr in DB-Bücher 3 Grundlagen der Programmierung II DBIS - SS2010 Fahrplan Heute: • ER • relationales Modell Nächste Woche: • FDs und NFs • SQL Letzte Vorlesung: • Diverses • Fragen und Antworten 4 Grundlagen der Programmierung II DBIS - SS2010 Entity-Relationship Modell (E-R Model) • P. Chen (ACM Artikel von 1976: The Entity Relationship Model – Toward A Unified View of Data) • Einfache graphische Darstellung der Welt 5 Grundlagen der Programmierung II DBIS - SS2010 Die Welt … Otto Müller lebt in Frankfurt am Main, in der Robert-Mayer-Str. 11. Er hat ein Flug nach Kapstadt gebucht. Person lebt_in Haus lebt_in 6 Grundlagen der Programmierung II DBIS - SS2010 Das Entity-Relationship Modell Aus der Sicht des Objekt-Beziehungs-Modells (Entity-Relationship-Model) besteht die Welt aus Objekten (Entities) und Beziehungen (Relationships) zwischen diesen Objekten. Objekt (Entity): Modell eines Dings, das in der Umwelt erkannt und eindeutig identifiziert werden kann. Modellierungskonzept der Klassifikation: Objekte werden zu Objekttypen (Entity-Typs), und Beziehungen zu Beziehungstypen (Relationship-Typs) zusammengefasst. 7 Grundlagen der Programmierung II DBIS - SS2010 Begriffe im Alltag Achtung: Die Begriffe • Entity und Entity-Typ • Beziehung (Relation) und Beziehungstyp (Relationship-Typ) werden im Alltag oft als Synonyme verwendet. 8 Grundlagen der Programmierung II DBIS - SS2010 (Objekt) Attribute Ein Objekttyp ist durch einen bestimmten Satz von Merkmalen (Attributen) gekennzeichnet. Jedes Merkmal kann Werte (values), das sind in der Umwelt beobachtbare oder messbare Größen, aus einem bestimmten Wertebereich (value set) annehmen. Beispiel: Passagier Name Freigepäck Status Otto Müller 20kg Economy Class 9 Grundlagen der Programmierung II DBIS - SS2010 Wichtig! Ein Beziehungstyp zwischen zwei Entity-Typen kann eine mathematische Relation aufgefasst werden. Name Geb_Datum Instanz: Person Stadt lebt_in 10 Person lebt_in Stadt S_Name Population = { p1, p2, p3 } = { c1, c2, c3 } = { <p1,c1>, <p2,c3>, <p3,c3> } Grundlagen der Programmierung II DBIS - SS2010 Min/Max Kardinalitäten (1,1) Person (0,n) lebt_in Stadt • min_card(Person, Lebt_in) = 1 • max_card(Person, Lebt_in) = 1 • min_card(Stadt, Lebt_in) = 0 • max_card(Stadt, Lebt_in) = n • p1 • c1 • p2 • c2 • p3 • c3 Es gilt immer: min_card <= max_card! • c4 Person, verbindlich Stadt, optional Bem.: Es gibt andere Notationen, z.B. wird manchmal nur max_card angegeben. 11 Grundlagen der Programmierung II DBIS - SS2010 Kardinalitäten Instanz: Person Stadt lebt_in = { p1, p2, p3 } = { c1, c2, c3 } = { <p1,c1>, <p2,c3>, <p3,c3> } • p1 • c1 • p2 • c2 • p3 Instanz: Person Stadt lebt_in • c3 = { p1, p2, p3, p4} = { c1, c2, c3, c4, c5 } = { <p1,c1>, <p2,c1>, <p3,c3>, <p1, c4> } • p1 • c1 • p2 • c2 • p3 • c3 • p4 • c4 • c5 Person Name Geb_Datum Person 12 Stadt (1,1) lebt_in (1,1) Stadt Person S_Name Population Name Geb_Datum Grundlagen der Programmierung II Person Stadt (0,n) lebt_in (0,n) Stadt S_Name Population DBIS - SS2010 Klassifizierung der Beziehungstypen • one-to-one (max_card auf beiden Seiten = 1) (1,1) Person (0,1) lebt_in Stadt • one-to-many (max_card auf einer Seiten = 1, auf der anderen n) (0,1) Person (0,n) lebt_in Stadt • many-to-many (max_card auf beiden Seiten n) (0,n) Person 13 (1,n) lebt_in Grundlagen der Programmierung II Stadt DBIS - SS2010 (Beziehungs) Attribute Eine Beziehung kann durch Merkmale (Attribute) gekennzeichnet werden. Die Funktion, die ein Objekt in einer Beziehung erfüllt, nennt man seine Rolle. Beispiel: Rolle Gebuchter_Passagier PASSAGIER Gebuchter_Flug bucht FLUG SITZNR. 14 Grundlagen der Programmierung II DBIS - SS2010 (Beziehungs) Attribute Instanz: Passagier = { p1, p2, p3 } Flug = { c1, c2, c3 } bucht = { <p1,c1, „D2“>, <p2,c1, „D3“>} D2 D1 • p1 D2 • c1 • p2 D3 • c2 • p3 • c3 • c4 Gebuchter_Passagier PASSAGIER Gebuchter_Flug bucht FLUG Passagier Flug SITZNR. 15 Grundlagen der Programmierung II DBIS - SS2010 Die Uni … Studenten können sich von Professoren über eine Vorlesung mündlich prüfen lassen. Alt. 1: Name Geb_Datum Student prüft Prof Name Gehalt Vorlesung Alt. 2: (N-näre Beziehung) 16 Name Geb_Datum Student Titel SWS prüft Prof Name Gehalt Vorlesung Grundlagen der Programmierung II DBIS - SS2010 Zusammengesetzte Attribute Aggregation von Attributen die etwas gemeinsam haben, z.B.: Person 17 A d r e s s e Strasse Nummer Ort PLZ Grundlagen der Programmierung II DBIS - SS2010 Generalisierung Hierarchien für Entity-Typen (entspricht Klassenhierarchy in OO) Person Mann 18 Frau Grundlagen der Programmierung II DBIS - SS2010 Schlüssel Ein Schlüssel besteht aus einer Menge von Attributen, deren Werte eine Instanz (Entity) eines Entity-Types eindeutig bestimmt. Name Person Personalausweisnummer Person Geb.Ort Name Name des Vaters einfacher Schlüssel 19 Geb.Datum zusammengesetzter Schlüssel Grundlagen der Programmierung II DBIS - SS2010 ER Zusammenfassung • Entitäten und Entity-Typen • Beziehungen und Beziehungstypen • Attribute • für Entitäten(Typen) und Beziehungen(Typen) • einfach oder zusammengesetzt • ausgezeichnet als Schlüssel • Kardinalitäten • Generalisierung 20 Grundlagen der Programmierung II DBIS - SS2010 Entity-Typ oder Attribut??? Möbelstück Farbe Möbelstück hat Farbe • Entities sind Klassen von Objekten der realen Welt und nehmen keine Werte an. • Attribute dagegen sind beschreibende Eigenschaften und nehmen Werte an. Die Entscheidung ist abhängig vom Kontext (Situation/Anwendungsfall). Farbe Nr. 21 (1,n) Name Intensität besteht aus Menge (1,n) Lack Name Grundlagen der Programmierung II Preis DBIS - SS2010 B Professor hält A B-D Lehrveranst. A-C A-D B-E hält hält B-C D Ausbilder hält Seminar C besser so … besser so … A-C Personal Lehrer Lehrveranst. Ausbilder Grundlagen der Programmierung II A-E D E B-D Seminar B-C 22 A A-D C Professor A-E E B B-E Ausdruckskraft Ein Angestellter einer Abteilung soll nicht mehr verdienen, als der entsprechende Abteilungsleiter. Gehalt arbeitet_ in Angesteller Abteilung leitet Benötigt zusätzliche Beschreibung, sogenannte Business Rules. Ein Angestellter darf nicht mehr Gehalt bekommen als der Abteilungsleiter, zu dessen Abteilung der Angestellte gehört. Ein Abteilungsleiter muss zu der Abteilung gehören, die er leitet. 23 Grundlagen der Programmierung II DBIS - SS2010 Business Rules (im weitesten Sinne) können angesehen werden als: 1. Die semantische Definition eines für Anwendungen relevanten Konzeptes, genauer, die semantische Definition • eines Objektes, • eines Attributes • Relation oder einer des ER-Modells. Für diesen Fall werden natürlich sprachliche Sätze verwendet, da es unmöglich ist hierfür eine präzise Syntax zu definieren. 2. Integritätsbedingungen für die Daten einer Anwendung (als zusätzliche Beschreibung der im ER-Modell enthaltenen Bedingungen oder zusätzliche Bedingungen). 3. Abgeleitete Bedingungen bzw. Folgerungen aus anderen Bedingungen (z.B. Brutto ist Summe aus Netto plus Steuer). 24 Grundlagen der Programmierung II DBIS - SS2010 NAME PERSON AGE (1 , n ) FAN COACH (1 ,1 ) PLAYER (1 ,1) SUPPORTS ( 1, n ) PRESIDENT (1 ,1 ) (1 ,1 ) MANAGES PLAYS _ FOR (1 ,1 ) (1 , n) IS_ PRESIDENT (1 ,1 ) TEAM NAME (1 ,n ) ( 1 ,n ) ( 1 ,n ) DATE PRACTICES PLAYS _ AG AINST ( 1 ,n) (1 ,n) ( 1 ,1 ) ATTENDS NUMBER GAME TAKES PLACE _ AT DATE FINAL_SCORE (0, 1) ATTENDAN CE (0,1) TIME 25 LOCATION ( 0 ,n ) Grundlagen der Programmierung II STADIUM SIZE NAME NAME STATE ( 0, n) ( 1 ,1 ) BIRT HPLACE _OF CITY PERSON LAST_NAME AGE NAME ( 0, n) TELEPHONE ( 1 ,n ) RESIDENCE_ CITY_OF DEPARTMENT BELONGS_T O ( 1 ,1) ( 1 ,1) STUDENT ( 0 ,n) PROFESSOR ( 0, n) (0 ,n ) SEMESTER SEMEST ER ENROLLED PLANNED GRADUATE_ STUDENT ( 1, 1) ADVISED_ BY GRADE START_APPOINTMENT T ERMINATE_ APPOINTMENT ( 1 ,n) (1 ,n ) ( 1 ,n) COURSE TAUGHT_ BY (1, 2 ) VISITING_ PROFESSOR TITLE ( 3, 5) MEET S (1, n ) ROOM (1, n) 26 DAY TIME Grundlagen der Programmierung II HOUR ROOM_NO BUILDING 27 Grundlagen der Programmierung II 28 Grundlagen der Programmierung II Relationales Datenmodell Nach Edgar F. Codd definiert sich ein Datenbankmodell aus drei Eigenschaften: • Einer generischen Datenstruktur, die die Struktur einer Datenbank beschreibt. • Einer Menge von generischen Operatoren, die man bei beliebigen Schemata auf die Datenstrukturen anwenden kann, um Daten einzutragen, zu ändern, abzufragen oder abzuleiten. • Einer Menge von Integritätsbedingungen, mit denen man die zulässigen Datenbankinhalte über die Grundstrukturen hinaus weiter einschränken kann. Dem Relationalen Datenmodell (E.F. Codd, 1970) liegt die mengentheoretische Relation zugrunde. 29 Grundlagen der Programmierung II DBIS - SS2010 Relationales Datenmodell Tabellen mit Zeilen und Spalten um die Daten darzustellen. Attribute Employee Tupel EMPNO FIRSTNME LASTNME PHONENO SALARY 001 Jon Lucas 2983 2000 003 Jon Smith 2980 3588 103 Lucas Jon 4444 3980 999 Jon Smith 3987 1500 Schema (Relationenschema): Employee(EMPNO, FIRSTNME, LASTNME, PHONENO, SALARY) DBIS - SS2010 Formalisierung des Relationenmodells I Definition: Ein Relationenschema R ist eine endliche Menge von Attributnamen {A1, A2 , ..., An}. Notation: R = {A1, A2 , ..., An} oder R(A1, A2 , ..., An) Attributnamen können auch verkürzt nur als Attribute bezeichnet werden. 31 Grundlagen der Programmierung II DBIS - SS2010 Formalisierung des Relationenmodells II Definition: Zu jedem Attribut Ai, 1 ≤ i ≤ n, gibt es eine Menge Di, den Wertebereich (domain) von Ai. Notation: dom(Ai) ist der Wertebereich von Ai. Beispiel: Das Attribut GESCHLECHT hat den Wertebereich dom(GESCHLECHT) = {männlich, weiblich}. 32 Grundlagen der Programmierung II DBIS - SS2010 Formalisierung des Relationenmodells III Definition: Sei D = D1 × D2 × D3 × ... × Dn das kartesische Produkt der Domänen D1, D2, D3, ..., Dn. Eine Relation r auf einem Relationenschema R, bezeichnet mit r(R), ist eine endliche Menge von Abbildungen {t1, ..., tn} von R nach D, wobei für jede Abbildung t ∈ r, der Wert t(i) aus der Domäne Di, 1 ≤ i ≤ n, stammt. Diese Abbildungen werden Tupel genannt. Der Wert eines Tupels t für ein Attribut A, t(A) = a, heißt A-Wert von t. 33 Grundlagen der Programmierung II DBIS - SS2010 Relationales Datenmodell Tabellen mit Zeilen und Spalten um die Daten darzustellen. Attribute Employee Tupel t EMPNO FIRSTNME LASTNME PHONENO SALARY 001 Jon Lucas 2983 2000 003 Jon Smith 2980 3588 103 Lucas Jon 4444 3980 999 Jon Smith 3987 1500 t(EMPNO) = 001 t(FIRSTNME) = Jon dom(SALARY) = „Werte, die als mögliche Gehälter in Frage kommen“ DBIS - SS2010 Relationales Datenmodell Employee Tupel t t 1, t 2 EMPNO FIRSTNME LASTNME PHONENO SALARY 001 Jon Lucas 2983 2000 003 Jon Smith 2980 3588 103 Lucas Jon 4444 3980 999 Jon Smith 3987 1500 t(EMPNO, FIRSTNME) = (001, Jon) t1, t2 ∈ r und t1(FIRSTNME, LASTNME) = t2(FIRSTNME, LASTNME) DBIS - SS2010 Bemerkungen • Relationen sind Abstraktionen von Teilen der realen Welt. • Relationen sind veränderlich, sie ändern ihren Zustand in der Zeit Einfügen, Löschen, Ändern von Tupeln • Relationenschemata sind unveränderlich • Sind den Spalten einer Relation Attributnamen zugeordnet, so ist deren Reihenfolge unwichtig. (In der Definition der Relation auf S. 5 ist die Reihenfolge der Spalten wichtig.) 36 Grundlagen der Programmierung II DBIS - SS2010 Schlüssel Ein Schlüssel identifiziert eine Entität. Er besteht aus einer Menge von Attributen, deren Werte alle Instanzen einer Entität eindeutig bestimmen. (aus ER!) Ein Schlüssel (key) einer Relation r(R) ist eine minimale Teilmenge K von R, so dass für je zwei verschiedene Tupel t1, t2 ∈ r gilt: • t1(K) ≠ t2(K) und • keine echte Teilmenge K' von K hat diese Eigenschaft. Ein Schlüssel kann als Integritätsbedingung angesehen werden. Falls K Schlüssel von r(R), t1 ∈ r, t1(K) = t2(K), t1 ≠ t2 dann dürfte t2 nicht in r(R) eingefügt werden. 37 Grundlagen der Programmierung II DBIS - SS2010 Oberschlüssel K ist ein Oberschlüssel (super key) der Relation, falls K einen Schlüssel enthält. … also aus Schlüssel Oberschlüssel (aber nicht umgekehrt) Oberschlüssel Schlüssel 38 Grundlagen der Programmierung II DBIS - SS2010 Beachte!!! = EMPNO FIRSTNME LASTNME PHONENO SALARY 001 Jon Lucas 2983 2000 003 Jon Smith 2980 3588 103 Lucas Jon 4444 3980 001 Jon Lucas 2983 2000 im mathematischen mengentheoretischen Modell 39 EMPNO FIRSTNME LASTNME PHONENO SALARY 001 Jon Lucas 2983 2000 003 Jon Smith 2980 3588 103 Lucas Jon 4444 3980 Grundlagen der Programmierung II DBIS - SS2010 • Schlüssel, die explizit zu einem Relationenschema angeführt sind, heißen ausgezeichnete Schlüssel (designated keys). • Eine Relation kann mehrere Schlüssel besitzen. Man spricht dann von Schlüsselkandidaten. • Im Allgemeinen wird ein Schlüssel als Primärschlüssel ausgezeichnet. • Dieser wird im Relationenschema durch Unterstreichen gekennzeichnet. 40 Grundlagen der Programmierung II DBIS - SS2010 ER-Abbildung zu Relationen Entitätstypen Ein Entitätstyp wird zu einer Relation (Tabelle), dessen Relationenschema aus allen Attributen des Entitätstyp besteht. Jedes Tupel der Tabelle entspricht dann genau einer Entität des Entitätstyps. Etwaige Schlüssel werden übernommen und üblicherweise an den Anfang des Relationenschemas gestellt. „Regel“: Schlüssel Attribut_A Attribut_B Entitätstyp E E (Schlüssel, Attribut_A, Attribut_B) 41 Grundlagen der Programmierung II DBIS - SS2010 Beispiel Angestellter Pers.Nr. Name Vorname ANGESTELLTER (Pers.Nr., Name, Vorname) ANGESTELLTER 42 PersNr Name Vorname 001 Jon Lucas 003 Jon Smith 103 Lucas Jon Grundlagen der Programmierung II DBIS - SS2010 many-to-many B Schlüssel1 A_1 Entität_1 Schlüssel2 A_2 (0:n) Beziehung (0:n) Entität_2 ENTITÄT_1 (Schlüssel1, A_1) ENTITÄT_2 (Schlüssel2, A_2) BEZIEHUNG (Schlüssel1, Schlüssel2, B) 43 Grundlagen der Programmierung II DBIS - SS2010 Beispiel seit Person AusweisNr. (0:n) lebt_in (0:n) Ort PLZ Name Vorname Ortsname 44 PERSON (AusweisNr., Name, Vorname) ORT (PLZ, Ortsname) LEBT_IN (AusweisNr., PLZ, seit) Grundlagen der Programmierung II DBIS - SS2010 Beispiel mit Instanzen PERSON Ort AusweisNr Name Vorname PLZ Ortsname 001 Jon Lucas 501 Buli 003 Jon Smith 503 Wali 103 Lucas Jon 603 Kali LEBT_IN AusweisNr PLZ seit 001 501 23.12.2000 003 501 17.08.2004 001 503 01.01.1999 Jon Lucas (001) lebt_in Buli (501), seit dem 23.12.2000! 45 Grundlagen der Programmierung II DBIS - SS2010 one-to-many (min_card = 0) B Schlüssel1 A_1 Entität_1 Schlüssel2 A_2 (0:1) Beziehung (0:n) Entität_2 ENTITÄT_1 (Schlüssel1, A_1) ENTITÄT_2 (Schlüssel2, A_2) BEZIEHUNG (Schlüssel1, Schlüssel2, B) 46 Grundlagen der Programmierung II DBIS - SS2010 Beispiel Datum (0:1) Buch BuchNr. Titel verliehen an (0:n) Entleiher Nummer Autor Name BUCH ENTLEIHER VERLIEHEN_AN 47 (BuchNr., Titel, Autor) (Nummer, Name) (BuchNr., Nummer, Datum) Grundlagen der Programmierung II DBIS - SS2010 one-to-many (min_card = 1) B Schlüssel1 A_1 Entität_1 Schlüssel2 A_2 (1:1) Beziehung (0:n) Entität_2 ENTITÄT_1 (Schlüssel1, A_1, Schlüssel2, B) ENTITÄT_2 (Schlüssel2, A_2) Hier sind nur noch zwei Relationen notwendig! 48 Grundlagen der Programmierung II DBIS - SS2010 Beispiel Datum Person AusweisNr. (1:1) geboren in (0:n) Ort PLZ Name Vorname Ortsname PERSON (AusweisNr., Name, Vorname, PLZ, Datum) ORT (PLZ, Ortsname) 49 Grundlagen der Programmierung II DBIS - SS2010 … aber auch möglich! (geht immer☺☺) B Schlüssel1 A_1 Entität_1 Schlüssel2 A_2 (1:1) Beziehung (0:n) Entität_2 ENTITÄT_1(Schlüssel1, A_1) ENTITÄT_2 (Schlüssel2, A_2) Datum BEZIEHUNG (Schlüssel1, Schlüssel2, B) Person AusweisNr. (1:1) geboren in (0:n) Ort PLZ Name Vorname Ortsname PERSON (AusweisNr., Name, Vorname, PLZ, Datum) ORT (PLZ, Ortsname) GEBOREN_IN (AusweisNr., PLZ, Datum) 50 Grundlagen der Programmierung II DBIS - SS2010 one-to-one Eine one-to-one Beziehung kann wie eine one-to-many Beziehung in beide Richtungen betrachtet werden. Sind beide min-Kardinalitäten = 0, so muss das allgemeine Verfahren angewendet werden. Ist nur eine min-Kardinalität = 1, so wendet man die Abbildung der one-to-many Beziehung an. B Schlüssel1 A_1 Schlüssel2 A_2 Entität_1 ENTITÄT_1 ENTITÄT_2 51 (1:1) Beziehung (0:1) Entität_2 (Schlüssel1, A_1, Schlüssel2, B) (Schlüssel2, A_2) Grundlagen der Programmierung II DBIS - SS2010 Beispiel seit Abteilung AbteilungsNr. (1:1) geleitet von (0:1) Bezeichnung Mitarbeiter Pers.Nr. Name ABTEILUNG (AbteilungsNr., Bezeichnung, Pers.Nr., seit) MITARBEITER (Pers.Nr., Name) 52 Grundlagen der Programmierung II DBIS - SS2010 one-to-one (beide min-card = 1) B Schlüssel1 A_1 Entität_1 Schlüssel2 A_2 (1:1) Beziehung (1:1) Entität_2 ENTITÄT_1_2 (Schlüssel1, A_1, Schlüssel2, A_2, B) oder ENTITÄT_1_2 (Schlüssel1, A_1, Schlüssel2, A_2, B) Nur noch eine Relation notwendig! 53 Grundlagen der Programmierung II DBIS - SS2010 Beispiel AblaufDatum (1:1) Ausweis gehört (1:1) AusweisNr. Behörde Person Name Vorname PERSON (AusweisNr., Behörde, Ablaufdatum, Name, Vorname) 54 Grundlagen der Programmierung II DBIS - SS2010 Sonderfälle (3:5) Auto KFZ-Kennzeichen hat_Räder (0:1) Hersteller Rad Fabr.-Nr. Breite (Hier sind RAD1 – RAD3 verbindlich, also NOT NULL, während RAD4 und RAD5 durchaus Nullwerte beinhalten dürfen.) AUTO (KFZ-Kennzeichen, Hersteller, RAD1, ... RAD5) RAD (Fabr.-Nr., Breite) 55 Grundlagen der Programmierung II DBIS - SS2010 Abbildung der Generalisierung Schlüssel Attribut_A Attribut_B Oberklasse Subklasse_1 Subklasse_2 Attribut_A_1 Attribut_B_1 Attribut_A_2 Hier: Drei Möglichkeiten mit unterschiedlichen Vor- und Nachteilen! 56 Grundlagen der Programmierung II DBIS - SS2010 1. Möglichkeit Alle Entitätstypen zu eigenständigen Relationen, die alle für sie relevanten Informationen beinhalten. Die Subklassen enthalten neben ihren neuen Attributen noch alle Attribute ihrer Oberklasse. Der Vorteil der Performance überwiegt nur in wenigen Fällen gegenüber der entstehenden Redundanz, deren Gefahren der Inkonsistenz und des zusätzlichen Speicherbedarfs. Schlüssel Attribut_A Attribut_B Kto.-Nr. Kunde Kto.Stand Oberklasse Subklasse_1 Attribut_A_1 Attribut_B_1 Konto Subklasse_2 Girokonto Attribut_A_2 Kreditrahmen OBERKLASSE (Schlüssel, Attribut_A, Attribut_B) SUBKLASSE_1 (Schlüssel, Attribut_A, Attribut_B, Attribut_A_1, Attribut_B_1) SUBKLASSE_2 (Schlüssel, Attribut_A, Attribut_B, Attribut_A_2) 57 Sparkonto Zinssatz KONTO (Kto.Nr., Kunde, Kto.Stand) GIROKONTO (Kto.Nr., Kunde, Kto.Stand, Kreditrahmen) SPARKONTO (Kto.Nr., Kunde, Kto.Stand, Zinssatz) Grundlagen der Programmierung II DBIS - SS2010 2. Möglichkeit Die Entitätsmengen, die die Subklassen bilden, beinhalten in ihrer entstehenden Relation neben ihren eigenen Attributen nur noch den Schlüssel der Oberklassen-Entitätsmenge. Damit lassen sich alle Daten einer Subklassen-Entität durch einen natürlichen Verbund (natural join) gewinnen. Schlüssel Attribut_A Attribut_B Kto.-Nr. Kunde Kto.Stand Oberklasse Subklasse_1 Attribut_A_1 Attribut_B_1 Konto Subklasse_2 Girokonto Attribut_A_2 Kreditrahmen OBERKLASSE (Schlüssel, Attribut_A, Attribut_B) SUBKLASSE_1 (Schlüssel, Attribut_A_1, Attribut_B_1) SUBKLASSE_2 (Schlüssel, Attribut_A_2) 58 Sparkonto Zinssatz KONTO (Kto.Nr., Kunde, Kto.Stand) GIROKONTO (Kto.Nr., Kreditrahmen) SPARKONTO (Kto.Nr., Zinssatz) Grundlagen der Programmierung II DBIS - SS2010 3. Möglichkeit Man erstellt eine Relation, die als Schema die Vereinigung der Attribute aller Subklassen und der Oberklasse hat. Die Attribute, die eine bestimmte Entität nicht hat, werden durch Nullwerte ersetzt. Schlüssel Attribut_A Attribut_B Kto.-Nr. Kunde Kto.Stand Oberklasse Subklasse_1 Attribut_A_1 Attribut_B_1 Konto Subklasse_2 Girokonto Attribut_A_2 Kreditrahmen KLASSE (Schlüssel, Attribut_A, Attribut_B, Attribut_A_1, Attribut_B_1, Attribut_A_2) 59 Sparkonto Zinssatz KONTO (Kto.Nr., Kunde, Kto.Stand, Kreditrahmen, Zinssatz) Grundlagen der Programmierung II DBIS - SS2010 Größeres Beispiel Pk-Nr Name Lohn Abt-Nr. Angestellter beschäftigt Abteilung (1,1) geleitet_von (1,1) seit Manager Außendienst AT-Klasse Datum ANGESTELLTER (PK-NR, NAME, LOHN) AUSSENDIENST (PK-NR) ABT_MANAGER (ABT-NR, SEIT, PK-NR, AT-KLASSE) BESCHÄFTIGT (ABT-NR, PK-NR) POLICE (POLICE-NR, ART, NEHMER, SUMME, DATUM, PK-NR) 60 Grundlagen der Programmierung II verkauft (1,1) Police Summe Nehmer Art Police-Nr. Schlüssel? … Kontext: Deutschland ADRESSE 61 PLZ Ort StraßeNr 60308 Frankfurt Kettenhofweg 23 63069 Offenbach Bahnhofstr. 12 63069 Offenbach Waldweg 34 Grundlagen der Programmierung II DBIS - SS2010