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 Physikalische Datenbank Konzeptuelle Datenbank Sicht 1 Benutzergruppe 1 Sicht 2 Benutzergruppe 2 ... Sicht n Benutzergruppe n Physikalische Datenbank: Zweck: Speicherung der Dateien. Beispiel: File of Lieferanten Record Format: NAME: CHAR(29) ADRESSE: CHAR(30) PRODUKT: CHAR(10) PREIS: INTEGER(5) 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. Beispiel: Strukturbeschreibung für Lieferanten(NAME, ADRESSE, 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(NAME, ADRESSE) Produkte(NAME, 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 abstrakter konkreter 9.2.1 Daten Parallele: Algorithmen Entity-Relationship-Modell Flussdiagramme hierarchisches Modell Netzwerk- Relationenmodell modell PASCALProgramme CPrograme Entity-Relationship-Modell (Chen, 1976) Konzepte: Entity: Gegenstände der realen Welt, die voneinander unterscheidbar sind Beispiel: jede Professor, jeder Student, jede Prüfung im Tabellenmodell (später): eine Zeile einer Tabelle Entity-Menge: Ähnliche Gegenstände der realen Welt zusammengefasst Beispiel: Attribute: alle Professoren, alle Studenten, alle Prüfungen im Tabellenmodell: alle Zeilen einer Tabelle Eigenschaften von Entity-Mengen, die allen Entities dieser Menge gemeinsam sind Beispiel: Domänen: Note ist Eigenschaft aller Prüfungen im Tabellenmodell: Spaltenüberschrift einer Tabelle Wertebereiche von Attributen (etwa Typen in PASCAL) Beispiel: Schlüssel: Note hat Domäne 1.0 .. 6.0 Menge von Attributen, die ein Entity identifizieren Beispiel: {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 Beispiel: TUC-Verwaltung Entity-Menge 1 : alle Angestellten Entity-Menge 2 : alle Professoren is a © 2001 K. Ecker Angewandte und praktische Informatik, Kap. 9: Datenbanken 9-2 Relationship: Allgemeine Beziehung zwischen verschiedenen Entity-Mengen Beispiel: Ausleihe ist Beziehung zwischen Büchern und Studenten mit zusätzlichem Attribut Ausleihdatum Funktionale/ Nichtfunktionale Beziehungen: one-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 Beispiel: Entity-Mengen Professoren, Lehrstühle many-to-one: Ein Entity in Entity-Menge E2 steht in Beziehung zu einer (ev. leeren) Menge von Entities aus E1 , jedes Entity in E1 aber mit höchstens einem aus E2 Beispiel: Entity-Mengen Professoren, Vorlesungen many-to-many: keine Einschränkung an die Beziehung Beispiel: 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 many-to-one Relationship one-to-one Relationship isa-Relationship Vollständiges Beispiel (Schlüssel sind unterstrichen) Entities: Relationships: © 2001 K. Ecker Studenten mit Attributen MATRNR NAME ADRESSE Bücher mit Attributen ISBN TITEL AUTOR Professoren mit Attributen NAME GEB.DATUM ADRESSE Lehrstühle mit Attributen BEZEICHNUNG FACHBEREICH Vorlesungen mit Attributen NAME (Schlüssel) STUNDENUMFANG INHALT Ausleihe many-to-one Bücher, Studenten Position one-to-one Professoren, Lehrstühle Veranstalter many-to-one Vorlesungen; Professor Teilnehmer Studenten, Vorlesungen many-to-many Angewandte und praktische Informatik, Kap. 9: Datenbanken 9-3 ER-Diagramm: MATRNR ISBN ADRESSE AUTOR NAME TITEL STUDENT AUSLEIHE BUCH AUSLEIHDATUM NAME TEILNEHMER ADRESSE GEB-DATUM VORLESUNG NAME VERANSTALTER PROFESSOR INHALT POSITION STUNDENUMFANG LEHRSTUHL BEZEICHNUNG 9.2.2 FACHBEEICH Relationenmodell (Codd, 1970) Anschaulich: "Attribut" Student MATRNR NAME ADRESSE } "Relationenschema" 603425 606237 617543 Willi Meyer Heribert Müller Walter Schmidt 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 Zeilen einer Tabelle auswählen Tabellen verknüpfen ... ( Projektion π ) ( Selektion σ ) ( Verbund ) Begriffe identifizierende Attributmenge, Schlüssel, Primärschlüssel am Beispiel: Im Relationenschema Student ist {MATRNR, NAME} "identifizierende Attributmenge". {MATRNR} ist "Schlüssel" Geht man davon aus, dass auch {NAME, ADRESSE} 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 (2) Relationship zwischen Entity-Mengen E1 , ..., Ek (3) ⇒ ⇒ Relationenschema mit allen Attributen des Entities im Diagramm Relationenschema mit allen Primärschlüsseln der Entity-Mengen E1 , ..., Ek Vorsicht: gleiche Attribute in unterschiedlichen Entities sind vorher umzubenennen (z.B. NAME) one-to-one Relationship zwischen E1 und E2 ⇒ beide Primärschlüssel werden Schlüssel im Relationenschema, das die Relationship darstellt many-to-one Relationship zwischen E1 und E2 ⇒ Primärschlüssel von E1 wird Schlüssel des entstehenden Relationenschemas many-to-many Relationship zwischen E1 und E2 ⇒ 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. r∪s Voraussetzung: R und S müssen gleich sein (b) Mengendifferenz r–s Voraussetzung: R und S müssen gleich sein (c) Sei R' ein Teilschema (Teilmenge) von R ; πR' (r) ist die Relation, die nur aus den Spalten von R' besteht (a) Vereinigung (union) Projektion (d) Selektion enthält alle Tupel von r, die eine spezifizierte Bedingung (COND) erfüllen. σCOND (r) (e) verbindet zwei Relationen r und s "über gemeinsamen Attributwerten", r Verbund (join) 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 π(NAME , 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 NAME, ADRESSE 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