Warum Datenbanken?
Deutlich weniger Aufwand bei Anwendungsentwicklung
Vermeidung von redundanten Daten und Funktionalitäten
Vermeidung von Inkonsistenzen in den Daten
Atomarität: Programm wird entweder ganz oder gar nicht ausgeführt
Physische Datenunabhängigkeit: Informationsbedürfnisse formulierbar, ohne
physische Eigenschaften der Daten kennen zu müssen
Datenschutz (kein unerlaubter Zugriff) und Datensicherheit (kein ungewollter
Datenverlust)
DBMS vs. DBS
DBMS (Datenbank-Management-System): Software zur Datenverwaltung
DBS (Datenbanksystem): (ein) DBMS + (mehrere) Datenbanken
Datenbank: Eigentliche Daten
Relationenmodell
Tabellen = Relationen
Erste fett geschriebene Zeile = Relationenschema
Zeile in der Tabelle = Tupel
Spaltenüberschrift = Attribut
Name der Tabelle = Relationenname
Datenbankanfragen
Zugriff auf Datenbank über Anfragen/Queries • Anfragen sind deklarativ, DBMS ermittelt selbst gutes Vorgehen bei Auswertung
(Anfrageoptimierung)
Neun Coddschen Regeln (Datenbankprinzipien)
Integration: einheitliche, nichtredundante Datenverwaltung
Operationen: Speichern, Suchen, Ändern
Katalog: Zugriffe auf Datenbankbeschreibungen im Data Dictionary
Benutzersichten
Integritätssicherung: Korrektheit des Datenbankinhalts
Datenschutz: Ausschluss unautorisierter Zugriffe
Transaktionen: mehrere DB-Operationen als Funktionseinheit (Atomarität)
Synchronisation: parallele Transaktionen koordinieren (Isolation)
Datensicherung: Wiederherstellung von Daten nach Systemfehlern
Modellierung (erster Schritt)
Festlegen des Diskursbereich (relevanter Weltausschnitt / Miniwelt) → strukturelle Vorgaben: Spezifikation eines Schemas
Bedeutungstreue / Datenbankkonsistenz
Datenbasis ist bedeutungstreu, wenn ihre Elemente Modelle einer gegebenen Miniwelt sind
Schemakonsistenz: Übereinstimmung der Daten mit gegebenem Schema
Einhaltung vorgegebener Konsistenzbedingungen zum Erreichen von
Datenbankkonsistenz ist Teil der Schemakonsistenz
System kann Schemakonsistenz überprüfen, nicht aber Datenbasiskonsistenz
Data Dictionary
Speichert welche Relationen es gibt und wie sie strukturiert sind
Erstellen von Relationen
create table basisrelationenname (spaltenname_1 wertebereich_1, ..., spaltenname_k wertebereich_k)
not null schließt Nullwerte als Attributwerte aus
Erlaubte Wertebereiche für create table
integer, smallint, float
decimal(p,q): p Vorkommastellen, q Nachkommastellen
char(n): Strings fester Länge n
varchar(n): Strings variabler Länge bis zur Maximallänge n
Gegensatz zur physischen Datenabhängigkeit: DBMS sollte selbst erkennen, welcher
Datentyp am geeignetsten ist. Problem: Unklar, ob Speichereinsparung oder Leistungsoptimierung durch große Werte dem Anwender wichtiger ist
Schlüssel
Menge von Attributen, deren Werte in Relation eindeutig sein müssen zur Identifizierung von Tupeln
Festlegen durch primary key
Keine Nullwerte
Schlüssel kann aus beliebig vielen Attributen bestehen, sog. Primattribute
Fremdschlüssel
Menge an Attributen, deren Werte als Attributwerte an anderer Stelle in der Datenbank vorkommen müssen, damit ein Verweis möglich ist
Bsp.: create table Titel(..., primary key(TITLEID), foreign key(KID), references Künstler(KID))
references: Relationen und Attribute, wo Fremdschlüssel als Schlüssel vorkommt
Integritätsbedingungen
Gehören zum konzeptuellen Schema
Relationenschema beschreibt Aufbau einer Relation
Datenbankschema ist Menge von Relationenschemata
Schlüsseleigenschaft ist lokale Integritätsbedingung (bez. auf eine Relation)
Fremdschlüsselbedingung ist globale Integritätsbedingung (bez. auf mehrere Relationen)
Weitere Integritätsbedingungen
default-Klausel: Defaultwerte für Attribute
create domain-Anweisung: benutzerdefinierte Wertebereiche
check-Klausel: weitere lokale Integritätsbedingungen innerhalb der zu definierenden
Wertebereiche, Attribute und Relationenschemata
Bsp.: create domain Gebiete varchar(20) default 'Informatik'
Bsp.: Semester smallint, check(Semester between 1 and 9)
alter table und drop table
Änderung des Relationenschemas im Data Dictionary
alter: Erweiterung der existierenden Basisrelation um ein Attribut, das bei jedem
existierenden Tupel mit null besetzt wird.
alter table basisrelationenname add spaltenname wertebereich (auch Konsistenz- und Schlüsselbedingungen möglich 2/41)
drop: Löschen von Attributen
drop spaltenname { restrict | cascade }
restrict: Löschen nur, wenn keine Integritätsbedingungen mit dem Attribut
definiert wurden
cascade: gleichzeitige Löschung der Integritätsbedingungen
drop table basisrelationenname { restrict | cascade } zum
Löschen ganzer Relationen
Index
Hilft, die Tupel effizient zu finden, die zum Informationsbedürfnis passen.
Daten in Seiten organisiert, lineares Absuchen der Seiten ineffizient
Index beschleunigt Suchvorgang durch Baumstrukturen:
links: Noten kleiner 3,6 , rechts Noten größer 3,6
Zweites Element im Tupel gibt an, auf welche Seite in welchen Eintrag das Tupel zu
finden ist
Index für mehrere Attribute möglich (z.B. erst Sortieren nach Note, dann nach Name)
2/50
Index ist Bestandteil der physischen Ebene, des sog. internen Schemas
DBMS liefert Ergebnis auch ohne Index, aber mit Index erhebliche Beschleunigung
Bsp.: create [unique] index typ on auto (hersteller, modell,
baujahr)
unique: Attributwertkombinationen sind eindeutig. Wenn Attribute nicht
eindeutig und dennoch unique angegeben wird, dann wird der Index nicht erstellt
Reihenfolge in der Klammer gibt Sortierreihenfolge an
Entity-Relationship-Modell (ER-Modell)
Entity: Objekt der realen oder der Vorstellungswelt, über das Informationen zu speichern sind (Rechtecke)
Relationship: Beziehung zwischen Entities (Raute)
Attribut: Eigenschaft von Entities oder Beziehungen (abgerundete Rechtecke)
ER-Modellierungskonzepte
Trägermenge 𝛍(𝑫): Interpretation von D, Mögliche Werte einer Entityeigenschaft
Entity-Typen:
o 𝛍(𝑬): Menge der möglichen Entities vom Typ E o 𝛔𝒊(𝑬): Menge der aktuellen Entities vom Typ E in einem Zustand σ𝑖 o AktuelleEntitiesmüssenmöglicheElementesein:𝛔𝒊(𝑬)⊆𝛍(𝑬) o 𝛔(𝑬)endlich
Beziehungstypen: Beziehung sind n-stellig o MöglicheAusprägungen:𝛍(𝑹)=𝛍(𝑬𝟏)×...×𝛍(𝑬𝒏) o Aktuelle Beziehungen nur zwischen aktuellen Entities:
𝝈(𝑹) ⊆ 𝝁(𝑬𝟏) × ... × 𝝁(𝑬𝒏)
Attribute: Attribut A eines Entity-Typen E ist im Zustand 𝝈 ist eine Abbildung
σ(𝐴): σ(𝐸) → μ(𝐷). Funktion, die den derzeit existierenden Entities jeweils einen
möglichen Wert zuordnet. Abhängig vom Zustand!
Beziehungsattribute: 𝜎(𝐴): 𝜎(𝑅) → 𝜇(𝐷)
Zwei- vs. mehrstellige Beziehungen
Dreistellige Beziehung ist etwas anderes als drei zweistellige Beziehungen
Bsp. dreistellig: Professor empfiehlt Buch für Vorlesung
Unterschiede bei mehreren zweistelligen Beziehungen: Auftreten von neuen
Kombinationen und NULL-Werten
Funktionale Beziehungen
Funktionale Beziehung dargestellt durch Pfeil
Semantik: Jeder Professor sitzt in genau einem Zimmer
Ein Zimmer kann jedoch mehrere Professoren haben
Bedeutung: σ(𝑅): σ(𝐸1) → σ(𝐸2) „Pfeilrichtung wichtig!“
Schlüsselattribute
Für Entity-Typ 𝐸(𝐴1, ... , 𝐴𝑚) sei Teilmenge {𝑆1, ... , 𝑆𝑘} ⊆ {𝐴1, ... , 𝐴𝑚} die Schlüsselattribute
Wenn zwei Instanzen der gleichen Entity auf allen Schlüsselattributen übereinstimmen, dann handelt es sich um die gleiche Instanz
Schlüssel ist minimal, wenn es keine Teilmenge von {𝑆1, ... , 𝑆𝑘} mit der zuvor genannten Eigenschaft gibt
Schlüsselkandidat ist eine Menge von Attributen, die einen Tupel eindeutig identifiziert, also als Schlüssel in Frage kommt
Ein ausgewählter Schlüsselkandidat heißt Primärschlüssel und wird im ER-Modell unterstrichen
Abhängige Entity-Typen
Identifikation über funktionale Beziehung
Nummer identifiziert Buch Exemplare des gleichen Buches eindeutig, aber keine Buch Exemplare von unterschiedlichen Büchern → Nummer allein kein Schlüssel → Erst Kombination aus ISBN (was ein Buch eindeutig identifiziert) macht es zu einem Schlüssel
Name der funktionalen Beziehung wird bei abhängigen Entity-Typen unterstrichen
IST-Beziehung
Für Spezialisierungen
Prüfer ist Spezialisierung von Mitarbeiter und besitzt als Schlüssel nur die Beziehung
Attribute von Mitarbeiter vererben sich auf Prüfer, σ(Prüfer) ⊆ σ(Mitarbeiter)
Zwei Prüfer, die gleichem Mitarbeiter zugeordnet sind, sind identisch
→ Problem: Prüfer kann nicht mehrere Fächer prüfen
Lösung: Zusätzliche Beziehung (l) oder mengenwertige Attribute (r)
Teilnehmerkardinalität
Standardkardinalität
Kardinalitätsangaben bei mehrstelligen Beziehungen
Kombination aus Vorlesung und Buch steht mit einem Professor in Verbindung
Keine Aussage wie viele einzelne Bücher oder Vorlesungen ein Professor empfiehlt
Optionalität von Attributen
Optionale Attribute werden mit einem Kreis markiert
Können NULL-Werte enthalten
Manche Sachverhalte sind nicht darstellbar
Semantische Beziehungen
Im ER-Modell nur Spezialisierung als IST-Beziehung darstellbar
Im Folgenden weitere semantische Beziehungen, die im ER-Modell nicht darstellbar sind
Partitionierung
Spezialfall der Spezialisierung
• Ausgehend von einer Entity gibt es mehrere Spezialisierungen, und diese Spezialisierungen sind disjunkt
Generalisierung
Umkehrung von Spezialisierung
Aggregierung
Entity aus einzelnen Instanzen anderer Entity-Typen zusammengesetzt, z.B. Auto aus Motor, Reifen,...
Sammlung oder Assoziation
Übergeordnete Entity ist Menge von Instanzen einer anderen Entity, z.B. Team als Gruppe von Personen
Beziehungen höheren Typs
Spezialisierung und Generalisierung auch für Beziehungstypen, z.B. Beziehung Ausleihe zu Kurzausleihe spezialisiert
Beziehungen zwischen Beziehungsinstanzen: Beziehungen zwischen Beziehungen oder Beziehungen zwischen Entity und Beziehung. Bsp.: Person behauptet Kind mag Film
Erweitertes ER-Modell (EER-Modell)
Schlüsselattribute, werden mit einem Kreis markiert
IST-Konstruktor wird durch Typkonstruktor ersetzt
Typkonstruktor
Ein Modellierungskonzept für Spezialisierung, Generalisierung und Partitionierung
• Spezialisierung
Zuletzt geändertvor einem Jahr