9. Einführung in Datenbanken

Werbung
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
Herunterladen