Informatik (Fach) / Datenbanksysteme1 (Lektion)
In dieser Lektion befinden sich 28 Karteikarten
Kapitel 2 Dar Relationale Modell
Diese Lektion wurde von daschinka erstellt.
Diese Lektion ist leider nicht zum lernen freigegeben.
- Domain ein Wertebereich oder Typ Logisch zusammengehörige Menge von Werten Beispiele: D=Integer D=Date D=String D={rot, gelb, grün, blau} Kann endliche oder unenliche Kardinalität haben
- Relation in der Mathematik Die einzelnen Domains lassen sich als Spalten einer Tabelle versehen, und werden als Atributte bezeichnet Für R(echte Teilmenge)D1×...×Dk ist k der Grad (Stelligkeit) Die Elemente der Relation heißen Tupel: (1,a),(2,a),(3,a) sind drei Tupel von Grad k=2 Die Relation ist Menge von Tupeln, d.h. die Reihenfolge der Tupel spielt keine Rolle Die Reihenfolge der Atributte ist von Bedeutung
- Relationen-Schema Alternative Definition in DBS: Relation ist Ausprägung eines Relationen-Schemas. • Geordnetes Relationenschema: – k-Tupel aus Domains (Attribute) – Attribute werden anhand ihrer Position im Tupel referenziert – Attribute können zusätzlich einen Attributnamen haben R = (A1: D1, ... Ak: Dk) • Domänen-Abbildung (ungeordnetes Rel.-Sch.): – Relationenschema R ist Menge von Attributnamen: – Jedem Attributnamen Ai ist Domäne Di zugeordnet: – Attribute werden anhand ihres Namensreferenziert R = {A1, .... Ak} mit dom(Ai) = Di, 1 ≤ i ≤ k
- Relationen- Schema Beispiel Städte-Relation - Als geordnetes Relationenschema: Schema: R=(Name:String, Einwohner: Integer, Land:String) Ausprägung: r={(München,1211617,Bayern),(Bremen,535058,Bremen), (Passau, 49800,Bayern)} - Als Relationenschema mit Domainabbildung: Schema: R={Name,Einwohner,Land} mit dom(Name)=String, dom(Einwohner)=Integer, .... Ausprägung: r={t1,t2,t3} mit t1(Name)=München, t1(Einwohner)=1211617,....
- Diskussion Vorteil und Nachteil von geordenetem Schema • Vorteil von geordnetem Relationenschema: – Prägnanter aufzuschreiben. Wichtig z.B. beim Einfügen neuer Tupel: t3 = (Passau, 49.800, Bayern) vergleiche: t3 (Name) = Passau; t3 (Einwohner) = ... • Nachteil von geordnetem Relationenschema: – Einschränkungen bei logischer Datenunabhängigkeit: Applikationen sensibel bzgl. Einfügung neuer Attribute (nur am Ende!) • Definitionen prinzipiell gleichwertig
- Begriffe: Relation Datenbankschema Datenbak • Relation: Ausprägung eines Relationenschemas • Datenbankschema: Menge von Relationenschemata • Datenbank: Menge von Relationen (Ausprägungen)
- Duplikate • Relationen sind Mengen von Tupeln. Konsequenzen: – Reihenfolge der Tupel irrelevant (wie bei math. Def) – Es gibt keine Duplikate (gleiche Tupel) in Relationen: {(0,a), (0,a), (0,a), (1,b)} = {(0,a), (1,b)} • Frage: Gilt dies auch für die Spalten beim ungeordneten Relationenschema R = {A1,...,Ak} ? – Reihenfolge der Spalten ist irrelevant (das ist gerade das besondere am ungeordneten RS) – Duplikate treten nicht auf, weil alle Attribut-Namen verschieden sein müssen
- Schlüssel • Tupel müssen eindeutig identifiziert werden Warum? Z.B. für Verweise • Objektidentifikation in Java: Mit Referenz (Adresse im Speicher) • Im relationalen Modell werden Tupel anhand von Attributwerten identifiziert • Ein/mehrere Attribute als Schlüssel kennzeichnen • Konvention: Schlüsselattribut(e) unterstreichen!
- Zusammengesetzter Schlüssel • Oft ist ein einzelnes Attribut nicht ausreichend, um die Tupel eindeutig zu identifizieren Z.B.: Schlüssel: (Vnr, Semester)
- Schlüssel: Formale Definition Definition: • Eine Teilmenge S der Attribute eines Relationenschemas R (S ⊆ R) heißt Schlüssel, wenn gilt: 1) Eindeutigkeit: Keine Ausprägung von R kann zwei verschiedene Tupel enthalten, die sich in allen Attributen von S gleichen. ∀ möglichen Ausprägungen r und Tupel t1, t2∈r gilt: t1 ≠ t2 ⇒ t1[S]≠ t2[S]. 2) Minimalität: Es existiert keine echte Teilmenge T ⊂ S , die bereits die Bedingung der Eindeutigkeit erfüllt. ∀ Attributmengen T, die (1) erfüllen, gilt: T ⊆ S ⇒ T = S. t[S] -> Tupel eingeschränkt auf die Attribute aus S (Später πs(t)für t[S])
- Superschlüssel/Minimale Menge Eine Menge S ⊆ R heißt Superschlüssel (oder Oberschlüssel, engl. Superkey), wenn sie die Eindeutigkeitseigenschaft erfüllt Der Begriff des Superschlüssels impliziert keine Aussage über die Minimalität In der Mathematik wird allgemein eine Menge M als minimale Menge bezüglich einer Eigenschaft B bezeichnet, wenn es keine echte Teilmenge von M gibt, die ebenfalls B erfüllt. Damit können wir auch definieren: Ein Schlüssel ist ein minimaler Superschlüssel (minimale Menge S ⊆ R mit Eindeutigkeits-Eigenschaft)
- Primärschlüssel Keine überflüssigen Attribute sind enthalten Manchmal gibt es mehrere verschiedene Schlüssel – {LNr} – {VNr, Semester} -> Schlüsselkandidat (SQL: unique) Man wählt einen dieser Kandidaten aus als sogenannter Primärschlüssel (SQL: primary key) Attribut(e) das auf einen Schlüssel einer anderen Relation verweist, heißt Fremdschlüssel(SQL: foreign key)
- Schlüssel: Semantische Eigenschaften Die Eindeutigkeit bezieht sich nicht auf die aktuelle Ausprägung einer Relation r , sondern immer auf die Semantik der realen Welt Z.B.: können Name und Gehälter gleich sein, anders die Pnr.
- Tabellendefintion in SQL Definition eines Relationenschemas: CREATE TABLE n <- n Name der Relation ( a1,d1,c1, <- Definition des ersten Attributs a2,d2,c2, ..... ak,dk,ck <-Definition des Attributs Nr. k ) - hierbei bedeuten... ai der Name des Attributs Nr. i di der Typ (die Domain) des Attributs ci ein optimaler Constraint für das Attribut - Wirkung: Definition eines Relationenschemas mit einer leeren Relation als Ausprägung.
- Basis-Typen in SQL Der SQL-Standard kennt u.a folgende Datentypen: integer oder auch integer4, int smallint oder auch integer2 float(p) oder auch float decimal(p,q) und nemeric(p,q) mit p Stellen, davon q Nachkommast. charakter(n), char(n) für Strings fester Länge n charakter varying(n), varchar(n): variable Strings date, time, timespamp für Datum und Zeit
- Basis-Typen in SQL Der SQL-Standard kennt u.a folgende Datentypen: integer oder auch integer4, int smallint oder auch integer2 float(p) oder auch float decimal(p,q) und nemeric(p,q) mit p Stellen, davon q Nachkommast. charakter(n), char(n) für Strings fester Länge n charakter varying(n), varchar(n): variable Strings date, time, timespamp für Datum und Zeit
-
- Zusätze bei Attributdefinitionen Einfache Zusätze (Integritätsbedingungen) können unmittelbar hinter einer Attributdefinition stehen: – not null: Das Attribut darf nicht undefiniert sein in DBS: undefinierte Werte heissen null-Werte – primary key: Das Attribut ist Primärschlüssel (nicht bei zusammengesetzten Schlüsseln) – unique: Das Attribut ist Schlüsselkandidat – references t1 (a1): Ein Verweis auf Attribut a1 von Tabelle t1 – default w1: Wert w1 ist Default, wenn unbesetzt. – check f: Die Formel f wird bei jeder Einfügung überprüft, z.B.: check A <= 100
- Intergritätsbedingungen • Zusätze, die keinem einzelnen Attribut zugeordnet sind, stehen mit Komma abgetrennt in extra Zeilen – primary key (A1, A2, ...): Zusammengesetzter Primärschlüssel – unique (A1, A2, ...): Zusammengesetzter Schlüsselkandidat – foreign key (A1, A2, ...) referencest1 (B1, B2, ...) Verweis auf zusammengesetzten Schlüssel in Rel. T1 Anmerkung: Fehlt die Angabe (B1, B2, ...) hinter t1 so wird automatisch (A1, A2, ...) eingesetzt. – check f
- Schlüssel Definitonen • primary key (a1,a2), definiert den Primärschlüssel. • unique (a3,a4), definiert einen weiteren Schlüsselkandidaten. • foreign key (a5,a6) referencesB (b1,b2) definiert einen Fremdschlüssel. – Tupel in A ohne gültigen Partner in B nicht erlaubt – Ohne weiteren Zusatz nicht möglich, Tupel in B, auf die durch in Tupel in A verwiesen wird, zu löschen oder die Werte von b1,b2 zu verändern
- Schlüssel-Definitionen Löschen eines Tupels in B mit Referenzen nicht möglich. Es gibt aber verschiedene Zusätze: • foreign key (a5,a6) referencesB (b1,b2) on delete cascade -Löschen eines Tupels in B führt auch zum Löschen der entsprechenden Tupel in A • on update cascade -Verändern eines Tupels in B führt zum Verändern in A • on delete set null „hängende Verweise“ werden ggf. auf null gesetzt.
- Tabellendefinition • Das Schlüsselwort on delete cascade in Haelt führt dazu, dass bei Löschen eines Dozenten auch entsprechende Tupel in Haelt gelöscht werden • Weitere Konstrukte der Data Definition Language: – drop table n1 Relationen-Schema n1 wird mit allen evtl. vorhandenen Tupeln gelöscht. – alter table n1 add (a1 d1 c1, a2 d2 c2, ...) • Zusätzliche Attribute oder Integritätsbedingungen werden (rechts) an die Tabelle angehängt • Bei allen vorhandenen Tupeln Null-Werte – alter table n1 drop (a1 , a2 , ...) – alter table n1 modify (a1 d1 c1, a2 d2 c2, ...)
- Wiederholung Relation als ausschließliches Strukturelement – Darstellung der Relationen durch Tabellen – Datensätze = Zeilen der Tabelle (Tupel) ¨ – Merkmale des Objekts = Spalten der Tabelle (Attribute)
- Query By Example (QBE) • Beruht auf dem Bereichskalkül • Ausdrücke nicht wie in SQL als Text • Dem Benutzer wird am Bildschirm ein Tabellen-Gerüst angeboten, das mit Spezial-Editor bearbeitet werden kann • Nach Eintrag von Werten in das Tabellengerüst (Anfrage) füllt das System die Tabelle • Zielgruppe: Gelegentliche Benutzer
- Architektur eines DBS Drei-Ebenen-Architektur zur Realisierung von – physischer – und logischer Datenunabhängigkeit (nach ANSI/SPARC)
- Externe Ebene • Gesamt-Datenbestand ist angepasst, so dass jede Anwendungsgruppe nur die Daten sieht, die sie... – sehen will (Übersichtlichkeit) – sehen soll (Datenschutz) • Logische Datenunabhängigkeit • In SQL: Realisiert mit dem Konzept der Sicht(View)
- Was ist eine Sicht (View)? • Virtuelle Relation • Was bedeutet virtuell? – Die View sieht für den Benutzer aus wie eine Relation: select ... from View1, Relation2, ... where ... mit Einschränkung auch: insert, delete und update – Aber die Relation ist nicht real existent/gespeichert; Inhalt ergibt sich durch Berechnung aus anderen Relationen • Besteht aus zwei Teilen: – Relationenschema für die View (nur rudimentär) – Berechnungsvorschrift, die den Inhalt festlegt: SQL-Anfrage mit select... from ... where
- Viewdefintion in SQL • Das folgende DDL-Kommando erzeugt eine View create [or replace] view VName [(A1, A2, ...)]* as select...
- Konsequenzen • Automatisch sind in dieser View alle Tupel der Basisrelation, die die Selektionsbedingung erfüllen • An diese können beliebige Anfragen gestellt werden, auch in Kombination mit anderen Tabellen (Join) etc: select * from Buchhalter where Name like ‘B%‘ • In Wirklichkeit wird lediglich die View-Definition in die Anfrage eingesetzt und dann ausgewertet: Buchhalter: select PNr,Name,Gehalt from Mitarbeiter whereANr=01 → select * from Buchhalter where Name like ‘B%‘ → select * from ( select PNr, Name, Gehalt from Mitarbeiter where ANr=01 ) where Name like ‘B%‘
