Michael Schröpl: Das möcht ich näher kennenlernen :-)

Beitrag lesen

ich kenn mich in der Beziehung Datenbanken <-> Internet nicht so gut (besser: _nicht die Bohne_) aus. Die Antwort auf den Beitrag von Benjamin Mollenhauer (Wie eine Gruppenstruktur anlegen) hat mich jetzt gereizt (=Faszination&Interesse geweckt) und ich möchte mehr darüber wissen.

"Wissen" ist das richtige Wort dafür. Nicht "ausprobieren".

Zunächst einmal gibt es ganz verschiedene Konzepte zur Speicherung von Daten in Datenbanken. Fangen wir mal mit relationalen Datenbanken an (das ist SQL etc.) und mit objektorientierten (da kenne ich mich noch gar nicht aus).
Um zu verstehen, was Relationen sind und welche Vor- und Nachteile sie haben (also was man mit welchem Datenmodell wie elegant darstellen kann), dafür hilft m. E. nur Lesen.

Mein Wissen über Datenbankensysteme (eine Datenbank ist nämlich der "passive" Teil, so wie beim Dateisystem die Datei, im Gegensatz zum Dateisystem mit seinen Zugriffsfunktionen) stammt aus der (sehr guten) Oracle-Literatur, insofern kann ich leider keine URL posten (obwohl die Oracle-8-Dokumentation auf CD-ROM komplett in HTML vorliegt - das sind allerdings 57,3 MB! (*Etwas* mehr als Selfhtml, in der Tat.)

Zwischen einem "gerade so eben" Datenbanksystem wie Access und einem "richtigen" wie Oracle liegen noch einmal mehrere Größenordnungen an Qualität. Einerseits geht es darum, eine standardisierte Schnittstelle für den Zugriff zu Daten zu liefern - deshalb SQL und ODBC.
Andererseits geht es aber auch darum, daß die Datenbank selbst ein paar Qualitäten aufweist.
Beispielsweise "intelligente Daten".

Ich möchte nicht in 42 Anwendungen jedesmal denselben Konsistenztest einbauen, und auch nicht, wenn ich ihn aus einer Bibliothek nachladen kann - der 43. Anwender geht nämlich per SQL-Terminal an die Daten ran, und dann tschüß, Konsistenz. Tabellen eines "richtigen" Datenbanksystems haben Eigenschaften wie Primärschlüssel (in einer oder einer Kombination aus mehreren bestimmten Spalten einer Tabelle dürfen nur eindeutige Wert bzw. Wertekombinationen auftreten), Constraints (Werte einer Spalte müssen bestimmte Eigenschaften aufweisen, beispielsweise den Test einer in der Datenbank! definierten Prüfung bestehen oder in der Menge von Einträgen einer anderen Tabellen enthalten sein) und Trigger (wenn in einer Tabelle ein Datensatz eingefügt, geändert, gelöscht wird, dann wird automatisch Code in der Datenbank! ausgeführt, der bestimmte andere Vorgänge auslöst) usw. Es sind nicht mehr nur die Anwendungen, in denen die Intelligenz steckt, sondern die Daten selbst.
Der Anwender der Datenmanipulationssprache muß sich um all diese Dinge nicht kümmern (außer entsprechende Fehlersituationen zu behandeln, natürlich), wenn der Autor der Objekte in der Datenbeschreibungssprache ordentliche Arbeit gemacht hat. Beide Sprachen zusammen bilden SQL - deshalb ist der Sprachgebrauch hier etwas umständlich (englische Abkürzungen: DDL für data definition language und DML für data manipulation language).

Zu den Qualitäten des Datenbanksystems selbst (Transaktionskonzept, Logging, Locking auf vielerlei Ebenen, Zugriffspfade über selbstbalancierende Indexbäume, Tuning, ...) kann ich auf die Schnelle gar nicht so viel erzählen, wie das Thema hergibt. Das Grundlagenbuch RDBMS aus Oracle 7 umfaßt etwa 500 Seiten, das Administratorhandbuch auch, und von SQL ist in beiden noch nicht mal die Rede! Dazu kommen dann unzählige Zugriffssprachen und Tools ... ich habe einen Meter Oracle-Literatur hinter mit im Regal.

Nein, ich will Dich nicht verschrecken.
Im Gegenteil: Das Thema ist eben so ergiebig, daß man sich auch ein paar *Jahre* damit beschäftigen kann, ohne daß es langweilig wird. Das relativiert natürlich den schnellen Erfolg und das "Ausprobieren".
Viele Details sind auch nur bei "richtigen" Datenmengen interessant - dort aber eben auch wirklich wichtig. Bei der Forum-Archivsuche sind die Daten mit den 26 MB der zu durchsuchenden Indexdatei noch relativ "klein" ...