Datenbanken -
Was ist das?

Inhaltsübersicht

Kurzer, exemplarischer Überblick

Beispiele für Datenbanken

Grundlegendes

Relationale Datenbanken

Relationale Datenbanken

Studenten:
MatNr
Name
Strasse
Ort
Telefon
0815
Maier
Meyerhofstr. 1
89075 Ulm
555 1234
4711
Müller
Mühlberg 4289075 Ulm
555 4321

Einschreibungen:
MatNr
StudNr
EinschrDatum
ExMatDatum
Studiengang
0815
1
1. 8. 1999
1. 9. 2000
Mathematik
4711
1
13. 8. 2000
(null)
Informatik-D
0815
2
1. 9. 2000
(null)
Informatik-B

Studiengaenge
Studiengang
Fakultät
Regeldauer
Abschlußgrad
Informatik-D
Informatik
9
Dipl. Inf.
Informatik-B
Informatik
6
Bachelor
Mathematik
Mathe-Wiwi
9
Dipl. Math.

Relationale Datenbanken

Relationale Datenbanken

Probleme:

Relationale Datenbanken

Zukunftsaussichten:

Objektorientierte Datenbanken

Hierarchische Datenbanken

Hierarchische Datenbanken

Beispiel

Bild Hierarchische Datenstruktur

Hierarchische Datenbanken

Netzwerk-Datenbanken


Netzwerk-Datenbanken

Beispiel

Darstellung Netzwerkdatenbank

Netzwerk-Datenbanken

Logische Datenbanken

Beispiel:

VaterVon(Hans, Otto).
VaterVon(Otto, Frank).
VaterVon(Otto, Peter).

GrossvaterVon(A, B) :-
VaterVon(A, C), VaterVon(C, B).

Datenstruktur: Hash

Hash
Key
Data
0
4711
Müller, Mühlbergstr. 42....
1


2


3
0815
Maier, Meyerhofstr. 1,...
4


5


6


Beispiel:

Schlüssel = Matrikelnummer
Hashfunktion = mod 7

Datenstruktur: ISAM

Endres
2
Maier
3
ZZZZ
4
2. Index-
Stufe
1


Aubele
02
Bebraham
03
Dietrich
04
2Endres
05
Hans
06
Kuller
07
3
Maier
08
Müller
09
Quackera
10
1. Index-
Stufe
01
Aalfisch
Bla
Abeler
Additi
--

02
Aubele
Bla
Annerman
Blubb
Appelt
4711
(...)
05
Endres
000111
Ezmail
CCC
Haarling
nst
(...)
10
Quackera
sadfax
Zirler

--

Daten

Datenstruktur: B-Baum



Grafik eines B-Baumes

Transaktionen

Zugriff: SQL

Codebeispiele:

SELECT Name, Strasse, Ort
FROM Studenten
WHERE MatNr = '4711'

SELECT Name, MatNr
FROM Studenten NATURAL JOIN Einschreibungen
WHERE ExMatDatum = NULL

Zugriff: Embedded SQL

Codebeispiel:

EXEC SQL INCLUDE SQLCA;

main() {
EXEC SQL BEGIN DECLARE SECTION;
int MatNr;
char Name[32];
long Anzahl;
EXEC SQL END DECLARE SECTION;

EXEC SQL CONNECT TO dbs98;

EXEC SQL SELECT count(*) INTO anzahl
FROM Studenten NATURAL JOIN Einschreibungen
WHERE ExMatDatum = NULL;
}

Zugriff: JDBC

Codebeispiel:

import java.sql.*;

public class Test {
public static void main( String args[]) {
Class.forName("org.postgresql.Driver");
Connection db = DriverManager.getConnection("jdbc:postgresql:database",
"user", "passwort");

Statement St = db.CreateStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Studenten");

while (rs.next()) {
System.out.println(rs.getString(1));
}
db.close();
}
}

Zugriff: ZODB

Codebeispiel

import ZODB
from ZODB import FileStorage, DB
from Persistence import Persistent

storage = FileStorage.FileStorage("/tmp/test-filestorage.fs")
db = DB(storage); conn = db.open(); dbroot = conn.root()
userdb = dbroot['userdb']

class User(Persistent): pass

X = User(); X.id = "schabi"
X.first_name = "Markus"; X.last_name = "Schaber"

userdb[X.id] = X

get_transaction().commit()

Datenschutz / Datensicherheit

Weiterführendes

Ausgelassene Themen - z. B.:

Literatur

Ende