XML-Datenbanken - fbi.h

Werbung
Kapitel 12
Warum DB-Systeme,
nichtrelationale Datenmodelle
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
1
Eigenschaften von DB-Systemen im Vergleich zu
Dateisystemen
DB-System
Dateisystem
Abstraktionsebene:
logisch (DB-System
kümmert sich um
Speicherung, z. B. alle Daten
zur Firma in einer DB)
auf physischer Ebene
(Nutzer muss sich um physische
Speicherung kümmern)
Abspeicherung:
in einer oder mehreren
Datenbanken des Unternehmens
in mehreren Dateien
(jeder hat seine privaten
Dateien)
Beschreibung der Daten:
im Data Dictionary, d. h.
zentral für alle Anwendungsprogramme
im Anwendungsprogramm
Zugriff / Mehrbenutzersynchronis. über DBS (Kontrolle hat DBS)
über BS / eigene Programmierung
Dienstprogramme
(Backup, Recovery)
über DBS
i. d. R. eigene Programmierung
Verknüpfungen zwischen Daten
über DBS
i. d. R. eigene Programmierung
Entwicklungstools (GUI etc.)
teilweise integriert in DBS
isolierte Entwickungstools
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
2
Wie arbeiten Anwendungsprogramme
mit Dateien /
mit DB?
AnwendungsProgr 1
?
AnwendungsProgr 2
.
AnwendungsProgr 3
. . .
AnwendungsProgr n
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
3
Arbeiten mit Dateien
AnwendungsProgr. 1
Datenstruktur (DS) ist im Programm definiert.
Änderung DS
⇒Änderung in allen Anwendungsprogrammen,
die mit Datei arbeiten
(keine Datenunabhängigkeit)!
Datei A
AnwendungsProgr. 2
Datei B
AnwendungsProgr. 3
...
Jeder Nutzer der Daten muss physische
Struktur kennen.
...
Datei Z
AnwendungsProgr. n
Arbeiten mit einem DBS
AnwendungsProgr. 1
AnwendungsProgr. 2
Daten
(DB)
DBMS
AnwendungsProgr. 3
DBMS kennt logische und physische Datenstruktur
DBMS ist auch Zugriffsfilter (Sichten)
...
AnwendungsProgr. n
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
4
Vergleichendes Beispiel zu DB-System / Dateisystem
DB-System:
Dateisystem (in C++):
SELECT
FROM
WHERE
#include <fstream.h>
..
typedef struct {
char
name [30];
int
plz;
char
ort [30];
char
telNr [20]; //obwohl: nicht benötigt
} kunde_record;
kunde_record buffer;
fstream kunden_file;
file.open (“kunden.dat“, ios::in | ios::binary);
while (!file.eof())
{
file.read( (char*) &buffer, sizeof(kunde_record) );
if buffer.ort = “Darmstadt“
{
cout << buffer.name << buffer.plz << …
}
}
…
name, plz, ort
kunde
ort = ‘Darmstadt‘,
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
5
Auswirkungen von Änderungen in normalen Dateien
Frage: Welche Auswirkungen haben Änderungen in der Datenstruktur von Dateien auf
die die Dateien verwendenden Anwendungsprogramme?
z. B. Einfügung Vorname
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
6
Auswirkungen von Änderungen in normalen Dateien
Frage: Welche Auswirkungen haben Änderungen in der Datenstruktur von Dateien auf
die die Dateien verwendenden Anwendungsprogramme?
Änderungen in den Anwendungsprogrammen notwendig, da Dateibeschreibung in allen
Programmen, die die Datei verwenden, redundant abgelegt sind.
d. h. 5 Programme arbeiten mit einer Datei,
1 Programm benötigt zusätzliches Feld
=> alle 5 Programme müssen geändert werden.
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
7
Was sind Metadaten?
Es gibt die eigentlichen Daten:
Krefelder Töpfermarkt, Krefeld, 10.-11.12.2012, …
Wenn man die Daten so hinschreibt, weiß man noch nicht, was die Daten bedeuten, in
welchen Formaten sie gespeichert werden etc.
Abhilfe: Man gibt die Bedeutung, Formate etc. immer mit den Daten an:
Relation Markt besteht aus: Bezeichnung: Krefelder Töpfermarkt, char(30);
Standort: Krefeld, int; …
Geht Richtung XML:
<Markt>
<Bezeichnung>Krefelder Töpfermarkt</Bezeichnung>
<Standort>Krefeld</Standort>
<Termin>10.-11.12.2008</Termin>
<Oeffnungszeiten>8-20 Uhr</Oeffnungszeiten>
<URL>www.KrefelderToepfermarkt.de</URL
</Markt>
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
8
Was sind Metadaten?
Lösung in DB-Systemen:
- Die Daten haben immer wieder gleichen Aufbau
- Man trennt Beschreibung des Aufbaus der Daten von den eigentlichen Daten
Man unterscheidet zwischen:
- eigentlichen Daten in der Datenbank und
- Metadaten
Metadaten werden in der Schemabeschreibung abgelegt:
Beispiel:
Relation Markt mit Attributen Bezeichnung char(30); Standort int; …
Diese Beschreibungen stehen im Data-Dictionary des DBS.
Krefelder Töpfermarkt, Krefeld, 10.-11.12.2012,
Darmstädter Töpfermarkt, Darmstadt, 10.-11.03.2012, ...
sind die eigentlichen Daten
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
9
Warum DBS? (1)
Redundanzvermeidung:
Ein Fakt in der realen Welt ist nur ein Mal in der DB abgelegt.
Warum?
-> siehe Kapitel ERD, Normalisierung
⇒ Verringerung von Inkonsistenzen
(keine widersprüchlichen Informationen zum gleichen Objekt):
Wenn z. B. eine Person mit Adresse doppelt vorkommen würden, könnte nach einem Umzug
der Person die eine Adresse geändert sein, die andere wäre noch auf dem alten Stand.
Beispiel:
bestell.dat: 25.1.2005, Meyer, 64288, Bensheim, …<- geändert, da umgezogen
kunden.dat: Meyer,64295, Darmstadt, …
<- aus Versehen nicht geändert
Frage: Wie modellieren wir, um dies zu vermeiden?
Einheitliche Sicht auf die Daten
⇒ Standards durchsetzbar
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
10
Warum DBS? (2)
Datenunabhängigkeit:
Anwendungen müssen sich nicht um Details der Speicherstruktur und Zugriffstechniken
kümmern. (physische Datenunabhängigkeit)
Änderungen z. B. von Speicherstrukturen (physische Datenunabhängigkeit), Attributanzahl
etc. (logische Datenunabhängigkeit) sind (oft) ohne Auswirkungen auf
Anwendungsprogramme.
Beispiel: Länge des Nachnamens wird von 30 auf 40 Zeichen gesetzt oder zusätzliches
Attribut Qualifikation wird eingeführt.
Streichen eines Attributs ist auch in DB-Systemen oft ohne Auswirkungen auf
Anwendungsprogramme nicht möglich!
Spontane Abfragen mit Hilfe des Dialogabfragesystems
Beispiel: Selektiere alle Mitarbeiter, die mehr als 50000 € verdienen.
Zugriffskontrolle bei parallelen Zugriff:
Benutzung von Daten durch mehrere Programme gleichzeitig mit Kontrolle der Zugriffe,
so dass z. B. keine „Lost Updates“ entstehen (Lesen Müller durch Ben. A, Lesen Müller
durch Ben. B, Ändern Geh. und Zurückschreiben durch Ben. A, Ändern Geh. und
Zurückschreiben durch Ben. B => Änderung von Ben. A wäre verloren!)
Beispiel: Änderung des Gehalts von Müller durch A: + 10%, durch B: + 100 €.
Frage: Welcher Update geht verloren?
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
11
Warum DBS? (3)
Datensicherheit:
Schutz vor systembedingten Fehlern wie Stromausfällen, Systemabstürzen,
Softwarefehlern
Datenschutz:
Schutz der Daten vor unerlaubter Nutzung oder böswilliger Manipulation oder Löschung
durch
Zugriffskontrolle, d. h. Setzen von Sperren, durch DBS auch auf Feld- und Satzebene
(nicht nur Read-, Write-Sperren ganzer Dateien)
Beispiel: Nur Personalabteilung dürfen Gehälter der Mitarbeiter sehen.
Integritätskontrolle:
Schutz der Konsistenz der Daten vor unbeabsichtigten Eingabefehlern.
Kontrolle von Integritätsbedingungen durch DBS (z. B. Wertebereiche,
Existenzabhängigkeiten zwischen Datensätzen, allg. Bez. zwischen Werten)
Beispiel: Alter von Mitarbeitern muss immer > 14 sein.
Nachname ist max. 30 Zeichen lang.
Zu Fremdschlüsselwert muss in anderer Relation Schlüsselwert existieren.
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
12
Warum DBS? (4)
Beziehungen zwischen Daten:
können definiert und vom System kontrolliert werden. (referenzielle Integrität)
Beispiel: Bestellung hat Beziehung zu Kunde.
Zu Bestellung gibt es immer einen Kunden
Verteilung von Daten:
kann vom DBS verwaltet werden.
Multiple Datensichten:
Jede Anwendung kann eine eigene (externe) Sicht auf die Daten haben.
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
13
Unterschied DB, DBS?
Datenbank (DB)
= Datenbestand
Datenmanagementsystem (DBMS)
= Software zum Arbeiten mit Datenbanken
Datenbanksystem (DBS)
= DB + DBMS
aber: oft synonym zu DBMS verwendet.
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
14
Gruppen von Personen, die mit dem DBS arbeiten
Daten-Administrator (DA) / Datenbank-Designer
- Hat zentrale strategische Verantwortung für die Daten.
- Entscheidet welche Daten für wen gespeichert werden.
Datenbank-Administrator (DBA)
- Hat technische Verantwortung.
- Entscheidet, wie Daten gespeichert werden.
Anwendungsentwickler
Entwickelt Anwendung z. B. in Programmiersprache.
Arbeitet hinsichtlich der Definition von Daten mit DBA, DA zusammen.
Endanwender
Hat Zugriff auf Daten über GUIs / Abfragesprache.
Zusammenarbeit mit Anwendungsentwickler in Entwicklungsphase.
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
15
Historische Entwicklung von Datenbanksystemen












