Weshalb ist eine Datenbank sinnvoll?

Hallo,
Ich habe mir kürzlich überlegt mich einmal mit Datenbanken (wird wohl MySQL sein) auseinander zu setzten. Ich frage mich aber noch immer ob und vorallem wann der Einsatz von Datenbanken sinvoll ist.
Mein Kopf denkt: Daten die in eine Datenbank gespeichert werden, könnten doch auch in anderen (einzelnen) Dateien gespeichert werden. Ich meine das Speichern auf der Festplatte sollte doch wohl (zumindest theoretisch) nicht schneller als so schnell wie die HD es zu lässt möglich sein.
Mein Kopf denkt noch: Auf Datenbanken kann einfacher und logischer Zugeriffen werden. (Ob es wirklich einfach ist weiss ich nicht, aber logisch sollte es sein :wink:.)

Angenommenes theoretisches Problem: Ein Login System auf einer Webseite; ich speichere sämtlich Usernamen und deren Password (wohl MD5 Hash) in eine Datei und zusätzlich einen Verweis auf eine Datei mit den Userinfos (also für jeden User eine weitere Datei [für Mail, ICQ, Geburtsdatum …]).
Weshalb sollte ich in diesem Fall auf eine Datenbank zurück greiffen? (obiges beispiel ist nach meiner ‚traditionellen‘ Methode)

Zum Schluss denkt mein Kopf noch: Das er wohl nicht so ganz richtig versteht wie eine Datenbank arbeitet und er sich deshalb auch über aufklärende Links freuen würde.

Hallo,

Angenommenes theoretisches Problem: Ein Login System auf einer
Webseite; ich speichere sämtlich Usernamen und deren Password
(wohl MD5 Hash) in eine Datei und zusätzlich einen Verweis auf
eine Datei mit den Userinfos (also für jeden User eine weitere
Datei [für Mail, ICQ, Geburtsdatum …]).
Weshalb sollte ich in diesem Fall auf eine Datenbank zurück
greiffen?

Es gibt gute Gründe, eine Datenbank zu nehmen

  1. Faulheit: Wenn du das mit den Textdateien implementierst, machst du dir unnötige Arbeit. Mit einer Datenbank ist das in 3 Zeilen Quellcode erledigt, du musst nicht überprüfen ob die Dateien tatsächlich existieren usw.

  2. Fehler: Wenn du keine Datenbank benutzt, fängst du irgendwann an, eine von Hand nachzubauen. Und dabei wirst du unweigerlich Fehler reinbringen, die es in der Datenbank-Engine schon einmal gab, und die dort inzwischen beseitigt wurden - in deinem Code nicht.

  3. Flexibilität: Datenbanken sind sehr flexibel, wenn du zusätzliche Daten speichern willst, benötigt das fasst keinen zusätzlichen Code - was man bei „flat files“ nicht behaupten kann.

Zum Schluss denkt mein Kopf noch: Das er wohl nicht so ganz
richtig versteht wie eine Datenbank arbeitet und er sich
deshalb auch über aufklärende Links freuen würde.

Ich glaube eher, dass du nicht verstehst, wie einfach eine Datenbank zu benutzen ist. Ich hatte anfangs eine relativ große Hemmschwelle und habe auch viel mit Flat Files gemacht, weil sich Datenbanken so „groß“ und kompliziert angehört haben, aber für 95% dessen, was man täglich braucht, sie sind kinderleicht zu benutzen.

Grüße,
Moritz

Es gibt gute Gründe, eine Datenbank zu nehmen

  1. Faulheit:
  2. Fehler:
  3. Flexibilität:

Zur Bestätigung von Moritz’ Aussagen noch ein Link über das ACID Prinzip relationaler Datenbanken, welches du über Flat Files nicht abbilden können wirst.
http://de.wikipedia.org/wiki/ACID

Außerdem darfst du nicht vernachlässigen, dass Datenbanken auch mit einem DatenBankManagementSystem daherkommen, welches für
-Datensicherheit
-Mehrbenutzerbetrieb durch Transaktionen
-Datenintegrität
-Anfrageoptimierung
-Bereitstellen von Indizes
sorgt

Hallo maetz,

Ich habe mir kürzlich überlegt mich einmal mit Datenbanken
(wird wohl MySQL sein) auseinander zu setzten. Ich frage mich
aber noch immer ob und vorallem wann der Einsatz von
Datenbanken sinvoll ist.

Ich möchte meinen Vorrednern nicht widersprechen, denn sie haben völlig recht mit ihren Argumenten.
Trotzdem möchte ich ergänzend einwenden, dass es sehr wohl Sinn macht, zu überlegen, ob man wirklich eine ausgewachsene Datenbank braucht. Wenn die ganze Datenbank nur aus einer Tabelle mit vielleicht vier oder fünf Spalten besteht und dann eventuell auf auf maximal 100 bis 200 Datensätze anwächst, wie es beim privaten Gebrauch oft der Fall ist, dann reicht meiner Meinung nach auch eine komma-, tab- oder sonswie separierte Datei (also CSV) völlig aus. Die kann man mit Skripten aus grep, awk oder Perl noch ganz gut beherrschen. Perl z.B. bietet mit dem DBI-Modul (Text::CSV) eine sehr klare Schnittstelle dafür an. Ähnliches gibt es sicher auch für andere Programmiersprachen.
Man kann auch einen anderen Ansatz wählen und die Daten in einer Excel- bzw. Calc-Tabelle verwalten. Das reicht für den Anfang völlig und hat den Vorteil, dass es auch eine gute Spielwiese für die Erforschung der richtigen Tabellenstruktur darstellt. Ich habe verschiedene Datensammlungen, die nur für mich da waren, so angefangen und später erst, wenn’s denn nötig war, per CSV in eine richtige Datenbank importiert. Aber oft war es eben nicht nötig.
Ansonsten treffen die angeführten Argumente für eine Datenbank natürlich zu, aber die zu erstellen, geht auch nicht von selbst. Normalisierung und Konstruieren der Abfragen sowie das Bauen einer Schnittstelle (will man nicht ständig „SELECT * FROM adressen WHERE …“ eingeben) brauchen auch ihre Zeit und den Einsatz des nötigen Gehirnschmalzes. Natürlich ist das nur ein einmaliger Aufwand, er ist aber für manchen so aufwändig, dass die Freude am Erstellen der eigenen MySQL-Adressdatenbank doch stark abnimmt und infolgedessen dieselbige manchmal halbfertig liegenbleibt.
Ausserdem, z.B. ein

grep -i novak adressen.txt

zeigt mir die Adresse und Telefonnr. meiner Tante schon an, bevor Firefox mit seiner eingebauten Webschnittstelle überhaupt MySQL sagen kann :wink:
Fazit: Man muss nicht unbedingt mit Kanonen auf Spatzen schiessen, manchmal tuts eine kleine Schleuder mindestens genauso gut. Erst wenn der Spatz zum Adler wird, kann man ja langsam die Kanone MySQL vorkramen.
Und zum Schluss, damit Du auch noch die gewünschten aufklärenden Links erhälst:
http://ffm.junetz.de/members/reeg/DSP/
http://www.schattenbaum.net/php/mstart.php
und zum allgemeinen Weiter- oder Vorherlesen:
http://www.admin-wissen.de/index.php?no_cache=1&id=1…

Ich wünsche dir viel Erfolg beim Datenbank lernen
Klaus Bernstein