Datenbanken -
Was ist das?


Distributed Systems Panel, 19. Chaos Communication Congress, Berlin, 2002

 

Inhalt:

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

Folgen:

Relationale Datenbanken

Zukunftsaussichten:

Objektorientierte Datenbanken

Hierarchische Datenbanken

Hierarchische Datenbanken

Beispiel

Bild Hierarchische Datenstruktur

Hierarchische Datenbanken

Netzwerk-Datenbanken

Netzwerk-Datenbanken

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

Datenstruktur: Hash

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


2


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


5


6


Beispiel:


Datenstruktur: ISAM

Endres 2
Maier 3
ZZZZ 4
2. Index-
Stufe
1 Aubele 02
Bebraham 03
Dietrich 04
2 Endres 05
Hans 06
Kullerer 07
3 Maier 08
Müller 09
Quackera 10
1. Index-
Stufe
01 Aalfisch Bla
Abeler Additi
-- --
02 Aubele Blabla
Annerman Blubb
Appelt 4711
(...)
05 Endres 000111
Ezmail CCC
Haarling nst
(...)
10 Quackera sadfax
Zirler --
-- --
Daten

Beispiel:
2-Stufiger Index

Datenstruktur: ISAM

Vorteile:

Nachteile:

Datenstruktur: B-Baum

Grafik eines B-Baumes

Transaktionen

Zugriff: SQL

Beispiel: Adresse eines Studenten

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

Beispiel: Alle aktuellen Einschreibungen

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

"Gewährleistung und Begrenzung des Informationsflusses"

Weiterführendes

Ausgelassene Themen - z. B.:

Literatur

Erinnerung: Alles auch online