9. Einführung in Datenbanken 9.1 Motivation und einführendes Beispiel 9.2 Modellierungskonzepte der realen Welt 9.3 Anfragesprachen (Query Languages) 9.1 Motivation und einführendes Beispiel Datenbanken innerhalb einer größeren Anwendung dienen nicht nur der Informationsspeicherung, sondern sollen auch das Auslesen von Information (Retrieval) ermöglichen. Eine Datenbank könnte man auffassen als eine Menge von Dateien, wobei jede Datei z.b. als Folge von Records mit fester Struktur organisiert ist. Wir betrachten dazu als einfaches Beispiel den Ausschnitt einer Firmendatenbank: Es sind Informationen über Lieferanten, die lieferbaren Produkte und deren Preis zu speichern. Eine Realisierungsmöglichkeit benutzt die Datei Lieferanten mit den Recordkomponenten Lieferantenname, Lieferantenadresse, Produkt, Preis Für das Retrieval könnten folgende Anfragen sinnvoll sein: Liefert der Lieferant X das Produkt y? Wenn ja: zu welchem Preis? Gib alle Produkte des Lieferanten X aus Gib den Preis des Produkts Y für alle Lieferanten aus Einige Begriffe bei Datenbanken Datatenbankmanagementsystem (DBMS): erlaubt Benutzern, weitere Daten einzutragen, zu ändern, und abzufragen. Das DBMS ist verantwortlich für: Sicherheit: Zugriff nur über eine Passwort-Autorisation Integrität: Einschränkungen bei der Benutzung, dass keine widersprüchlichen Daten eingetragen werden Synchronisation: wenn mehrere Benutzer gleichzeitig auf Datenbankinhalte zugreifen Benutzersichten: Ein Benutzer darf ggf. nur auf einen Teil der Daten zugreifen können Struktur eines DBMS: definiert verschiedene Ebenen der Abstraktion Sicht 1 Benutzergruppe 1 Physikalische Datenbank Konzeptuelle Datenbank Sicht 2... Benutzergruppe 2 Physikalische Datenbank: Zweck: Speicherung der Dateien. File of Lieferanten Record Format: : CHAR(29) : CHAR(30) PRODUKT: CHAR(10) PREIS: INTEGER(5) Sicht n Benutzergruppe n Insbesondere ist für jede Datei zu überlegen, wie sie zu speichern ist, z.b sequenziell, als B-Baum,... Konzeptuelle Datenbank: Hier geht es zunächst um die Frage, wie die Dateien für eine Anwendung aufzubauen sind, d.h. welche Komponenten die Records haben sollen, damit bestimmte "gute" Eigenschaften erzielt werden. Strukturbeschreibung für Lieferanten(,, PRODUKT, PREIS) Probleme, dargestellt an diesem Beispiel : Redundanz: Adresse eines Lieferanten wird bei jedem von ihm gelieferten Produkt gespeichert Potentielle Inkonsistenz (update Anomalie): Adresse eines Lieferanten ändert sich, sie wird aber nicht in allen zugehörigen Tupeln geändert. 2001 K. Ecker Angewandte und praktische Informatik, Kap. 9: Datenbanken 9-1
Lösch-Anomalie: Wenn das letzte Produkt von Lieferant gelöscht wird, gehen dessen Name und Adresse verloren Einfüge-Anomalie: Wenn bei einem (neuen) Lieferanten noch kein Produkt bekannt ist, kann er nicht eingetragen werden Eine bessere Strukturierung würde man durch die Verwendung von zwei Dateien erhalten: Lieferant(, ) Produkte(, PRODUKT, PREIS) Es geht also unter anderem um die Frage, einen Ausschnitt der realen Welt geeignet in einer physikalischen Datenbank zu modellieren, so dass die vorhin genannten Probleme (möglichst) vermieden werden. Externe (Sichten-) Ebene: Auf dieser Ebene werden Operationen für das Arbeiten auf den Dateien zur Verfügung gestellt. Typische Operationen sind: Einfügen eines Records Löschen eines Records Modifizieren eines Records Finde einen Record mit einem bestimmten Wert in einer bestimmten Komponente Diese und weitere Operationen werden in der konzeptuellen Ebene z.b. auf der Basis der Relationenalgebra realisiert. 9.2 Modellierungskonzepte der realen Welt Abbildung der realen Welt auf Konzepte eines Daten(bank)modells Modelle Daten Parallele: Algorithmen abstrakter Entity-Relationship-Modell Flussdiagramme konkreter hierarchisches Modell Netzwerkmodell Relationenmodell PASCAL- Programme C- Programe 9.2.1 Entity-Relationship-Modell (Chen, 1976) Konzepte: Entity: Gegenstände der realen Welt, die voneinander unterscheidbar sind jede Professor, jeder Student, jede Prüfung im Tabellenmodell (später): eine Zeile einer Tabelle Entity-Menge: Ähnliche Gegenstände der realen Welt zusammengefasst Attribute: Domänen: Schlüssel: alle Professoren, alle Studenten, alle Prüfungen im Tabellenmodell: alle Zeilen einer Tabelle Eigenschaften von Entity-Mengen, die allen Entities dieser Menge gemeinsam sind Note ist Eigenschaft aller Prüfungen im Tabellenmodell: Spaltenüberschrift einer Tabelle Wertebereiche von Attributen (etwa Typen in PASCAL) Note hat Domäne 1.0.. 6.0 Menge von Attributen, die ein Entity identifizieren {MATRNR} ist Schlüssel für Studenten -- " -- ist kein Schlüssel für Prüfungen isa-relationship: Beziehung zwischen verschiedenen Entity-Typen der Form Entity-Menge 1 is a (spezial kind of) Entity-Menge 2 TUC-Verwaltung Entity-Menge 1 : Entity-Menge 2 : alle Angestellten is a alle Professoren 2001 K. Ecker Angewandte und praktische Informatik, Kap. 9: Datenbanken 9-2
Relationship: Allgemeine Beziehung zwischen verschiedenen Entity-Mengen Ausleihe ist Beziehung zwischen Büchern und Studenten mit zusätzlichem Attribut Ausleihdatum Funktionale/ Nichtfunktionale Beziehungen: one-to-one: many-to-one: Klassifizierung von Beziehungen nach "Wieviele Entities einer Entity-Menge können mit wie vielen Entities einer anderen Entity-Menge in Beziehung stehen? Für jedes Entity aus jeder Mengen existiert höchstens ein zugeordnetes aus der anderen Menge Entity-Mengen Professoren, Lehrstühle Ein Entity in Entity-Menge E 2 steht in Beziehung zu einer (ev. leeren) Menge von Entities aus E 1, jedes Entity in E 1 aber mit höchstens einem aus E 2 Entity-Mengen Professoren, Vorlesungen many-to-many: keine Einschränkung an die Beziehung Entity-Mengen Studenten, Vorlesungen Darstellung im E(ntity)-R(elationship)- Diagramm: Entity-Menge Attribut Verbindungskante zwischen Entity-Mengen und Attributen Verbindungskanten bei Schlüsselattributen Relationship Vollständiges Beispiel (Schlüssel sind unterstrichen) Entities: Studenten mit Attributen MATRNR Bücher mit Attributen ISBN TITEL AUTOR Professoren mit Attributen GEB.DATUM many-to-one Relationship one-to-one Relationship isa-relationship Lehrstühle mit Attributen BEZEICHNUNG FACHBEREICH Vorlesungen mit Attributen (Schlüssel) STUNDENUMFANG INHALT Relationships: Ausleihe many-to-one Bücher, Studenten Position one-to-one Professoren, Lehrstühle Veranstalter many-to-one Vorlesungen; Professor Teilnehmer many-to-many Studenten, Vorlesungen 2001 K. Ecker Angewandte und praktische Informatik, Kap. 9: Datenbanken 9-3
ER-Diagramm: MATRNR ISBN AUTOR TITEL STUDENT AUSLEIHE BUCH AUSLEIHDATUM TEILNEHMER GEB-DATUM VORLESUNG VERANSTALTER PROFESSOR STUNDEN- UMFANG INHALT POSITION LEHRSTUHL BEZEICHNUNG FACHBEEICH 9.2.2 Relationenmodell (Codd, 1970) Anschaulich: Student MATRNR "Relationenschema" 603425 606237 617543 Willi Meyer Heribert Müller Walter Schmidt "Attribut" Clausthal Buntenbock Clausthal } } "Relation" (Instanzen) "Attibutwert aus der Domäne INTEGER" mehrere Relationenschemata ergeben ein "Datenbanksschema" mehrere Relationen ergeben eine "Datenbank " eine Zeile einer Tabelle ist "Tupel einer Relation" Operatonen: Spalten einer Tabelle auswählen ( Projektion π ) Zeilen einer Tabelle auswählen ( Selektion σ ) Tabellen verknüpfen ( Verbund )... Begriffe identifizierende Attributmenge, Schlüssel, Primärschlüssel am Im Relationenschema Student ist {MATRNR, } "identifizierende Attributmenge". {MATRNR} ist "Schlüssel" Geht man davon aus, dass auch {, } Schlüssel ist, dann muss einer der beiden als "Primärschlüssel" ausgezeichnet werden, z.b. [MATRNR} 9.2.3 Abbildung eines ER-Diagramms in ein relationales Datenbankschema (1) Entity Relationenschema mit allen Attributen des Entities im Diagramm (2) Relationship zwischen Entity-Mengen E 1,..., E k (3) one-to-one Relationship zwischen E 1 und E 2 many-to-one Relationship zwischen E 1 und E 2 many-to-many Relationship zwischen E 1 und E 2 Relationenschema mit allen Primärschlüsseln der Entity-Mengen E 1,..., E k Vorsicht: gleiche Attribute in unterschiedlichen Entities sind vorher umzubenennen (z.b. ) beide Primärschlüssel werden Schlüssel im Relationenschema, das die Relationship darstellt Primärschlüssel von E 1 wird Schlüssel des entstehenden Relationenschemas Beide Primärschlüssel vereinigt ergeben einen neuen Schlüssel im entstehenden Relationenschema 2001 K. Ecker Angewandte und praktische Informatik, Kap. 9: Datenbanken 9-4
9.2.4 Relationenalgebra Es werden mehrere Operationen auf Relationen definiert, welche die Grundlage für Abfragesprachen bilden. Es gibt 5 grundlegende Operationen. Seien R und S Relationenschemata, und r und s Relationen auf R bzw. S. (a) Vereinigung (union) r s Voraussetzung: R und S müssen gleich sein (b) Mengendifferenz r s Voraussetzung: R und S müssen gleich sein (c) Projektion Sei R' ein Teilschema (Teilmenge) von R ; π R' (r) ist die Relation, die nur aus den Spalten von R' besteht (d) Selektion enthält alle Tupel von r, die eine spezifizierte Bedingung (COND) erfüllen. σ COND (r) (e) Verbund (join) verbindet zwei Relationen r und s "über gemeinsamen Attributwerten", r s d.h.: wenn R und S keine gemeinsamen Attribute haben, dann ist r s das kartesische Produkt von r und s; andernfalls, wenn R und S gleiche Attribute besitzen, dann werden jene Tupel von r und s zu neuen Tupeln kombiniert, die bei den gemeinsamen Attributen gleiche Werte haben. Weitere Operationen sind Einfügen, Löschen, Modifizieren, Umbenennen von Attributen Fortsetzung der ausführlichen Beispiels 1. Projektion: Erzeuge eine Liste aller Studenten mit Adresse π (, ) (Student) 2. Selektion: Gib alle Bücher aus, die der Autor Baker geschrieben hat σ (AUTOR='Baker') (Buch) 3. Verbund: Gib alle Studenten (nur Matrikelnummer) mit den von ihnen ausgeliehenen Büchern (Autor, Titel) aus, wobei das Ausleihdatum vor dem 1.1.02 liegt π (MATRNR,AUTOR,TITEL) (σ (AUSLEIHDATUM < 1.1.02) (Buch Ausleihe) ) 9.3 Anfragesprachen (Query Languages) Eine der bekanntesten unter den vielen existierenden Abfragesprachen ist SQL. SQL stellt neben Operatoren für das Erzeugen und Löschen von Relationenschemata Befehle für das Einfügen von Tupeln: INSERT Modifizieren: UPDATE Löschen: DELETE und für die Projektion/Selektion: SELECT zur Verfügung. Im folgenden werden nur einige wesentliche Aspekte des SELECT Befehls besprochen. Grundlegende Syntax von SELECT: SELECT (Angabe gewünschter Spalten) FROM (Angabe von Tabellen) WHERE (Selektionsbedingung für Tupel) Über Zusätze wie "GROUP BY", "HAVING", "ORDERED BY" und weitere SQL-Konzepte wird z. B. auf http://sqlcourse2.com/ verwiesen. Beispiele: 1. Erzeuge eine Liste aller Studenten mit Adresse: SELECT, FROM Student 2. Gib alle Bücher aus, die der Autor Baker geschrieben hat: SELECT ISBN, AUTOR, TITEL FROM Buch WHERE AUTOR = 'Baker' 3. Gib alle Studenten (nur Matrikelnummer) mit den von ihnen ausgeliehenen Büchern (Autor, Titel) aus, wobei das Ausleihdatum vor dem 1.1.02 liegt: SELECT MATRNR, AUTOR, TITEL FROM Buch, Ausleihe WHERE AUSLEIHDATUM < 1.1.02 ---- Ende Kapitel 9 ---- 2001 K. Ecker Angewandte und praktische Informatik, Kap. 9: Datenbanken 9-5