1965: Firma IBM entwickelt das DBS: IMS, das auf dem Hierarchischen Datenmodell
beruht
1969 Standardisierungsgremium CODASYL schlägt Netzwerkmodell vor
1976: Firma SIEMENS (UDS) u.v.a. entwickeln DBS nach dem Netzwerk-Datenmodell
seit 1970: Codd definiert das Relationale Datenmodell
1971 –1981: IBM entwickelt Prototyp für Relationales Datenbanksystem, Name:
“System /R” mit Datenbanksprache: Sequel (~SQL)
seit 1980: ORACLE, Relationales DBS mit SQL als Datenbanksprache auf dem Markt
seit 1982: SQL/DS der Firma IBM mit SQL auf dem Markt
seit 1984: Relationale DBS für PCs auf dem Markt: DBASE, ACCESS auch ORACLE
seit Ende der 80-er: Entwicklung Objektorientierter DBS: GEMSTONE,
ObjectStore, O2, POET (jetzt: FastObjects) u.v.a.
1992: SQL2-Standard wird verkündet; gleichzeitig Arbeit an einer OO-Erweiterung von
SQL (Objektrelationale DBMS). Arbeitsname: SQL3
1999: XML-Datenbanken
aktuelle Situation: Client-Server–Prinzip beim Einsatz von Datenbanksystemen,
Einsatz von Datenbanksystemen in integrierten Softwaresystemen (hauptsächlich
noch immer: Relationale DB-Systeme), Objektorientiertes Mapping (OO <-> relational)
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
16
Hierarchisches Datenmodell - 1:n-Beziehungen
Schema des hierarchischen Datenmodells
Dekor
(0,*)
7
ist versehen mit
(1,1)
Produkt
Beziehungen
zwischen den
konkreten
Datenobjekten:
Tasse S22
Pflanzendekor
Teller S22
Tierdekor
Untertasse S22
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
Vase S17
Vase S23
17
Hierarchisches Datenmodell - Navigation
Pflanzendekor
Tasse S22
Teller S22
get unique <Schlüsselwert>
get next
get next within parent
get hold...
insert
delete
replace
Tierdekor
Untertasse S22
get
get
get
get
get
Vase S17
Vase S23
unique Dekor ( DekorNr = ‘S22‘ );
next within parent;
next;
next within parent;
next;
Ergebnis?
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
18
Hierarchisches Datenmodell - n:m-Beziehungen
Problem: Realisierung von n:m-Beziehungen
E/R-Modell
Kunde
(0,*)
(0,*)
7
Produkt
7: erhält geliefert
Hierarchisches Modell:
Kunde
Produkt
Bedeutung
Pfeil:
1:n-Beziehung
Nicht hierachische
Beziehungen nur kompliziert
und mit Einschränkungen
realisierbar
Lieferung
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
19
Netzwerk-Datenmodell - n:m Beziehungen
Wie bei Relationenmodell: Auflösung von n:m-Beziehungen in zwei 1:n-Beziehungen
(0,*)
E/R-Modell
(0,*)
7
Kunde
Produkt
7: erhält geliefert
Netzwerkmodell
Kunde
Produkt
erhält geliefert
wird geliefert
Lieferung
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
Owner-Record-Typ
Set-Typ
Member-Record-Typ
20
Netzwerk-Datenmodell - Navigation
Kopplung der Recordtypen nicht wie beim Relationenmodell durch Schlüssel-Fremdschlüssel,
sondern: durch Zeiger (Set-Typen)
Tasse S22
Lieferung 07
Lieferung 11
Kunde 1
Teller S22
Lieferung 12
wird_geliefert
erhält_geliefert
Vase S17
Lieferung 08
Kunde 2
Lieferung 10
Anfrage:
Finde alle Produkte, die an den Kunden Meier geliefert werden.
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
Bedeutung
Pfeil:
Zeiger
21
Netzwerk-Datenmodell - Navigation
Lieferung 07
Lieferung 11
Lieferung 12
Kunde 1
Tasse S22
wird_geliefert
erhält_geliefert
Kunde 2
Lieferung 08
Lieferung 10
Teller S23
Vase S17
find x record by calc-key
find owner of current x set
find next y record within current x set
Anfrage: Finde alle Produkte, die an den Kunden mit Kundennummer =1 geliefert werden:
KNR sei der
calc-key im
Record Kunde
Kunde.KNR := 1;
find Kunde record by calc-key;
while not fail do
begin
find next Lieferung record within current erhält_geliefert;
find owner of current wird_geliefert set;
get Produkt;
...
end;
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
22
Objektorientierte DBS - 1:n Beziehungen
– FastObjects/C++ - Notation
Markt (Bezeichnung, Standort, Kategorie)
UML Klassendiagramm:
Markt
0 .. *
1 .. 1
Ansprechpartner
Veranstalter (Name, Typ)
Veranstalter
in OOP,OOD:
Welche Mögl. der Realisierung d. Bez.?
persistent class Markt
{
PtString Bezeichnung, Standort;
int Kategorie;
Veranstalter* derVeranstalter;
public :
Markt (char*, char*, int, Veranstalter*);
...
};
persistent class Veranstalter
{
PtString Name;
int Typ;
cset <Markt*> dieMaerkte;
public :
Veranstalter (char*, int);
...
Methoden der Klasse
void Append (Markt*);
};
Bemerkung: Wir können allerdings auch Klassen mit noch komplexeren Strukturen innerhalb der Klasse definieren !
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
23
Objektorientierte DBS - Navigation
Gesucht: Alle Markt-Standorte, die vom Veranstalter „Meyer“ organisiert werden.
select m.Standort
from m in AlleMaerkte, v in m.derVeranstalter
where v.Name = “Meyer“
Ergebnis:
{ Sommerhausen, Krefeld }
AlleMaerkte
B: Int. Töpfermarkt
S: Krefeld
K: Töpfermarkt
derVeranstalter:
B: Töpfermarkt
S: Sommerhausen
K: Töpfermarkt
derVeranstalter:
AlleVeranstalter
Zeiger
Name: Meyer
Typ: 2
dieMaerkte:
Name: Schulze
Typ: 3
dieMaerkte:
B: Int. Töpfermarkt
S: Hanau
K: Töpfermarkt
derVeranstalter:
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
24
XML-Datenbanken – Beispiel eines XML-Dokuments
XML-Dokument ist einfache Textdatei:
Kopfzeile mit XML-Version,
verwendeten Zeichensatz
(UTF-8 ist Defaultwert
– kann weggelassen werden)
und Angabe, dass DTD existiert
<?xml version=“1.0“ encoding=“UTF-8“ standalone = “no“>
<!doctype Markt SYSTEM “markt.dtd“>
Verweis auf Strukturdaten
<Markt>
<Bezeichnung>Krefelder Töpfermarkt</Bezeichnung>
<Standort>Krefeld</Standort>
<Termin>10.-11.12.2012</Termin>
<Oeffnungszeiten>8-20 Uhr</Oeffnungszeiten>
<URL>www.KrefelderToepfermarkt.de</URL>
</Markt>
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
Daten
25
XML-DTD
Das zu dem obigen XML-Dokument Markt passende „Document Type Definition“ (DTD)
mit Angabe des Formats:
<?xml version="1.0" encoding="UTF-8">
<!ELEMENT Bezeichnung (#PCDATA)>
<!ELEMENT Standort (#PCDATA)>
<!ELEMENT Termin (#PCDATA)>
<!ELEMENT Oeffnungszeiten (#PCDATA)>
<!ELEMENT URL (#PCDATA)>
<!ELEMENT Markt (Bezeichnung, Standort?, Termin?,
Oeffnungszeiten+, URL?)>
mehrere Märkte:
<!ELEMENT Maerkte (Markt+)>
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
26
XML-Schema
XML-Namespace = xs
<xs:element name="Markt">
<xs:complexType>
<xs:sequence>
<xs:element name="Bezeichnung" type="xs:string"/>
<xs:element name="Standort" type="xs:string"/>
<xs:element name="Oeffnungszeiten" type="xs:string"/>
<xs:element name="Termin" type="xs:string"/>
<xs:element name="URL" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
--mehrere Märkte:
<xs:element name="Maerkte">
<xs:complexType>
<xs:sequence>
<xs:element ref="Markt" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
27
XML - n:m-Beziehung
Extensible Linking Language (XLink)
Markt
Produkt
- Nummer
: int
- Bezeichnung
: String
- Grösse
: double
- Fassungsvermögen : double
- Preis
: double
- Funktion
: int
- Foto
: BLOB
+ getAnzVerkauft () : int
1..*
0..*
- Bezeichnung
- Standort
- Termin von
- Termin bis
- URL
- Kategorie
- Ranking
- Standgebühr pro qm
+ getDauer () : int
: String
: String
: Date
: Date
: String
: int
: int
: double
Angebot
- Anzahl : int
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
28
XML - n:m-Beziehung
Extensible Linking Language (XLink)
<!ELEMENT Markt (Bezeichnung, Standort, Termin,
Oeffnungszeiten, URL)>
<!ATTLIST Markt Nr ID #REQUIRED>
...
<!ELEMENT Produkt (.....)>
<!ATTLIST Produkt Nr ID #REQUIRED>
...
.
<!ELEMENT WirdAngebotenAuf (Anzahl)>
<!ATTLIST WirdAngebotenAuf Produkt Nr IDREF #REQUIRED
Markt Nr IDREF #REQUIRED>
Prof. Dr. Wolfgang Weber, Vorlesung Datenbanken
eindeutigen Identifikation
Bezug auf
eindeutigen Identifikation
29
Herunterladen