Datenbanken - user.phil.uni

Werbung
Datenbanken
Christof Rumpf
22.10.2008
1
Was ist eine Datenbank?
Datenbank, Datenbanksystem, englisch Data-Base-System, zentral
verwaltetes System zur widerspruchsfreien und permanenten
Speicherung großer Datenmengen eines Informationsgebietes (z. B.
naturwissenschaftliche Daten, Wirtschaftsstatistiken), auf die nach
unterschiedlichen Anwendungskriterien zugegriffen werden kann.
Ein Datenbanksystem besteht aus den auf der Grundlage eines
Datenbankmodells organisierten Datenbeständen (Datenbasis) und
dem Datenbank-Managementsystem (Abkürzung DBMS), einem
Softwarepaket, das die Datenbestände und Zugriffsrechte verwaltet
sowie eine Anwenderschnittstelle für die Datendefinition, -eingabe
und -manipulation enthält.
Meyers Lexikon
2
Datenbankmodelle
• Relational - verbreitetster Standard
• Deduktiv - relational + Prolog
• Objektorientiert - entspr. OO-Programmierung
• Objektrelational - relational + objektorientiert
• Hierarchisch - Baumstruktur, veraltet
• Netzwerk - Graphen
3
Datenbankmanagementsystem
• Ein DBMS ist ein Softwarepaket
– zur Speicherung und Organisation von Daten
aufgrund eines Datenbankmodells
– zur Verwaltung von Zugriffsrechten
– enthält Entwicklerschnittstelle zur
•
•
•
•
•
Definition von Datenmodellen
Eingabe und Pflege von Daten
Erstellung von ‚Sichten‘ auf Daten (Abfragen)
Erstellung von Berichten (Reportgenerator)
Erstellung von Benutzerschnittstellen für ‚Normalbenutzer‘
(Formulargenerator)
4
Relationale DBMS
• Desktop-DBMS
– MS Access, dBase, OpenOffice Base, …
– Müssen in einer Client-Server-Umgebung ganze
Datenbestände auf den Client laden, um eine Abfrage
auszuwerten.
• Server-DBMS
– Oracle, MySQL, Microsoft SQL Server, …
– Abfragen werden auf dem Server ausgewertet und
nur die Ergebnisse zum Client übertragen.
5
Aufbau relationaler DBs
Relationale Datenbanken bestehen aus Tabellen, die in Felder (Attribute)
und Datensätze (Relationen, Tupel) organisiert sind.
In jedem Feld stehen Daten eines bestimmten Typs (Text, Zahlen,
Datum/Zeit-Ausdrücke, Ja/Nein-Werte, BLOBs, …).
Alle Datensätze einer Tabelle haben einen gleichartigen Aufbau, sind gleich
lang. Eine Tabelle kann beliebig viele Datensätze enthalten.
Felder
z.B. Tabelle Personen
Datensätze
Id
Vorname
Name
1
Han
Solo
2
Harry
Potter
3
Madonna
4
Peter
Meier
5
Peter
Meier
6
Tabellenverknüpfung 1:n
Über Schlüsselfelder kann man Tabellen bequem miteinander verknüpfen.
Bei einer 1:n-Verknüpfung kann jeder Datensatz der 1-Seite beliebig vielen
Datensätzen der n-Seite zugeordnet werden. Umgekehrt kann jeder Datensatz
der n-Seite nur mit einem Datensatz der 1-Seite verknüpft sein.
Szenario: Jeder Studierende studiert genau einen Studiengang.
Detailtabelle
StgId = Fremdschlüssel
n
1
Mastertabelle
StgId = Primärschlüssel
PId
Vorname
Name
StgId
StgId
Studiengang
1
Han
Solo
3
1
Informationswissenschaft
2
Harry
Potter
2
2
Linguistik
3
Madonna
2
3
Informatik
4
Peter
Meier
1
5
Peter
Meier
2
Studiengänge
Studierende
7
Tabellenverknüpfung n:m
Bei n:m-Verknüpfungen können jedem Datensatz der einen beliebig viele
Datensätze der anderen Tabelle zugeordnet werden.
Die Vermittlung zwischen n- und m-Seite erfolgt über eine dritte Tabelle und
zwei 1:n-Verknüpfungen.
Szenario: Jeder Student besucht beliebig viele Seminare.
1
n
m
1
PId
Vorname
Name
TId
PId
SemId
Abschluss
SemId
Seminar
1
Han
Solo
1
1
1
BN
1
Wissensrepräsentation
2
Harry
Potter
2
1
3
BN
2
Datenbanken
3
Madonna
3
2
3
AP
3
Semantik
4
Peter
Meier
4
4
2
BN
5
Peter
Meier
5
5
2
AP
Personen
Teilnehmer
Seminare
8
Datenmodell
• Ein Datenmodell ist eine Abbildung von
Objekten (z.B. aus der ‚wirklichen‘ Welt) mit
ihren (relevanten) Eigenschaften und
Beziehungen in einem Datenbankmodell.
• Beispiel:
– Universität mit Fakultäten, Instituten, Angestellten,
Studenten, Studiengängen, Lehrveranstaltungen,
Abschlüssen, Semestern, Gebäuden, Räumen, …
9
Redundanz und Konsistenz
• Eine Datenbank soll redundanzfrei sein
– Jedes (komplexe) Objekt soll nur einmal repräsentiert
werden und in allen Beziehungskontexten referenziert
werden.
• Das leistet ein gutes Datenmodell (Normalformen).
• Eine Datenbank soll konsistent sein
– Keine Mutationsanomalien
• Das leistet ein gutes Datenmodell (Normalformen).
– Alle Referenzen sollen auflösbar sein.
• Das leistet ein gutes DBMS (referentielle Integrität).
10
Mutationsanomalien
• Treten bei der Repräsentation verschiedener
Entitäten in derselben Tabelle auf:
• Updateanomalien
– Redundante Einträge müssen mehrfach geändert
werden: Fehlerquelle
• Einfügeanomalien
– Zuordnungsprobleme bei unvollständigen
Datensätzen
• Löschanomalien
– Drohender Datenverlust: Beim Löschen einer Entität
gehen die Daten zu einer anderen evt. verloren
11
Normalformen
• Normalformen garantieren Redundanzfreiheit
und verhindern Mutationsanomalien
• 1. Normalform
– Alle Attribute haben atomare Werte
• 2. Normalform
– Jedes Nichtschlüssel-Attribut ist voll funktional
abhängig von jedem Kandidatenschlüssel
• 3. Normalform
– xxx
12
1. Normalform
Alle Attribute haben atomare Werte
PId
Vorname
Name
Seminare
1
Han
Solo
Wissensrepräsentation, Semantik
2
Harry
Potter
Semantik
3
Madonna
4
Peter
Meier
Datenbanken
5
Peter
Meier
Datenbanken
Semantik
PId
Vorname
Name
Seminare
1
Han
Solo
Wissensrepräsentation
1
Han
Solo
Semantik
2
Harry
Potter
Semantik
3
Madonna
4
Peter
Meier
Datenbanken
5
Peter
Meier
Datenbanken
1. NF
Semantik
13
Relationen, Schemata, Tupel
Seien D1, …, Dn n Domänen (Wertebereiche). Jede Domäne Di enthält
atomare Werte aus ausschliesslich einer der Superdomänen String, Integer,
Real, Boolean, oder Datum/Zeit.
Di = string | int | real | bool | datime
Ein Relationenschema  ist definiert als kartesisches Produkt der n
Domänen
 = D1  …  Dn
