Zusammenfassung Datenbanksysteme I Prof. Küspert, Zusammenfassung Fabian Stutzki 20. Juli 2008 Diese Zusammenfassung umfasst die Vorlesung Datenbanksysteme I und II (2007/2008). Bei Fehlern bitte ich um Korrekturhinweise. Inhaltsverzeichnis 1 Datenverwaltung mit Dateisytemen 5 1.1 Sequentielle Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2 Indexsequentielle Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Hash-Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4 Probleme der Datenverwaltung in Dateien 5 . . . . . . . . . . . . . . . . . . . 2 Funktionalität von Datenbanksystemen 6 2.1 Grundlegende Anforderung 2.2 Datenbank / Datenbanksystem / Datenbankmanagementsystem 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 . . . . . . . 7 2.2.1 Datenbanksystem-Betriebsmodi . . . . . . . . . . . . . . . . . . . . . 7 2.2.2 Datenintegrität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3.1 ANSI/SPARC - 3 Ebenen . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3.2 DIAM - 4 Ebenen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3.3 5 Schichten 51 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Datenbank-Architekturen 3 Datenmodellierung im Entity-Relationship-Modell (ERM) 8 3.1 Entity / Entitytyp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 Schlüssel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.3 Beziehungen / Beziehungstypen . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 ER-Diagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 10 3.4.1 Kardinalität / Komplexität 3.4.2 schwache Entitytypen . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4.3 Erweiterungen für Attributen 10 . . . . . . . . . . . . . . . . . . . . . . 10 3.4.4 Spezialisierung und Generalisierung . . . . . . . . . . . . . . . . . . . 11 3.4.5 Attribute und Beziehungstypen als Entitytypen . . . . . . . . . . . . . 11 1 4 Hierarchisches Datenmodell 4.1 Eigenschaften / Beziehungen 4.1.1 4.2 4.3 11 . . . . . . . . . . . . . . . . . . . . . . . . . . 12 virtuelle Entitytypen . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Bemerkungen zum HDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . IMS als Beispiel für ein HDM . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.3.1 IMS-Notation und -Terminologie 13 4.3.2 Database Denition Language (DDL) 4.3.3 Data Language / One (DL/1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 . . . . . . . . . . . . . . . . . . . . . 13 5 Netzwerk-Datenmodell 5.1 5.2 Set-Typen 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vom ER-Modell zum NDM 5.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14 14 5.2.2 Rekursive 1:n Beziehungen 5.2.3 Nichtrekursive n:m Beziehungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2.4 Rekursive n:m Beziehungen . . . . . . . . . . . . . . . . . . . . . . . 15 5.2.5 Mehrstellige Beziehungstypen . . . . . . . . . . . . . . . . . . . . . . 15 Grundsätzliche Eigenschaften des NDM (Vergleich zum HDM) 5.4 Beispielschema eines NDM . . . . . . . . 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 6 Relationales Datenmodell 6.2 6.3 . . . . . . . . . . . . . . 17 6.1.1 Schlüssel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.1.2 Vom ER-Modell zum relationalen Modell . . . . . . . . . . . . . . . . 17 Sprachen für das relationale Modell: Relationenalgebra und Relationenkalkül Relationenalgebra 6.3.6 6.3.7 Zusammengesetzte Beispiele in Relationenalgebra 6.3.3 6.3.4 6.3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P JAttr R oder πAttr R . . Selektion: SLF R oder δF R . . . . . Verbund (Join): R JNF S . . . . . . Vereinigung (Union): R U N S . . . Durchschnitt (Intersection): R IN S Dierenz: R DF S . . . . . . . . . . 6.3.2 6.5 16 Begrie und Eigenschaften des relationalen Modells 6.3.1 6.4 14 Nichtrekursive 1:n Beziehungen . . . . . . . . . . . . . . . . . . . . . 5.3 6.1 12 Projektion: 18 19 . . . . . . . . . . . . . . . . . . 20 . . . . . . . . . . . . . . . . . . 20 . . . . . . . . . . . . . . . . . . 20 . . . . . . . . . . . . . . . . . . 20 . . . . . . . . . . . . . . . . . . 20 . . . . . . . . . . . . . . . . . . 20 . . . . . . . . . . . 20 Relationenkalkül . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.4.1 . . . . . . . . . . . . . . . . . . . . . . 21 . . . . . . . . . . . . . . . . . . . . . . . 21 6.5.1 Create Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.5.2 Create Domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.5.3 Alter Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.5.4 Drop Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.5.5 Create / Drop Index . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Beispiele im Relationenkalkül Structured Query Language (SQL) 6.5.6 Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.5.7 Delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.5.8 Insert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2 6.5.9 Select from where . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 6.5.10 Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 6.5.11 Sichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 6.5.12 Zugrisrechte 23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Transaktionen / Fehlerbehandlung 23 7.1 ACID-Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 7.2 Fehlerszenarien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Bemerkungen 24 7.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.1 Checkpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 7.3.2 Dirty Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 7.3.3 Page Cleaner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 7.3.4 Steal / No Steal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 7.3.5 Write-Ahead Logging . . . . . . . . . . . . . . . . . . . . . . . . . . 25 7.3.6 Group Commit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 7.3.7 Datenvolumen der Log-Dateien . . . . . . . . . . . . . . . . . . . . . 25 7.3.8 Backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 7.3.9 Force / No Force . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 7.3.10 Atomic / Not Atomic . . . . . . . . . . . . . . . . . . . . . . . . . . 26 8 Synchronisation im Mehrbenutzerbetrieb 26 8.1 Fehlerklassen und Probleme bei unkontrolliertem Mehrbenutzerbetrieb . . . . 26 8.2 Concurrency Control / Synchronisation . . . . . . . . . . . . . . . . . . . . . 26 8.3 8.4 8.5 Pessimistic Concurrency Control (PCC) . . . . . . . . . . . . . . . . . . . . . 26 8.3.1 Sperr- und Freigabestrategien . . . . . . . . . . . . . . . . . . . . . . 26 8.3.2 Sperrgranulate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 8.3.3 Sperrmodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 8.3.4 Sperrhierarchie / Intention Locks . . . . . . . . . . . . . . . . . . . . 27 8.3.5 Sperreskalation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 8.3.6 Sperrgraph / Wartegraph . . . . . . . . . . . . . . . . . . . . . . . . 27 Optimistic Concurrency Control (OCC) . . . . . . . . . . . . . . . . . . . . . 28 8.4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Kurzzeitsperren / Latches . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 BOCC / FOCC 9 Embedded SQL / API 9.0.1 9.1 9.2 . . . . . . 28 Precompiler / Vorübersetzung . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Cursor-Konzept 29 9.2.1 9.3 28 Konzepte für Datenbankzugri aus Anwendungsprogramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programmstruktur mit Cursor am Beispiel von ESQL dynamisches ESQL . . . . . . . . . 30 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3 10 Normalformen / Erweiterungen 30 10.0.1 Probleme nichtadäquater Datenmodellierung . . . . . . . . . . . . . . 10.1 Normalformen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2 Funktionale Abhängigkeiten / Functional Dependencies 10.3 weiteres 30 31 . . . . . . . . . . . . 31 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4 - Externspeicher heißt Magnetplatte (Sekundärspeicher), 1 Datenverwaltung mit Dateisytemen Magnetband, opt. Speicher o.ä. (Tertiärspeicher) Dateien, für die ein schneller (u. ggf. wahlfreier) Zugriff („random Datei: geordnete (meist homogene) Sammlung von Datensätzen, access“) benötigt wird, müssen auf Magnetplatte stehen, andernfalls wendung in Felder strukturiert können auch (kostengünstigere) Tertiärspeicher Verwendung finden - Felder / Struktur heißt, dass ein Datensatz sich aus Sicht der Sortierung: entweder entry sequenced (Einfügereihenfolge) oder Anwendung(!) nicht einfach als „byte string“ darstellt, sondern als einem Schlüsselwert) strukturierteslich Gebilde. Bsp.: satz Buchungs- Betrag Kto- Zahlungsnr. nr. empfänger 3 Bytes 4 Bytes 2 Bytes meist aus Sicht der An- key sequenced (bezüg- ... 16 Bytes Felder 1 ... 4 N.B.: So sieht das Anwendungsprogramm bzw. der Benutzer den Datensatz bzw. interpretiert ihn in dieser Form; das Betriebssystem (Dateisystem) ist u.U. viel „dümmer“, hat doch nur die Sicht des langen „byte strings“ (Datensatz =Datensätze 1 „byte string“), kennt keine Felder sequentiell (fortlaufend) abgelegt, Ordnung durch 1.1 Sequentielle Datei Zugri auf die Daten Datenbanksysteme 1 22.10.2007 Einfügereihenfolge entstanden, 22 bei variabel langen Datensätzen: nur sequentielle Suche möglich bei fest langen Datensätzen: wahlfreier Zugri oder über Sortierkriterium (bsp. Personalnummer oder Name) 1.2 Indexsequentielle Datei Datensätze oder Verweise auf Daten in den Blättern eines Baumes abgelegt, meist als B*Baum realisiert, nur ein Sortierungskriterium möglich, Zugri sequentiell oder wahlfrei über das im Baum gegebene Schlüsselfeld 1.3 Hash-Datei Ein Feld wird als Schlüsselfeld festgelegt, eine Hashfunktion rechnet diese in Speicheradressen um, Zugri wahlfrei mit Schlüsselwert oder (je nach Implementierung auch) sequentiell 1.4 Probleme der Datenverwaltung in Dateien vgl. Anforderungen in Abschnitt 2.1 schneller Zugri nur über indexsequentielle oder Hash-Dateien möglich, Anwendung muss diesen Zugri direkt implementiert haben (Datenunabhängigkeit!) keine hohe Verfügbarkeit: Datenverlust auf der Platte, Datenreorganisation keine Flexibilität bei Datenzugri oder -auswertung keine integrierte Auswertbarkeit über Abfragesprache 5 ein Zugri pro Datei, besonders bei Schreibvorgängen Zugrisberechtigung nur auf Dateiebene, nicht Wertbasiert (nur Mitarbeiter mit PNr < 500) 1.4 Datenbanksysteme u. ihre Eigenschaften und Terminologie im Überblick 2 Funktionalität von Datenbanksystemen 1.4.1 Datenbank/Datenbanksystem/Datenbank-Verwaltungssystem (DBVS, DBMS) konkrete Datenbank + DBMS = Datenbanksystem Begriffliche Abgrenzung und Einordnung Benutzer Client DBVS ! DBMS DatenbankVerwaltungssystem (DBVS) liegt üblicherweise auf separatem DB-Server BS Datenbanksystem Dateiverwaltung no n o ClientServer Datenbank Bemerkung dazu: Datenbankverwaltungssystem DBVS (= Datenbankmanagementsystem DBMS) • DBVS* (auch Database Management System (DBMS) genannt) verwaltet denverwaltete Datenbestand Datenbestand; alle Zugriffe zum Datenbestand (anlegen, lesen, einfügen, ändern, löschen) gehen ausschließlich über das DBVS, d.h. DBVS übt vollständig Kontrolle alle Zugrie nur aus über das DBMS über Datenbestand * in seltenen Fällen auch Datenbank-Betriebssystem genannt Struktur: Primärdaten, Indexe, Beschreibungsinformationen Datenbanksysteme talog / 1Data Dictionary) (Metadaten, Datenbankka- 24.10.2007 32 DBMS kann aktiv Änderung von Datenbeständen beim Eintreten von Bedingungen durchführen Programme / gespeicherte Prozeduren (stored procedures) 2.1 Grundlegende Anforderung Persistente Datenhaltung: Speicherung auf nichtüchtigen Speichern (Magnetplatte, Ma- gnetband oder optische Speicher) Datenkapazität: Performance: Giga-, Tera- oder Petabytes, möglichst nur durch physischen Platz begrenzt Sehr schneller Zugri zum Lesen und Bearbeiten, möglichst ohne sequentielle Suche Verfügbarkeit: 24-7-Betrieb z.B. für Flugbuchungssysteme oder Banken 6 integrierte Auswertbarkeit (Flexibilität): Abfragen wie Welche Mitarbeiter der Firma sind seit über 10 Jahren im Unternehmen und haben Kurse ... Datenverteilung (Flexibilität): Mitarbeiterdaten in Hamburg, Kursdaten in Frankfurt, Pro- jektdaten in Dresden, aber trotzdem integrierte Auswertung Lastverteilung (Flexibilität): Von mehreren Rechern soll auf einen Datenbestand zugegrif- fen werden können (transparent für den Benutzer) Benutzerfreundlichkeit: leicht erlernbare, aber dennoch mächtige Abfragesprache Sicherheit vor Datenverlust: Auch bei plötzlichem Systemausfall kein irreversibler Daten- verlust (oder zumindest in wohl denierten Grenzen) Zugrisrechte: möglichst feine und präzise Einstellung für Datenzugrisrechte Paralleler Zugri: mehrere Benutzer arbeiten auf einem Datenbestand ohne dass Konikte auftreten (logischer Einbenutzerbetrieb trotz physikalischem Mehrbenutzerbetrieb) semantische Integrität: Datenunabhängigkeit: automatisch vom System garantiert Strukturelle Änderung am Datenbestand, soll nach auÿen nicht sicht- bar werden. XXX noch 33 2.2 Datenbank / Datenbanksystem / Datenbankmanagementsystem 32 2.2.1 Datenbanksystem-Betriebsmodi Unterscheidung zwischen Online Transaction Processing (OLTP): viele kurze Verarbeitungsvorgänge, schnelle Ant- wortzeit (Buchung) Online Analytical Processing (OLAP): wenige lange Zugrie, häug aggregierte (aufge- sammelte) Daten, vorwiegend lesend (Verkehrsanalyse) 2.2.2 Datenintegrität Unterscheidung zwischen physische: logische: Daten in sich korrekt (DBMS überwacht dies selbstständig) bezüglich externen Bedingungen (z.B. Gehalt < 7000) und muss daher explizit programmiert werden (Integritätsbedingungen) 7 2.3 Datenbank-Architekturen 2.3.1 ANSI/SPARC - 3 Ebenen Entstanden in den 1970er Jahren 3 Ebenen externes Schema: Wie dem Nutzer präsentiert? Teilsichten - Benutzer konzeptuelles Schema: Was gespeichert? (logische, möglichst systemunabhängige und anwendungsunabhängige Ebene (Tabellen, Attribute, Beziehungen, Entity-Relationship)) - Anwendungsadministrator internes Schema: Wie werden Daten gespeichert? (systemspezisch, physische Dar- stellung, internes Satzformat, Zugrispfade ...) - Datenbankadministrator Datenunabhängigkeit: Änderungen am internen Schema haben keine Auswirkung auf konzeptuelle / externe Sicht oder können verborgen werden (VIEW-Denition) Datenbanksystemunabhängigkeit: Von DBMS-Produkt X auf Y nur internes Schema verändert, falls normkonform keine Auswirkungen auf höhere Ebenen 2.3.2 DIAM - 4 Ebenen Entity: Ein Objekt der realen Welt, das in der Datenbank dargestellt wird. Auf oberster Ebene werden Objektmengen (Entitätsmengen) dargestellt und verwaltet String Model: DBMS kennt logische Zugrispfade (z.B. Index auf PNr, Datensätze intern nach ANr sortiert ...) Encoding Model: Beschreibt wie Daten im Speicher physisch darfestellt werden (z.B. Index auf PNr ist ein B*-Baum mit fest langen Einträgen je 4 Byte ...) Physical Device Model: Dateisystem (Tabelle Personen steht in Datei xyz auf Platte D001 ...) 2.3.3 5 Schichten 51 xxx 3 Datenmodellierung im Entity-Relationship-Modell (ERM) 3.1 Entity / Entitytyp Entity / Entität: bestimmtes, wohl unterscheidbares Objekt der realen Welt 8 Entitytyp / Entitätstypen: Menge alle möglichen Entities mit gleichen charakterisierenden Merkmalen, z.B.Angestellter Meier und Müller sind Entities, dann bilden sie Entitytyp ANGEST Verschiedene Entitytypen müssen nicht unbedingt disjunkt sein (z.B. PERSON und STUDENT) entity set: tatsächlich vorhandene Entitymengen (endlich) Attribute: Entitiytypen E werden Attributmengen A zugeordnet (z.B. {PNr, Name, Vorna- me, Gehalt ...}), Name ist beispielsweise ein Attribut Attributwerte: einem einzelnen Entity e sind entsprechende Attributwerte a (z.B. 17, Meier, Hans, 1050 ¿ ...) zugeordnet Wertebereiche / Domänen: Jedem Attribut ist ein Wertebereich (Domäne) zugeordnet (z.B. dom(PNr) = INTEGER, dom(Name)=VARCHAR, dom(Haarfarbe)={blond, blau ...}) 3.2 Schlüssel Schlüssel ermöglichen eine eindeutige Identizierung eines Entities innerhalb eines Entitytyps, also innerhalb aller möglichen Entitites. (z.B. künstlicher Schlüssel PNr) Schlüssel K bestehend aus Schlüsselattributen, dann muss Minimalität oft gefordert, d.h. K⊆A @K 0 ⊂ K : K 0 Schlüssel Häug gibt es meherere mögliche Schlüssel (auch bei Minimalitätsforderung) die als Schlüsselkandidaten bezeichnet werden, genau einer wird als Primärschlüssel ausgewählt 3.3 Beziehungen / Beziehungstypen Beziehungen: bestehen zwischen einzelnen Entities verschiedener oder gleicher Entitytypen Beziehungstyp: die Menge aller möglichen Beziehungen (z.B. kartesisches Produkt ARBEI- TET_AN = ANGEST x PROJEKTE) relationship set: tatsächlich vorhandene Beziehungsmengen 1:1 Beziehungstyp: XXX n:1 Beziehungstyp: n:m Beziehungstyp: (many to many relation ship type) Integritätsregeln: 1. von jeder Beziehung genau eine Kante (beim zweistelligen Beziehungstyp) 2. nicht jeder Entity muss in einer Beziehung stehen 3. jede Beziehung nur einmal, r1 = (e, e0 ) = r2 verletzt 9 nicht möglich, da Mengeneigenschaft 3.4 ER-Diagramme Ausschnitt der realen Welt Miniwelt Beziehungstyp Titel Zeitplan Entitätstyp liest/wird gelesen Professor Vorlesung Entitätstyp Name Semester Fach Telefon# empfiehlt/wird empfohlen zu Autor Attribute Buch Titel Hinweis: Dies ist ein ISBN unvollständiges EntityRelationship-Diagramm Zusätzliche Erweiterungen des E/R-Modells (warum?) Datenbanksysteme 1 nicht vollständig, 24.10.2007 da Schlüsselkennzeichnung sowie der E/R-Diagrammdarstellung Entitätstyp fehlt 55 1. Erweiterungen bei Attributen 3.4.1Attribute Kardinalität a) Optionale / Komplexität 3 4Optionale Beziehungen 56),,78+9:+;<,=>25?@A:+2%'>B2C,*:*022+! ! C22 (min,max)-Notation darf :,28+9:+;<,=2D2/*+;+,29<2C,*:*02+" ! CEF2muss )-+D2,:G;*H2 1:n-Notation 8/I#B2J:*)D-+:*2K@,2L,=+/*+AA*+,2:,2MD@N+.*+,O2 3 Optionales AttributB2 3.4.2 schwache Entitytypen L**D:-<*2+P:/*:+D*2QRD2C,*:*0*0I2-9S#28+9:+;<,=/*0IF2muss aber nicht für jedes Entity / jede Beziehung einen definierten Wert annehmen 3.4.3b)Erweiterungen für Attributen Strukturierte Attribute 51#)#T#B2)A/2T+D*2+P:/*:+D+,> 3 Strukturiertes Attribut /+*4*22/5672)8/2),9+:+,2;**:5-8*+,2 optionale Attribute 3 Graphische Notation (Bsp.:) <=+5,>)67+:+,? ;**:5-8*+,@248/)11+,22 (Primär-)Schlüssel dürfen ANGEST nicht opt. 5,27E7+:+,2F:BG:)115+:/H:)67+,@ sein. <A2:+6B:9C B9+:2/*:86*CDB,/*:8.* optionales Attribut 3 Engl.: composite attribute MVW T+;DU:+,/*XK@,X-:/ 3 (5+2Komponenten +5,+/2/*:8.*8:5+:*+,2;**:5-8*/2/5,92!@2benannt 8,92 "@25#9#I#2-+4JGK567257:+:2(B1L,+,2<M+:*+-+:+567+@2inhomogen 5?RD2+:,+ weibliche L,=+/*+AA*+2+P:/*:+D*2U:+2T+;DU:+,/*),=)-+2,:G;*# 3 GraphischeAttribute Notation (Bsp.:) 5S)D21)A2QDR;+D2/@2:,2(+<*/G;A),U##>2C,*/ID+G;+,U2-+:28+9:+;<,=/*0I+, strukturierte ()*+,-),./0/*+1+2! !"#!!#"$$% &' ANGEST ! atomares Attribut ;9:+//+ FNI FOP ODP S:* nichtatomares strukturiertes Attribut Q*:)R+ Attribut T)8/,811+: (Teil)attribut FOPU 3 M+5*+:+2Schachtelung 1EGK567 3 ;8672)K/2,567*2)*B1):+/2;**:5-8*2-+4+567,+* ()*+,-),./0/*+1+2! !"#!!#"$$% 10 &' c) Mengenwertige Attribute 3 Mengenwertige Attribute4222Attributwert = Wertemenge 562/+*789,/*:;.*2<,2=>=+:+,2?@A 3 Engl.: multivalued attribute 3 (<+2Elemente B+:2C+:*+1+,D+2+<,+/21+,D+,E+:*<D+, F**:<-;*/2/<,B2 !A2unbenannt ;,B2"A2-+GHDI<J=2<=:+:2(91K,+25C+:*+-+:+<J=/A2homogen 3 Graphische Notation (Bsp.:) mengenwertige Attribute berechnete d) Virtuelle Attribute (auch abgeleitete Attribute genannt) ANGEST nichtatomares ! ! ! 2 Nicht real gespeichert 340()*56(76.6*5)891(7.1:*5);1.<+=*5+1=>5?@1 mengenwertiges Attribut A*5*?@+>+B.C<5.?@56D)1*506))*7) ?UT V+I+W9,X 2 Engl.: derived attribute 2 Graphische Notation (Bsp.:) 3 C+<*+:+2Schachtelung 1>DI<J=L2);J=2<,2M+:-<,B;,D21<*2strukt. Attribut virtuelle Attribute 5G#N#42O+,D+2P9,2FB:+//+,A virtuell virtuell 2. Erweiterung um Spezialisierung sinnvoll und Generalisierung, „nötig“ 3 F;J=2)I/2,<J=*)*91):+/2F**:<-;*2-+G+<J=,+* ANGEST Sub- und Supertypen IS-A-Beziehung, • Hinweis: Spezialisierung und Generalisierung sind – wie auch schon Q<,E+</2G;:2M9:/<J=*4 QRS K*@(7) K*,G'() H(@5*.B*@(7) L7)*5 optionale/strukturierte/mengenwertige/berechnete Attribute – O<*2strukturierten ;,B2mengenwertigen Attributen /9II*+2<12RST7O9B+II2 Bestandteil sog. erweiterter E/R-Modelle virtuelle Attribute wohlüberlegt ;1D+D),D+,2E+:B+,L2E+<I4 K*@(7).0<+()* Semantische Datenmodelle ()*+,-),./0/*+1+2! !"#!!#"$$% &' ( „extended entity-relationship models angegeben ) 2 '6*1Berechnungsvorschrift 0>..1mit E*5=*+;1F#A# Generalisierung istund die Bildung eines allgemeineren („generischen“) G H(@5*.B*@(7)1IJ1K*@(7)1! K*@(7).0<+()* 3.4.4 •Spezialisierung Generalisierung Entitytyps aus einer Anzahl „ähnlicher“ G L7)*51IJ1L-)>*77*.1'()>01M K*,G'() Entitytypen Beispiel: Die Beziehung ⇒wird auch =(5D1B5>+=.N)F76?@1beliebig als IS-A-Beziehung bezeichnet 2• '6*1Berechnungsvorschrift komplex .*6+;1.6*10>..1.6?@1C<51(77*01+6?@)1>+,*=6+B)1+>51(>D1L))56,>)E*5)*1=*.1 MITARBEITER Spezialisierung Generalisierung B7*6?@*+1O+)6)6*.1,*F6*@*+13E6*1601<,6B*+1A*6.P6*71F>DN776B1B*B*,*+9;1 '()*+,(+-./.)*0*1! ANGEST ARBEITER !"#!!#"$$% && Der umgekehrte Vorgang wird als Spezialisierung bezeichnet. • Die entstehende Beziehung „!“ wird auch als IS-A-Beziehung bezeichnet: Jeder Angestellte ist ein Mitarbeiter, jeder Arbeiter ist ein Arten von Generalisierung und Spezialisierung Mitarbeiter. Vererbung aller Attribute des Vaters auf die Kinder Datenbanksysteme 1 19.11.2007 91 disjunkte Subtypen: Mitarbeiter, Verkäufer, Schreibkraft, Mechaniker nicht disjunkte Subtypen (überlappend): Fussballvereinsmitglieder, Spieler, Trainer Vollständigkeit / Unvollständigkeit der Subtypbildung 3.4.5 Attribute und Beziehungstypen als Entitytypen XXX S. 100 4 Hierarchisches Datenmodell zu modellierende Miniwelt wird ausschlieÿlich mit Hierarchien (entspricht Datenbanken) dargestellt Typebene Dabei Ordnungsreihenfolge der Kinder von Bedeutung (Abarbeitungsreihenfolge: lin- Bsp.: Erweiterung des zu modellierenden Miniweltausschnitts um über Rechnungen und Rechnungsposten Darstellung im HDM • Typebene KUNDE ker dann rechter Sohn) Informationen AUFTRAG RECHNUNG AU-POS RE-POS Baum • Ausprägungsebene (Instanzenebene, Satzebene) (Entity-Ebene) Lüdenscheid " Einstiegspunkte Müller 11 Meyer A1 AU-Pos11 AU-Pos12 A2 AU-Pos21 Wald A3 AU-Pos11 Jeder untergeordnete Satz (Sohn, Kind) ist genau einem übergeordneten Satz (Vater) zugeordnet; ! keine Waisenkinder [zum untergeordneten Satz greift man über den übergeordneten Satz zu] Datenbanksysteme 1 26.11.2007 113 Bsp.: Erweiterung des zu modellierenden Miniweltausschnitts um Informationen über Rechnungen und Rechnungsposten Darstellung im HDM • Typebene KUNDE AUFTRAG RECHNUNG AU-POS RE-POS Baum Ausprägungsebene / Instanzebene / Satzebene • Ausprägungsebene (Instanzenebene, Satzebene) (Entity-Ebene) Lüdenscheid " Einstiegspunkte Müller Meyer A1 AU-Pos11 Wald A2 AU-Pos12 A3 AU-Pos21 AU-Pos11 Jeder untergeordnete Satz (Sohn, Kind) ist genau einem übergeordneten Satz (Vater) zugeordnet; ! keine Waisenkinder [zum untergeordneten Satz greift man über den übergeordneten Satz zu] 4.1 Eigenschaften / Beziehungen Datenbanksysteme 1 26.11.2007 Jeder Entitytyp gehört zu genau einer Hierarchie oberster Entitytyp wird als Wurzeltyp bezeichnet für den Wurzeltyp existiert ein Primärschlüssel 113 4.1.1 virtuelle Entitytypen Zwei gleiche Entitytypen in zwei Hierarchien nicht zulässig, daher virtuelle Entitytypen einführen 2. Einführung von sog. virtuellen Entity(Satz)typen 1. Beispiel ABTEILUNG ANGEST POSITION Zeiger virtueller ANGEST oder: 4.2 Bemerkungen zumABTEILUNG HDM virtueller POSITION Zeiger ANGEST kein direkter Zugri aufANGEST einen beliebigen Entity möglich, lediglich auf Wurzelebene des Idee: Baums • Nur in einer Hierarchie existieren die ANGEST-Entities physisch (d.h. sind sie tatsächlich gespeichert) entspricht Verarbeitungsmodell auf Dateiebene • Aus anderen Hierarchien heraus wird auf diese Entities per Zeiger Operation gehe zum Vater nicht benötigt, da nach Top-Down-Vorgehensweise der verwiesen Vater ohnehin vorher besucht (vollständiger hierarchischer Pfad) • Die Benutzer sehenwurde diese Form der unterschiedlichen Realisierung (mal physisch direkt gespeichert, mal nur über Zeiger referenziert) nicht! (lediglich der Datenbankadministrator/Anwendungsadministrator bekommt sie zu sehen bzw. muss sie definieren) ! 4.3 IMS als Beispiel für ein HDM Datenbanksysteme 1 Information Management System (von IBM) 26.11.2007 123 erweitertes hierarchisches Datenbankmodell Ende 1960er eingeführt auch heute noch weit verbreitet, meist Koexistenz und nur langsame Ablösung hohe Stabilität hohe Performance 12 4.3.1 IMS-Notation und -Terminologie Knoten in der Typhierarchie werden Segments genannt jedes Segment besteht aus Feldern ein ausgezeichnetes Wurzel-Segment (root segment), die anderen als abhängige Segmente (dependent segments) weitere Begrie: Vater-Segment, Kind-Segment, Geschwister-Segment 4.3.2 Database Denition Language (DDL) XXX 4.3.3 Data Language / One (DL/1) one record at a time GET UNIQUE (GU): Direktes Positionieren auf bestimmtem record und Lesen GET NEXT (GN): Zugri auf nächsten record GET NEXT WITHIN PARENT (GNP): wie GN, aber nur innerhalb des aktuellen Vaterrecord GET HOLD (GHU): Zugri auf einen record, um ihn anschlieÿend zu ändern INSERT (INSRT): Einfügen eines neuen records DELETE (DLET): Löschen eines records (zuvor GET HOLD) REPLACE (REPL): Ändern eines records (zuvor GET HOLD) 5 Netzwerk-Datenmodell NDM von vornherein mit dem Ziel entstanden einen nichtproprietären Ansatz zu entwickeln (anders als HDM), an CODASYL waren viele Hersteller beteiligt Ziel Spezikation von DDL und DML ab Anfang der 1970er Jahre 13 5.1 Set-Typen Zweistelliger Beziehungstyp wobei R 6= S zwischen Record-Typ R (Owner) und Graphisch im sogenannten Bachman-Diagramm implizit 1:n-Beziehungstyp Aus Ausprägungsebene (occurrences): Zu jeder Record Occurrence zit eine Set Occurrence R0 (Member), R0 s∈S und jeder r 0 ∈ R0 r∈R gehört maximal zu einer Owner Record zu jedem Member Record eindeutig deniert ⇒ gehört impli- s∈S Set Occurences sind Baum-Ausprägungen Waisenkinder grunsätzlich erlaubt Ordnung: Es existiert immer eine Ordnung (Einfügereihenfolge oder Sortierkriterium) der Member-Sätze, in der sie wieder aufgefunden werden (FIND NEXT ... WITHIN SET ...) Implementierung Verkettete Implementierung (MODE IS CHAIN) mittels Zeigertabelle (MODE IS POINTER-ARRAY) via Memberliste (MODE IS Modellierung vonLIST) Beziehungen im NDM oder: Vom E/R-Modell zum NDM I. Nichtrekursive 1:n Beziehungen E/R-Diagramm ABTEILUNG 5.2 Vom ER-Modell zum NDM (0,*) 5.2.1 Nichtrekursive 1:n Beziehungen 1 hat Modellierung von Beziehungen im NDM oder: Vom E/R-Modell zum NDM (0,1) n ER-Diagram Netzwerk-Datenmodell (Bachman-Diagram) MITARBEITER I. Nichtrekursive 1:n Beziehungen E/R-Diagramm ABTEILUNG im Netzwerk-Datenmodell (0,*) 1 ABTEILUNG hat (Bachman-Diagramm) (0,1) hat n MITARBEITER MITARBEITER hat im Netzwerk-Datenmodell Was macht man, ABTEILUNG (Bachman-Diagramm) wenn? 5.2.2 Rekursive 1:n Beziehungen a) (1,1) MITARBEITER hat MITARBEITER direkte Rekursion im NDM nicht erlaubt, daher Lösung: b) Was macht man, 5.2.3 wenn? Ket-Record-Typ XXX 152 ABTEILUNG (1,*) hat „Waisenverbot“ kann mittelshat Nichtrekursive n:m (1,1) Beziehungen a) DDL-Klausel bei Set Type MITARBEITER Datenbanksysteme 1 03.12.2007 Bachman-Diagramm im V-Schema Definition vereinbart werden b) ABTEILUNG (1,*) hat Datenbanksysteme 1 nicht per DDL spezifizierbar ! muss von Anwendung überwacht werden! 03.12.2007 150 14 „Waisenverbot“ kann mittels DDL-Klausel bei Set Type Definition vereinbart werden nicht per DDL spezifizierbar ! muss von Anwendung überwacht werden! 150 Lösung: Wiederum Kett-Record-Typ (plus 2 Set-Typen) LIEFERANT oder: LIEFERANT liefert liefert_TEIL Menge liefert wird_geliefert wird liefert liefert_TEIL IV. Rekursive n:m Beziehungen TEIL Fertigteil Beispiel: Stückliste A Bachman-Diagramm 1 Baugruppe Ausprägungsebene 3 L1 B TEIL Menge „DAG“ „V-Schema“ gerichteter azyklischer L4 Graph L3 4 C 7 1 5 2 L2 D E 5.2.4 Rekursive n:m Beziehungen Einzelteil F liefert Kett-RecordL1,T1,20 L1,T2,7 L1,T3,9 L2,T1,100 L2,T1,100 L3,T4,10 z x y bedeutet: z Exemplare {der that Baugruppe des Teils X} gehen Occurrence(sonst Kanten Gozinto-Graph (Zeparzat Gozinto - the part goes x, into), Waisenverbot in eine Baugruppe y ein wird_geliefert ohne Knoten) T1 T2 T3 T4 sog. Gozinto-Graph ! T5 goes into „Zeparzat Gozinto“ - the part that • Kett-Record-Occurrences enthalten LNr, TNr, Menge E/R-Diagramm Bachman-Diagramm Datenbankschema imgesp. NDM redundant, deshalb nicht TNr • 1 Kett-Record-Occurrence pro Lieferung (Beziehungsausprägung) TEIL zwischen Lieferant und Teil) Teil Datenbanksysteme 1 03.12.2007 (0,!) 155 ist_enthalten_in (1:n) enthält (1:n) (0,!) enthält/ ist_enthalten_in Mehrstellige Beziehungstypen (k>2) MengeE/R-Diagramm Beispiel: Datenbanksysteme 1 Mehrstellige Beziehungstypen (k>2) ER-Diagram Kett-Record-Typ Projekt (0,*) 03.12.2007 5.2.5 Mehrstellige Beziehungstypen Struktur „Waisenkinder“? Menge liefert 156 (0,*) Lieferant (0,*) Netzwerk-Datenmodell (Bachman-Diagram) Artikel Projekt Beispiel: E/R-Diagramm (0,*) Menge Bachman-Diagramm (0,*) Lieferant liefert Projekt P_l (0,*) Artikel Kett-Record-Typ Lieferant L_l liefert Artikel A_l Menge ist wiederum Kett-Record-Typ 5.3 Grundsätzliche•• liefert Eigenschaften des NDM (Vergleich zum HDM) Bei der Definition der drei Set-Typen (P_l,L_l,A_l) muss jeweils Bachman-Diagramm Projekt Lieferant L_l P_l spezifiziert mit * Unterschied zu HDM Kett-Record-Typ Artikel A_l werden, dass Waisenkinder verboten sind (jede liefertAusprägung muss Mengein drei Set-Ausprägungen Member sein) liefert Datenbanksysteme 1 03.12.2007 158 1. * Jeder Record-Typ kann Owner oder Member in beliebig vielen Set-Typen sein 2. Kett-Record-Typ In einem Set-Typ muss Owner 6= Member sein (keine direkte Rekursion) • liefert ist wiederum • Bei der Definition der drei Set-Typen (P_l,L_l,A_l) muss jeweils 3. dass * Zwischen einemverboten Owner-Record-Typ dürfen beliebig viele Set-Typen existieren (und in spezifiziert werden, Waisenkinder sind (jede liefertAusprägung muss inbeliebiger drei Set-Ausprägungen Richtung) Member sein) Datenbanksysteme 1 03.12.2007 158 4. alleinstehende Record-Typen sind erlaubt 5. * Einstieg für beliebigen Record-Typ möglich, keine ausgezeichneten Einstiegspunkte 15 6. * Wenn ein Record-Typ Member eines Set-Typs S ist, so müssen nicht alle RecordAusprägungen s von S sein: Waisenkinder erlaubt 7. Für Member-Record-Ausprägungen muss stets eine Reihenfolge festgelegt sein auch beim NDM: one record at a time 5.4 Beispielschema eines NDM Lesender Zugri Direkter Einstieg von auÿen: FIND ANY ANGEST ( name ='Müller' ) Member Owner → → Owner: FIND OWNER ... Member: FIND ANY ... oder FIND FIRST ANGEST ( Gehalt > 5000 ) ... oder FIND NEXT und prüfen Update FIND ANY ... ins Programm übergeben und berechnen Zurückschreiben mit MODIFY (kann teuer werden, wenn damit neue Reihenfolge oder zu einer anderen Set-Ausprägung wechseln) Löschen FIND ANY ... Löschen mit ERASE Einfügen STORE 6 Relationales Datenmodell Entwicklungsziel Einfaches Datenmodell Einfache Datenbanksprache Konsistenz- / Integritätsüberwachung durch DBMS 16 Ergebnis Datenmodell und Datenbanksprache leichter zu erlernen Datenbankzugri auch ad-hoc möglich Inkonsistenten unwahrscheinlich Inezienter Datenbankzugri unwahrscheinlicher, da das DMBS das wie bestimmt Geschichte Erste Prototypen ab Mitte der 1970er Jahre (IBM San Jose, University Berkeley) Erste Produkte ab Ende 1970er: SQL/DS, DB2, Ingres, Oracle ... Kurzschreibweise 6.1 Begrie und Eigenschaften des(2341516(7,8(,*99* relationalen :6(7,*;1<*7)=11>*++1?@*1 Modells L))7@,2)menge A2B*4C7@B*+1'D0E+*+FG+)*B7@)E).,*?@+B2+B*+1 Darstellung in Form von Relationen R (Menge!) als Teilmengen des kartesischen Produkts .*H(7()1,*.347@*,*+1.@+?1 der Domänen (Wertebereiche) D1 × . . . × Dn , dabei wird ein Element r als Tupel von R I J.H#$5 K*9()@D+..34*0(1L+B*.)1:M(0*;1J*72N;1<D4+D7);1O*,P(47= :Q1'D0E+*+FG+)*B7@)E).,*?@+B2+B*+= bezeichnet (9.1'(7.)*992+B1RD+1Schema + Daten Attribut(name) Schemaname L+B*.) Tupel (als Tabellenzeilen dargestellt M(0* WU99*7 W*@*7 T3429A* J*72N T347*@+*7 T340@*? J*7B0(++ <D4+D7) O*,P(47 Schema P*+( P*+( T*@NN*+ !X&" !XYZ !X[Y Daten, konkrete Relation Attribut(wert) I J*0*7-2+B*+5 S Menge RD+1K*9()@D+..34*0()(1:0@)1.@3412+)*7.34*@?*+?*+1 Relationen können T34*0(+(0*+=1Q1A2.E)A9@34*1G+)*B7@)E).,*?@+B2+B*+1 auch als Tabellen dargestellt werden, wobei man die Tupel als Tabel:7*9()@D+..34*0(U,*7B7*@N*+?=1*7B@,)1Datenbankschema lenzeilen (rows) und die Komponenten der Tupel als Tabellenspalten (columns) identiziert. S J*B7@NN9@341>@7?1A>@.34*+1K*9()@D+..34*0(12+?1K*9()@D+1+@34)1 Meist ndet man folgende Schreibweise für die Tabellenschemata: @00*71.)7@-)12+)*7.34@*?*+V1>*++1RD+1Relation ?@*1K*?*1@.);1>@7?1 0*@.)1?(72+)*71(2341?(.1T34*0(1.2,.20@*7)1:?#4#1'()*+1Q1T34*0(1 ANGEST ( PNr, Name, Vorname, Gehalt, ...) D?*71(2341+271T34*0(= '()*+,(+-./.)*0*1! !"#!$#$""% !%& 6.1.1 Schlüssel Da Relationen Mengen sind, dürfen keine identischen Tupel auftauchen →(minimaler) Schlüs- sel gefordert, meist künstlicher Schlüssel Primärschlüssel darf keine NULL-Werte haben! 6.1.2 Vom ER-Modell zum relationalen Modell nicht rekursive 1:n-Beziehung Zwei Relationen mit Fremdschlüssel-Beziehung, Kardinalitäten (z.B. (3,7) ) nicht direkt übernehmbar 17 Abbildung E/R-Modell ! relational !#1+234)15*-65.27*1!8+9:*;2*46+<*+ E/R-Diagramm Relational ABTEILUNG I:BAZ[\J]1GIJDX1I^5)X1###H (0,*) hat Fremdschlüssel GWX%H1! <*4)1,*21I,,#17*5EF5*+1G.*0#1Y*5E6.)H (1,1) (0,1) MITARBEITER KZBID:AZBAD1GMJDX1J(0*X1###X1IJDH 4()1IJD = >,*5?@456+<1A+)2)/9B/C1! D*E()2F+G..34*0(H = IJD12+1K2)(5,*2)*512.)1Fremdschlüssel 02)1:*;6<1(6?1L*+1M520N5.34E@..*E17F+1 rekursive 1:n-Beziehung I,)*2E6+<1" repräsentiert Beziehungstyp O4()P (6.1L*01AQD9'2(<5(001 G>,*5?@456+<1L*.1:*;2*46+<.)/C.12+1*2+*1*2<*+.)N+L2<*1D*E()2F+1.F02)1+234)1 Eine Relation mit Fremdschlüsselbeziehung innerhalb der Relation *5?F5L*5E234H = GI)F0(5*H1I))52,6)*1*2+*.1A+)2)/9B/C.1R*5L*+16+02))*E,(512+1I))52,6)*1L*51S*R*2E.1 *+).C5*34*+L*+1D*E()2F+1@,*5+F00*+T1Vorsicht bei Schlüsselüberführung nicht GK2+20(E2)N).?F5L*56+<1L*.15*E()2F+(E*+1KFL*EE.12+1,*;6<1(6?1U34E@..*EH rekursive n:m-Beziehung = O:*E2*,2<*1V(5L2+(E2)N)*+P G;#:#1GWX%HH1+234)1L25*-)12015*E()2F+(E*+1KFL*EE1 Lieferant liefert Teile mit Beziehungsattribut Menge, sehr analog zum V-Schema (siehe 5.2.3), L(5.)*EE,(5 dabei Fremdschlüssel von LIEFERT auf LIEFERANT und TEIL '()*+,(+-./.)*0*1! !"#!$#$""% !&" LIEFERANT ( LieferNr, Name, Ort, ... ) TEIL ( TeilNr, Bezeichnung, ... ) LIEFERT ( TeilNr, LieferNr, Menge ) rekursive n:m-Beziehung vgl. Gozinto-Graph, in zwei Relationen überführen, dabei besitzt STRUKTUR zwei Fremdschlüssel auf TEIL TEIL ( TeilNr, Bezeichnung, ... ) STRUKTUR ( Oberteil, Unterteil, Menge ) nicht atomare Attribute entweder in zwei Tabellen (Abruf durch JOIN aufwendiger) oder in gleiche Tabelle (dann geht Zusammengehörigkeitsinformation verloren) 6.2 Sprachen für das relationale Modell: Relationenalgebra und Relationenkalkül nicht navigierend und satzorientiert, sondern mengenorientiert und deskriptiv Mengen von Tupeln gelesen / verarbeitet potentieller Performancegewinn (da DBMS mit Optimizer komplexe Sprachanweisungen in möglichst performante Teile zuerlegt (semantisch äquivalente Transformation für minimale Ausführungskosten)) 18 Was statt wie Wenige Basisoperationen notwendig: Selektion Projektion Verbund (Join) Mengenvereinigung, -dierenz, -durchschnitt Kriterien für Anfragesprachen Ad-hoc-Formulierung Mengenorientiert Deskriptiv Abgeschlossenheit (Anfrageergebnis ist wieder eine Relation , die als nächste Eingabe verwendet werden kann) → everything is a relation Adäquatheit: Alle Konstrukte des Datenmodells unterstützt Orthogonalität: Sprachkonstrukte sind miteinander weitgehend frei kombinierbar (Voraussetzung: Abgeschlossenheit) z.B. SL_{F1}(SL_{F2} R) Optimierbarkeit: Sprache besteht aus wenigen Operationen, die mit Optimierungsregeln umgebaut werden können Eizienz: Im Relationenmodell hat jede Operation eine Komplexität Sicherheit: Keine syntaktisch korrekte Anfrage, darf in eine Endlosschleife geraten oder 6 O(n2 ) unendliches Ergebnis liefern Eingeschränktheit: Anfragesprache darf keine komplette Programmiersprache sein (folgt aus Sicherheit und Optimierbarkeit) Vollständigkeit: Sprache muss mindestens die Anfragen einer Standardsprache erfüllen Heutige Produkte erfüllen obige Anforderungen weitgehen, teilweise weisen sie aber Schwächen (z.B. in Bezug auf Orthogonalität) auf. 6.3 Relationenalgebra Werte sind Relationen, Operationen durch Basisoperationen gegeben, Anfrageergebnisse werden durch Schachtelung von Basisoperationen bestimmt 19 6.3.1 Projektion: P JAttr R oder πAttr R P JAttr R wählt jene Spalten von R aus, die in Attr angegeben sind (es wird auf jene Spalten projiziert): P J{N ame} Ausleihe projiziert Ausleihe auf Spalte Name, teure Projektion (kein Schlüssel) P J{InvN r,ISBN } Buch projiziert Buch auf die zwei Spalten InvNr und ISBN, billige Projektion (Schlüssel enthalten) 6.3.2 Selektion: SLF R oder δF R SLF R wählt jene Zeilen von R aus, die der Bedingung F genügen: SLInvN r>3333 Buch wählt alle Bücher mit InvNr > 3333 aus Bedingung dabei mit logischen Verknüpfungen (AND, OR, ...) sowie Vergleichsoperatoren (=,>,...) beschreibbar. 6.3.3 Verbund (Join): R JNF S RJNF S kontakateniert die Tupel der Relation R und S, die die Verbundbedingung F erfüllen: BuchJNInvN r=InvN r Ausleihe konkateniert jene Tupel aus der Relation Buch und Ausleihe, deren Werte InvNr übereinstimmen. (Equi-Join, InvNr im Ergebnis nur einmal vorhanden) 6.3.4 Vereinigung (Union): R U N S RU N S vereinigt die gleichen Relationsschemata R und S (Namen- und Domänengleichheit) und liefert alle Tupel (möglicherweise Duplikatelemination notwendig) (SLInvN r>3333 Buch) U N (SLInvN r63333 Buch) gibt alle Tupel der Buch-Relation 6.3.5 Durchschnitt (Intersection): R IN S siehe Abschnitt 6.3.4 6.3.6 Dierenz: R DF S siehe Abschnitt 6.3.4 6.3.7 Zusammengesetzte Beispiele in Relationenalgebra XXX S. 212 20 6.4 Relationenkalkül Es wird beschrieben, welche Bedingungen (= Prädikate) die Tupel erfüllen müssen (rein deskriptive Vorgehensweise des Was) Tupelvariablen sind jeweils einer Relation zugeordnet und müssen deniert werden, einer Relation können mehrere Tupelvariablen zugeordnet werden Tupelkomponenten: Sei U der Relation R zugeordnet und A ein Attribut von R, so bezeich- net U.A die Tupelkomponente (entspricht Attributwert) Bedingungen: Sind x und y zwei kompatible Konstanten oder Tupelkomponenten, so spezi- ziert x=y eine Bedingung (auch <, >, Formeln 6=, ... ) stellen eine Kombination von Bedingungen dar, mit Klammerung, Negation, Bool- schen Operatoren (AND, OR), Quantoren (∃ oder Freie und gebundene (Tupel-)Variablen: ∀) Tupelvariablen werden durch Quantoren oder automatisch gebunden, dabei kann sie nur einmal innerhalb eines Ausdrucks gebunden werden U.Autor=Heuer ist eine Bedingung mit der freien Variablen U U.Autor=Heuer ∧U.Titel=Objektbanken ∃U(U.Autor=Heuer) ist eine Formel mit der freien Variablen U ist eine Formel mit der gebunden Variable U 6.4.1 Beispiele im Relationenkalkül XXX S. 224 6.5 Structured Query Language (SQL) Die Norm-Datenbanksprache für relationale Datenbanksysteme, deckt alle drei Ebenen der ANSI/SPARC-Architektur (siehe Abs 2.3.1) ab. externe ebene konzeptuelle Ebene interne Ebene create view create table / domain create index 6.5.1 Create Table CREATE TABLE relationenname ( spaltenname1 wertebereich1 [NOT NULL], ...) Wertebereiche wie integer, smallint, oat)p=, decimal, char, varchar, bit, date NOT NULL-Klausel verbietet das Auftreten von Nullwerten Primärschlüssel / Schlüssel in SQL nicht erzwungen, daher als letztes Attribut angeben PRIMARY KEY spaltenname1) 21 Fremschlüssel ebenfalls beim Erzeugen der Tabelle angeben DEFAULT-Klausel für Standardwerte, wenn beim Insert nichts angegeben wurde CHECK-Klausel kann Integritätsbedingungen für Attributwerte erstellen CHECK ( InvNr BETWEEN 5 AND 999 ) 6.5.2 Create Domain CREATE DOMAIN gebiet VARCHAR(20) DEFAULT Informatik CHECK ( VALUE IN (Informatik, Mathe ...) ) erlaubt Denition neuer Datentypen 6.5.3 Alter Table ALTER TABLE relationenname ADD spaltenname wertebereich ALTER TABLE relationenname DROP spaltenname ALTER TABLE relationenname ALTER spaltenname {SET default_denition | DROP DEFAULT} nicht in allen Produkten erlaubt, da heikle Fragen: Was mit vorhandenen Daten? Wann Auswirkung der Änderung? 6.5.4 Drop Table DROP TABLE relationenname { RESTRICT | CASCADE} 6.5.5 Create / Drop Index CREATE [UNIQUE] INDEX indexname ON relationenname (spalte1 [ASC | DESC], ... ) 6.5.6 Update UPDATE relationenname SET spaltenname1 = audruck1, ... [WHERE bedingung] 6.5.7 Delete DELETE FROM relationenname [WHERE bedingung] 6.5.8 Insert INSERT INTO relationenname ( spaltenname1, ... ) VALUES ( wert1, ... ) 22 SyntaxSelect der SQL-SELECT-Anweisung* 6.5.9 from where SELECT ziel-liste ** FROM relation ALL variable , DISTINCT WHERE where-Bedingung GROUP BY attr-ref attr-ref , HAVING nur die Ergebnisdarstellung betreffend have-Bedingung ORDER BY attr-ref ASC DESC * entnommen aus: K. Neumann: Datenbanktechnik für Anwender. Carl Hanser Verlag, München Wien, 1996 ** vereinfacht!! Datenbanksysteme 1 attr-ref 21.01.2008 , 262 6.5.10 Joins XXX S. 281 6.5.11 Sichten CREATE VIEW sichtname AS SELECT relationenname FROM ... WHERE ... 6.5.12 Zugrisrechte über GRANT 7 Transaktionen / Fehlerbehandlung Eine Transaktion ist eine Folge zusammengehöriger Operationen auf der Datenbank, die die ACID-Eigenschaften erfüllen muss. 7.1 ACID-Eigenschaften erstmals formuliert von Härder / Reuter 1983 atomicity: Eine TA wird entweder komplett oder gar nicht ausgeführt. consistency: TA überführt Datenbank von einem logisch konsistenten Zustand in einen lo- gisch konsistenten Zustand. isolation: Änderungen innerhalb einer TA werden erst beim Commit (End-of-Transaction) für andere Nutzer sichtbar. 23 durability: Alle Änderungen einer erfolgreich abgeschlossenen TA müssen auch im evtl. Feh- lerfall wiederherstellerbar sein. 7.2 Fehlerszenarien Transaktionsversagen: Eine einzelne TA wird abgebrochen (durch Benutzer, Anwendung oder DBMS) R1: DBMS setzt betroene TA auf Anfangszustand zurück, alle Änderungen werden rückgängig gemacht (Transaction Rollback) mit before images Systemversagen: Das DBMS stürzt ab. Hauptspeicherinhalt geht verloren, Festplattenin- halte noch vorhanden R2: Nachfahren (Redo) aller Transaktionen seit letztem Checkpoint (wegen Dauerhaftigkeit) mit after images R3: Zurücksetzen (Undo) noch nicht beendeter Transaktionen (wegen Atomarität) mit before images Externspeicherversagen: Datenverlust auf Externspeicher und damit Datenbank ganz oder teilweise zerstört R4: Backup muss eingespielt werden, anschlieÿendes Nachfahren mit after images Alle Änderungen von Transaktionen müssen protokolliert werden. Hierzu benötigt man zum einen before images mit dem Stand vor der Transaktion und zum anderen after images mit dem Stand nach der Transaktion. 7.3 Bemerkungen 7.3.1 Checkpoints Problem beim Nachfahren: Lösung: Wie weit muss in der Vergangenheit begonnen werden? Checkpoints denieren konsistente Datenbankzustände in vordenierten Intervallen. Dabei wird der Puerinhalt komplett in die Datenbank geschrieben. Dies minimiert den Aufwand für R2-Recovery. 7.3.2 Dirty Data Der Begri dirty data wird sowohl im Zusammenhang mit Transaktionen genutzt (uncommited data) als auch für geänderte Daten, die noch nicht auf der Festplatte gesichert wurden (change ag). 7.3.3 Page Cleaner Puer wird nicht nur zum Checkpoint auf die Festplatte geschrieben, sondern zu unplanbaren Zeitpunkten (z.B. Puer voll). Um dies zu vermeiden, wird in Produkten ein proaktiver Page Cleaner eingesetzt, der bei geringer Last auf der Datenbank den Puer möglichst weit von schmutzigen Daten (= Daten nicht auf Externspeicher vorhanden) befreit. 24 7.3.4 Steal / No Steal Bei der Steal-Strategie können schmutzige Daten (= uncommited data) aus dem Puer bereits vor Transaktionsende auf die Festplatte geschrieben werden. (Produkte bevorzugen Steal) 7.3.5 Write-Ahead Logging Vor dem Schreiben eines Datenblocks in die Datenbank muss der zugehörige Log-Eintrag auf der Platte geschrieben sein, um bei eventuellem Ausfall nachfahren zu können. 7.3.6 Group Commit Datenblöcke im Log-Puer sind meist nicht komplett gefüllt, das Datenbanksystem kann über Group Commit einzelne Transaktionen zu Gruppen zusammenfassen, die gemeinsam freigegeben werden können. Zum Commit-Zeitpunkt wird über Teilnahme am Group Commit entschieden. 7.3.7 Datenvolumen der Log-Dateien Eigentlich werden before images von abgeschlossenen TAs und after images von TAs vor dem letzten Checkpoint für R2-Recovery nicht mehr benötigt. Leider ist selektives Löschen der nicht benötigten Logs zu teuer und after images werden noch für R4-Recovery benötigt. Als Lösung bietet sich an, das Log automatisch zu archivieren und den Datenplatz zyklisch zu überschreiben. 7.3.8 Backup Probleme beim Backup ergeben sich durch sehr groÿe Datenmengen und die Behinderung des laufenden Betriebs. Online-Backup während laufendem Betrieb beispielsweise über zweites System Paralleles-Backup von mehreren Datenbank-Geräten auf mehrere Sicherungsgeräte Inkrementelles Backup Partielles Backup sichert nur die Änderungen seit dem letzten Vollbackup sichert nur Teile der gesamten Datenbank, andere Teile zu anderer Zeit In den meisten Systemen werden die Verfahren gemeinsam genutzt. 7.3.9 Force / No Force Force fordert, dass geänderte Platten direkt beim Commit auf die Festplatte geschrieben werden, No Force erst später. (Produkte bevorzugen No Force) 25 7.3.10 Atomic / Not Atomic Bei atomarem Fortschreiben ist die Datenbank immer in einem wohldenierten Zustand, bei nicht atomarem Fortschreiben in irgendeinem Zustand. (Produkte bevorzugen Not Atomic) 8 Synchronisation im Mehrbenutzerbetrieb 8.1 Fehlerklassen und Probleme bei unkontrolliertem Mehrbenutzerbetrieb Lost-Update-Problem: Zwei TAs arbeiten auf ihren gelesenen Zuständen und Schreiben nacheinander auf die Datenbank. Erstes Ergebnis wird dabei vom zweiten überschrieben. Inkonsistente Analyse: Eine TA ändert Attribute während eine andere TA lesende Analysen durchführt. (Ehefrau verheiratet, Ehemann nicht mehr) Phantomproblem (Spezialfall der inkon. Analyse): Einfügen neuer Datensätze während eine andere TA eine Analyse durchführt (z.B. Integritätsregel verletzt, obwohl auf Datenbank konsistent) → sehr teuer zu behebn, da Phantome nicht sperrbar (nur Tabellensper- ren?), Praxis lebt meist mit Phantomproblem Nicht wiederholbares Lesen (Spezialfall der inkon. Analyse): TA erhält bei wiederholen- der Analyse unterschiedliche Ergebnisse, weil eine andere TA unterdessen Änderungen vornimmt → Benutzer kann also mitbekommen, dass es andere Benutzer gibt Abhängigkeit von nicht freigegebenen Änderungen: Eine verändernde TA wird zurück- gesetzt, obwohl unterdessen eine andere TA bereits die Werte ausgelesen hat. 8.2 Concurrency Control / Synchronisation Eine Synchronisation wird im Mehrbenutzerbetrieb benötigt. Sperren stellen dabei eine (naheliegende) Möglichkeit dar, es gibt aber auch andere. Logischer Einbenutzerbetrieb bei physischem Mehrbenutzerbetrieb Es sollen nur solche Datenbankzustände erzeugt werden könne, die auch bei einer seriellen Abarbeitung der Transaktionsmenge entstehen können. (Serialisierbarkeit ) 8.3 Pessimistic Concurrency Control (PCC) Beim pessimistischen Ansatz geht man davon aus, dass etwas passieren könnte und schlieÿt dies durch Sperrung der entsprechenden Ressource für andere TAs aus. 8.3.1 Sperr- und Freigabestrategien Sperrstrategien: TA sperrt alle benötigten DB-Objekte zu TA-Beginn (preclaiming ) oder jeweils spätestens beim Zugri (sukzessives Sperren) 26 Freigabestrategien: Sperren zum Ende der TA freigeben (lange Sperren) oder zu einem früheren Zeitpunkt, wenn diese nicht mehr benötigt (kurze Sperren) Für Schreibsperren wird meist sukzessives Sperren mit langen Sperren genutzt, bei Lesesperren sukzessive kurze Sperren. 8.3.2 Sperrgranulate Es existieren viele Möglichkeiten der Sperrgranulatie: logische DB-Objekte wie Datenelemente, Sätze (Tupel) und Tabellen oder physische DB-Objekte wie Seiten, Datenbanksegmente und Datenbank. Für hohe Parallelität und Performance muss ein Kompromiss gefunden werden, daher heute in den meisten Systemen folgende Granulate implementiert: Tupel, Relationen, Segmente und Datenbank 8.3.3 Sperrmodi Schreibsperren (eXclusive): Es darf nur eine TA das Objekt verändern, andere Zugrie müssen warten Lesesperren (Shared): Es dürfen mehrere TAs parallel lesen, aber keine X-Sperre existieren 8.3.4 Sperrhierarchie / Intention Locks TAs müssen sich an Sperrprotokoll halten und Vorhaben in höheren Ebenen ankündigen (Intention Shared / Intention eXclusive). Dabei muss top-down angekündigt und bottom-up freigegeben werden. Sperrgraph / Wartegraph 8.3.5 Sperreskalation Unter Umständen kann es vorkommen, dass eine TA viele kleine Sperren setzt (UPDATE • Information welche Resource aktuell gesperrt hat / wer angest darüber, ...). Dies führt wer zu einer Vielzahl von Aufrufen an den Sperrverwalter, Sperrtabelle im Hauptspeicher wächst. Als Lösung kann die TA ihre Sperren in eine höhere Hierarchie auf welche Ressource wartet (weil sie aktuell gesperrt ist) ! kann in verlagern (z.B. von Tupel auf Tabelle), allerdings nicht immer möglich, da auch andere TAs Form eines Graphen werden (ob´s auch als solcher nicht kompatible Sperrenaufgefasst halten können. implementiert ist – oder sich der Graph als „Sicht“ auf die 8.3.6 Sperrgraph / Wartegraph Sperrtabelle oben darstellt! – ist dabei zunächst unerheblich) Wer auf wen wartet, kann in einem Graph dargestellt werden. • Beispiel für Sperrgraphen: R1 TAx TAy R3 TAw R2 TAz • Semantik: TAx wartet auf die Freigabe von Ressource R1 durch TAy etc. etc. 27 • Nutzung des Sperrgraphen: Vor allem auch zur Deadlock-Erkennung, Deadlocks führen nämlich zu Zyklen im Graphen (erkennbar mittels Standard-Graphenalgorithmen) • Deadlock-Auflösung durch systemseitiges „Abschießen“ (Rücksetzen, Transaction Failure) einer Transaktion • Problem hierbei u.a.: Verhungern („starvation“) einer Transaktion Dabei wartet TAx auf die Freigabe der Ressourcen R1 durch TAy und TAy wiederum auf die Freigabe der Ressource R3 durch TAw ... 8.4 Optimistic Concurrency Control (OCC) Der optimistische Ansatz geht vom Gelingen der TA aus und greift nur im Fehlerfall durch Zurücksetzen und erneutes Starten ein. Sperrprobleme und Performance-Einbuÿen durch Sperrverwaltung fallen weg, dafür muss bei Konikten die bereits durchgeführte TA zurückgesetzt werden. Bei vielen Konikten ist der Sperransatz daher performanter, treten Konikten selten auf, so ist die OCC performanter. Im Allgemeinen ist PCC die Standard-Einstellung der DBMSe. 8.4.1 BOCC / FOCC Man unterscheidet zwischen zwei Verfahren der OCC. Backward Oriented Concurrency Control: Validierung nur gegenüber bereits beendeten Transaktionen Forward Oriented Concurrency Control: Validierung gegen noch laufende Transaktionen 8.5 Kurzzeitsperren / Latches Neben der aufwändigen Sperrverwaltung für TAs benötigt ein DBMS kurze Sperren bei Schreibzugrien, beispielsweise im System-Cache für einzelne Seiten. Diese Kurzzeitsperren oder Latches müssen sehr performant sein und werden in der Regel nur sehr kurz gehalten. Kurzzeitsperren sind immer exklusiv und müssen über eine atomare Funktion des Prozessors (Compare and Swap) umgeschaltet werden, damit sich zwei Operationen nicht in die Quere kommen. Implementierung unter Umständen als busy wait (statt lazy wait ), ferner muss darauf geachtet werden, dass Latches nicht lang werden (z.B. durch I/O, Paging des Puers) können. 9 Embedded SQL / API Impedance Mismatch: Der Mengenorientierung und Deskriptivität in SQL steht eine satz- orientierte und prozedurale Programmiersprache gegenüber, beide kaum vereinbar. Problematisch sind zudem unvorhersehbare Gröÿe von SQL-Anfragen, unterschiedliche Datentypen und groÿe Attributlängen. 9.0.1 Konzepte für Datenbankzugri aus Anwendungsprogramm Man unterscheidet zwischen fünf grundlegenden Konzepten, die sich im Bezug auf Integrationsgrad unterscheiden. Enge Bindung zwischen Programmiersprache und DB-Sprache hat Einuss auf Benutzbarkeit, Performance und Erweiterbarkeit. 28 Pre-Compiler Ansatz: Programmcode enthält markierte DB-Anweisungen, die von einem Precompiler vorübersetzt und eingebaut werden. (Beispiele: eSQL) DBMS-Aufrufe als Unterprogramme (Call Level Interface / CLI): Datenbankanbindung über Programmierschnittstellen (Framework), kein Precompiler oder Programmiersprachenerweiterung nötig. (Beispiele: ODBC, JDBC) Einfache Programmiersprachenerweiterung: Erweiterung der Programmiersprachensyn- tax und -semantik, damit ist ein erweiterter Programmiersprachencompiler notwendig. (Beispiel: Einbindung von CODASYL-Datenbanken) Komplexe Programmiersprachenerweiterung: Auch Datentypen werden in die Program- miersprache eingebunden, z.B. Relation as a Data Type oder Programmschleifen über Tabelleninhalte. Relationale Objekte wie normale Programmiersprachenobjekte. (Beispiele: Pascal/R, Modula/R, Data Base Programming Language (DPBL)) 4GL-Sprachen: höhere Programmspiersprache mit integriertem Datenbankzugri, meist in proprietären Entwicklungen zu nden. (Beispiele Advanced Business Application Programming (ABAP von SAP), NATURAL (Software AG)) 9.1 Precompiler / Vorübersetzung Die Vorübersetzung ist ein wichtiger Ansatz in der Praxis und in embedded SQL (ESQL) umgesetzt. Der Precompiler muss nur geringe Kenntniss über die Host-Programming-Language (C++, Java ...) besitzen, er sucht und ersetzt nur markierte Teile mit Präx EXEC SQL. Der Precompiler kann bereits syntaktische Prüfungen durchführen, die eingebetteten SQLAnweisungen werden an den Server geschickt, dort als Package gespeichert und analysiert. Der Precompiler erzeugt Kontrollblöcke (Hilfsvariablen) für SQL-Statusinformationen und Unterprogrammaufrufe für Verbindungsaufbau, Ausführung und Verarbeitung. 9.2 Cursor-Konzept Das Cursor-Konzept wurde entwickelt, um den Impedance Mismatch zu lösen. Der DatenbankCursor ist eine spezielle Laufvariable zum satzweisen Abarbeiten der Ergebnismenge einer SQL-SFW-Anweisung. DECLARE CURSOR: Legt Bindung an eine SQL-SFW-Anweisung fest. OPEN CURSOR: Setzt Cursor vor den ersten Tupel der Ergebnismenge, die auch leer sein darf. FETCH CURSOR: Bewegt Cursor mit Schrittweite 1 über Ergebnismenge und überträgt ein Ergebnistupel ins Anwendungsprogramm. Bei Anfragen, die maximal ein Ergebnistupel liefern, kann auf das Cursor-Konzept verzichtet werden. 29 9.2.1 Programmstruktur mit Cursor am Beispiel von ESQL EXEC SQL BEGIN DECLARE SECTION; int betrag, nummer, umsatz; string name; // deniert gemeinsame Variablen EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE SQLCA; // SQL Communication Area z.B. für Fehler EXEC SQL DECLARE c CURSOR FOR SELECT KdNr, Name, Umsatz FROM Kunde WHERE umsatz>:betrag; // nur hier Variablen möglich read betrag; // Variable muss vor OPEN CURSOR eingelesen sein EXEC SQL OPEN c; // setzt Cursor vor den ersten Ergebnistupel EXEC SQL FETCH c INTO :nummer, :name, :umsatz; // holt ersten Datensatz while (SQLCA.SQLCODE==0) { output (nummer, name, umsatz); EXEC SQL FETCH c INTO :nummer, :name, :umsatz; } EXEC SQL CLOSE c; EXEC SQL COMMIT / ROLLBACK WORK; 9.3 dynamisches ESQL ESQL erlaubt nach dem ersten Standard nur SQL-Anweisungen, die im Programm zum Übersetzungszeitpunkt vollständig bekannt waren (halb-dynamisch auch Werte von Host-Variablen im WHERE-Bereich, die beispielsweise durch Platzhalter ersetzt werden). Auch die Struktur des Ergebnisses muss bereits bekannt sein. Statisches ESQL bietet damit den Vorteil, dass bereits umfangreiche Prüfungen und Optimierungen zum Übersetzungszeitpunkt möglich sind und die Handhabung einfach ist. Allerdings ist statisches ESQL sehr unexibel. dynamisches ESQL: SQL-Anweisungen können bei Bedarf angepasst werden, Ergebnisstruk- tur muss erst zur Laufzeit bekannt sein, Cursor können gegebenenfalls dynamisch erzeugt werden. dynamisches ESQL benötigt die SQL Description Area (nach der SQL Declare Section). 10 Normalformen / Erweiterungen 10.0.1 Probleme nichtadäquater Datenmodellierung Am Beispiel Kursleiter(PersNr, Name, PersSachb, PPersNr, TelNr) Insertion Anomaly: Ein neuer Personalsachbearbeiter kann nicht eingefügt werden, wenn nicht gleichzeitig ein betreuter Mitarbeiter eingefügt wird. Deletion Anomaly: Informationen über Sachbearbeiter werden mitgelöscht, wenn ein Mit- arbeiter gelöscht wird. Update Anomaly: Die neue Telefonnummer einer Sachbearbeiters muss in mehreren Zeilen geändert werden. 30 ⇒ Informationen über verschiedene Entitytypen sollten nicht in einer Relation gespeichert werden (Lösung: zwei Relationen mit Fremdschlüsselbeziehung) 10.1 Normalformen Jede Normalform schränkt gegenüber ihrer übergeordneten die Menge der zulässigen relationalen DB-Schmata weiter ein. Höhere Normalformen bestehen damit aus einer gröÿeren Zahl von (kleinen) Relationen und setzen mehr Wissen über die Daten / Miniwelt voraus (inhaltliche Abhängigkeiten, Zusammenhänge). extended non rst normal form (eN F 2 ): Beliebige Kombination von Tupeln, Mengen und Listen möglich, volle Orthogonalität non rst normal form (N F 2 ): Erlaubt Subrelationen (geschachtelte Relationen, nested Relations). Ein Tupel kann seinerseits wieder aus Relationen bestehen. Damit werden Baumstrukturen möglich. Ansonsten nur Relationen, Tupel und atomare Attribute erlaubt. 1NF: 2NF: Alle Attribute sind atomar Nichtschlüsselattribute müssen voll funktional abhängig von Schlüsselattributen sein, jede Relation modelliert nur einen Sachverhalt. 3NF: Keine trans. Abhängigkeit zwischen Schlüssel- und Nichtschlüsselattribute BCNF-Telation (Boyce/Codd): ⇒ Nur Abhängigkeiten von Schlüsselattributen Höhere Normalformen nicht um jeden Preis anstreben, sondern auch Konsequenzen (viele kleine Relationen unhandlich und erfordern viele Joins, Detailwissen könnte sich ändern) berücksichtigen. 10.2 Funktionale Abhängigkeiten / Functional Dependencies Funktionale Abhängigkeitten liefern Aussagen über Abhängigkeiten zwischen Attributen, müssen aus der realen Welt abgeleitet werden und sind allgemeingültig (nicht nur für vorliegende (meist unvollständige) Datenkonstellation). Y ist funktional abhängig von der zwei Tupel t1 und t2 X→Y X X → Y ), wenn es keine X x1 = x2 aber y1 6= y2 haben. (kurz den selben Wert für ⇐⇒ Relation R geben kann, in verschiedene Werte für Y ∀(t1 , t2 ) : x1 = x2 ⇒ y1 = y2 Aus konkreter Datenkonstellation darf nur auf fehlende FD geschlossen werden, keinesfalls FD-Nachweis. In einem Relationstyp sind alle Attribute vom identizierenden Attribut (Schlüssel) funktional abhängig. Die Menge aller FDs heiÿt closure of F (transitive Hülle) 31 10.3 weiteres 32