Eine Relation R ist definiert als eine Teilmenge des kartesischen Produkts
der n Domänen
R  D1  …  Dn
Ein Element t  R wird Tupel genannt.
Vgl. Kemper, Alfons & André Eickler (2006) Datenbanksysteme. Oldenbourg.
14
Attribute
Seien die Attribute A1, …, An eindeutige Namen für die Domänen D1, …, Dn
einer Relation R mit dom(Ai) = Di, dann notieren wir
R  dom(A1)  …  dom(An )
und
 = {A1, …, An}
oder
 = {A1: dom(A1), …, An :dom(An) }
Beispiele:
Student = {Name, Nachname, MatrNr}
Student = {Name:string, Nachname:string, MatrNr:int}
Das heisst: Ein Relationenschema ist eine Menge von Attributen und eine
Relation ist eine Menge von Tupeln als Teilmenge des kartesischen Produkts
der Domänen von Attributen.
15
Schlüssel
Seien t1, …, tm  R mit ti  dom(A1)  …  dom(An ).
Sei ti.Aj der Wert von Attribut Aj des Tupels ti  R.
As   wird Schlüssel oder Schlüsselattribut von R genannt, wenn gilt:
 ti, tj  R: ti.As  tj.As für i  j
Das heisst, die Werte eines Schlüsselattributs müssen für jedes Tupel eindeutig
sein. Schlüssel können auch aus mehreren Attributen zusammengesetzt sein:
Teilnehmer = {Person, Veranstaltung}
Schlüsselattribute werden oft künstlich erzeugt:
Person = {PId, Vorname, Nachname}
16
Funktionale Abhängigkeit
Eine funktionale Abhängigkeit ist eine Bedingung

bzw.
mit ,    von R
{A1, …, Ak}  {B1, …, Bm}
Eine solche funktionale Abhängigkeit ist erfüllt, wenn für alle Paare von Tupeln
r, t  R gilt
r. = t.  r. = t.
wobei
r. = t.  A  : r.A = t.A
Das heisst, immer wenn zwei Tupel gleiche Werte für alle Attribute A in 
haben, müssen auch die Werte aller Attribute B in  gleich sein, bzw  ist
funktional abhängig von .
Für eine Relation R mit Relationenschema  ist    ein Schlüssel, falls

17
Hülle, Armstrong-Axiome
Die Hülle F+ einer Relation R mit Relationenschema  ist die Menge aller
funktionalen Abhängigkeiten    mit ,    .
Die Hülle kann vollständig hergeleitet werden mit den drei ArmstongAxiomen:
Reflexivität
 ,   :               
Verstärkung
 ,  ,   :             
Transitivität
 ,  ,   :                 
18
Weitere Herleitungsregeln
Die Armstrong-Axiome sind vollständig, aber es gibt noch weitere
Herleitungsregeln für funktionale Abhängigkeiten:
Vereinigung
 ,  ,   :                    
Dekomposition
 ,  ,   :                    


Pseudotransitivität


 ,  ,  ,   :                       
19
Kanonische Überdeckung
Zwei Mengen funktionaler Abhängigkeiten F und G heissen genau dann
äquivalent, wenn ihre Hüllen gleich sind:
F  G  F+ = G +
Zu einer Menge funktionaler Abhängigkeiten F ist Fc eine kanonische
Überdeckung, wenn gilt:
1.
Fc  F , d.h. Fc  F 
2. a)
A   :  Fc           A     Fc
b)
B   :  Fc             B    Fc
3. Jede linke Seite einer funktionalen Abhängigkeit in Fc ist einzigartig.
20
Volle Funktionale Abhängigkeit
Eine Attributmenge  ist von einer Attributmenge  voll funktional abhängig

 

falls folgende Bedingungen erfüllt sind:
1.
2.
Falls

 


A  :    A ½ 
( ist minimal)
gilt, bezeichnet man  als Kandidatenschlüssel von .
Kandidatenschlüssel sind minimal bezgl. ihrer Attributmenge, d.h. man kann
kein Attribut aus  entfernen, ohne dass die volle funktionale Abhängigkeit
von  verlorengeht.
21
2. Normalform
Eine Relation R mit Relationenschema  ist in zweiter Normalform, wenn sie in
erster Normalform ist und jedes Nichtschlüssel-Attribut A   voll funktional
abhängig ist von jedem Kandidatenschlüssel der Relation.
PId
Vorname
Name
PId
Vorname
Name
Seminare
1
Han
Solo
1
Han
Solo
Wissensrepräsentation
2
Harry
Potter
1
Han
Solo
Semantik
3
Madonna
2
Harry
Potter
Semantik
4
Peter
Meier
3
Madonna
5
Peter
Meier
4
Peter
Meier
Datenbanken
5
Peter
Meier
Datenbanken
Semantik
{PId}  {Vorname, Name}
2NF
minimal
{PId, Seminare}  {Vorname, Name}
{PId, Seminare, Vorname, Name}  { } ?
PId
Seminare
1
Wissensrepräsentation
1
Semantik
2
Semantik
3
Semantik
4
Datenbanken
5
Datenbanken
22
SQL
SQL Structured Query Language ist eine Sprache zur Abfrage, Manipulation
und Definition von Daten in relationalen Datenbanken. Die Semantik von SQL
basiert auf der relationalen Algebra.
Sprachelemente
Abfrage:
SELECT
Manipulation:
INSERT, DELETE, UPDATE
Datendefinition:
CREATE, ALTER, DROP
Zugriffsrechte:
GRANT, REVOKE
SQL wird von fast allen relationalen DBMS unterstützt und ist standardisiert
nach ANSI und ISO.
MS Access: Jede in der Access-Entwurfsansicht erstellte Abfrage hat eine
äquivalente SQL-Darstellung, aber nicht alle SQL-Ausdrücke können in der
Access-Entwurfsansicht erstellt werden (z.B. UNION-Abfragen).
23
SELECT
Mit SELECT werden Sichten auf Daten erstellt, die unter bestimmten
Bedingungen editierbar sind.
SELECT [DISTINCT] S-Attribute
FROM F-Relation
[WHERE Where-Klausel]
[GROUP BY (Gruppierungsattribute) [HAVING Having-Klausel]]
[ORDER BY (Sortierungsattribut [ASC|DESC])+];
S-Attribute: Attribute aus F-Relation, Konstanten, Funktionen (auf Attributen)
F-Relation: Tabelle, Sichten (Abfragen), kartesische Produkte, Joins
Where-Klausel: Bedingungen für Attributwerte (Selektion)
Gruppierungsattribute: Gruppierung für Aggregatfunktionen
Having-Klausel: Bedingungen für Aggregatfunktionen auf Gruppierungsattributen
24
Herunterladen