datenbanken:datenbanken

Datenbanken

Ein Datenbanksystem (DBS) ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS ist es, große Datenmengen effizient, widerspruchsfrei und dauerhaft zu speichern und benötigte Teilmengen in unterschiedlichen, bedarfsgerechten Darstellungsformen für Benutzer und Anwendungsprogramme bereitzustellen.

Ein DBS besteht aus zwei Teilen: der Verwaltungssoftware, genannt Datenbankmanagementsystem (DBMS) und der Menge der zu verwaltenden Daten, der eigentlichen Datenbank (DB).

Somit ergibt sich die einfache Formel: Datenbanksystem (DBS) = Datenbank (DB) + Datenbankmanagementsystem (DBMS).

Die Verwaltungssoftware (DBMS) organisiert intern die strukturierte Speicherung der Daten gemäß einem vorgegebenen Datenbankmodell (z.B. dem relationalen Datenbankmodell) und kontrolliert alle lesenden und schreibenden Zugriffe auf die Datenbank. Als externe Schnittstelle stellt sie eine Datenbanksprache zur Formulierung von Abfragen, zum Einfügen und Ändern von Daten und für administrative Befehle zur Verfügung. Die Datenbank enthält zusätzlich zu den eigentlichen Daten noch die Beschreibung der Daten, den sogenannten Datenkatalog.

Quelle: Wikipedia

Der Entwurf einer Datenbank beschreibt den Prozess der Umsetzung einer Mini-Welt in ein Datenbankschema, das in der Lage ist, die gewünschten Daten dieser Welt mit ihren Eigenschaften und Beziehungen darzustellen.

Der Entwurf, an den sich dann die Implementierung anschließt, besteht im Wesentlichen aus diesen Schritten:

  • Modellierung
  • Umsetzung in ein Relationenschema
  • Normalisierung

© Quelle

Der Entwurf bietet sich theoretisch mit dem ER-Modell (wenn keine Daten vorliegen) oder mit den Normalisierungen an.

  • Anomalien durch fehlerhafte Normalisierung
  • bei Abfragen über zwei Tabellen die Verbindungs-/Brückentabellen nicht dazu genommen (Multiplikation der Datensätze da ein einfaches JOIN benutzt wird, statt dem nötigen INNER JOIN)
  • ON DELETE besser nur mit WHERE benutzen, sonst löscht man schnell alles

Ein Datenbankindex, oder kurz Index, ist eine von den Datenstruktur getrennte Indexstruktur in einer Datenbank, die die Suche und das Sortieren nach bestimmten Feldern beschleunigt. Durch einen sinnvoll gewählten Index können Abfragen bedeutend schneller ablaufen, daher sollte man hier besonders sorgfältig planen.

Im professionellen Einsatz von Datenbanken kommt man um das Thema Transaktionen nicht herum. Wenn Fehler (Hardwarefehler wie Festplattenausfall, Softwarefehler wie konkurrierende Schreibvorgänge) während der Ausführung oft komplexer und damit zeitaufwändiger Aktionen geschehen sind die Daten nicht mehr konsistent. Deshalb sollte die verwendete Datenbankengine Transaktionen unterstützen die mit dem Kürzel ACID (oder AKID im Deutschen) erwünschte Eigenschaften von Transaktionen bei Datenbankmanagementsystemen (DBMS) oder verteilten Systemen beschreiben.

Fehlerquelle Schreibcaches

Zu Beachten sind Verzögerungen durch Schreibcaches (write-back). Während Änderungen noch im Schreibcache liegen, könnte eine Sicherung noch die alten (möglichweise inkonsistenten) Daten lesen. Die Caches müssen auf Betriebssystemebene ausgeschaltet werden, z.B. durch entsprechendes mounten (sync) oder Dateiattribute (bei ext2/3: synchronous update). siehe Transaktionssicherheit

ACID steht für Atomarität, Konsistenz, Isoliertheit und Dauerhaftigkeit.

Atomarität (atomicity)

Von einer atomaren Operation (=nicht weiter teilbar) spricht man, wenn die Transaktion entweder vollständig oder gar nicht ausgeführt wird: Das DBMS verhält sich gegenüber dem Benutzer so, als ob die Transaktion eine einzelne elementare Operation wäre, die nicht von anderen Operationen unterbrochen werden kann. Praktisch werden die einzelnen Datenbankanweisungen, aus der sich die Transaktion zusammensetzt, natürlich nacheinander ausgeführt – sobald sich jedoch herausstellt, dass die Transaktion nicht abgeschlossen werden konnte, wird ein Rollback durchgeführt, also alles bisher Erledigte wieder rückgängig gemacht.

Konsistenz (consistency)

Konsistenz heißt, dass eine Transaktion nach Beendigung einen konsistenten Datenzustand hinterlässt: Nach Beendigung der Transaktion gelten die inhärenten und explizit definierten Integritätsbedingungen, insbesondere die Schlüssel- und Fremdschlüsselbedingungen.

Isolation (isolation)

Durch das Prinzip der Isolation wird verhindert, dass sich in Ausführung befindliche Transaktionen gegenseitig beeinflussen: Realisiert wird dies beispielsweise durch spezielle Sperrprotokolle oder Zeitstempelverfahren.

Dauerhaftigkeit (durability)

Das Ergebnis einer Transaktion ist dauerhaft: Die Wirkung einer erfolgreich abgeschlossenen Transaktion bleibt dauerhaft in der Datenbank erhalten, insbesondere auch nach Systemabstürzen. Für die Umsetzung der Dauerhaftigkeit ist unter anderem der Pufferpool zuständig.

  • Alle Schreiboperationen können rückgängig gemacht werden (rollback)
  • Wiederholte Lesezugriffe innerhalb einer Transaktion sind von Schreibzugriffen anderer Transaktionen nicht beeinflusst (Isolation aus ACID).
  • Schreibzugriffe in einer Transaktion bewirken eine Schreibsperre der betroffenen Datensätze für alle anderen Transaktionen (Row level locking).

Der Begriff Gespeicherte Prozedur (GP) oder englisch Stored Procedure (SP) bezeichnet eine Funktion bestimmter Datenbankmanagementsysteme. In einer Stored Procedure können ganze Abläufe von Anweisungen unter einem Namen gespeichert werden, die dann auf dem Datenbankserver zur Verfügung stehen und ausgeführt werden können.

Mit anderen Worten: Eine SP ist ein eigenständiger Befehl, der eine Abfolge von gespeicherten Befehlen ausführt.

Mittels Stored Procedures können häufiger verwendete Abläufe, die sonst durch viele einzelne Befehle vom Client ausgeführt werden würden, auf den Server verlagert werden, und durch einen einzigen Aufruf ausgeführt werden (siehe auch Client-Server-System). Das eleminiert Fehlerquellen, da die Abfragen nicht mehr vollständig vom Client formuliert werden und auch nicht im Detail bekannt sein müssen. Die Beschränkung auf gespeicherte Abfragen bringt zusätzliche Sicherheit.

Mitunter wird dadurch die Leistung gesteigert, da weniger Daten zwischen Client und Datenbankserver ausgetauscht werden müssen und das Datenbankmanagementsystem häufig auf leistungsfähigeren Servern läuft.

Neben der gewöhnlichen Syntax der Abfragesprache (meist SQL) können in Stored Procedures auch zusätzliche Befehle zur Ablaufsteuerung und/oder Auswertung von Bedingungen hinzugefügt werden. Damit können SPs mit Makrosprachen bestimmter Anwendungsprogramme verglichen werden. Oft wird das verwendete SQL um herstellerspezifische Funktionen erweitert. Auch der Einsatz von anderen Programmiersprachen wie etwa Java oder .NET ist inzwischen teilweise möglich.

Quelle: Wikipedia

Trigger sind Event-Handler, die bei dem Erreichen von Werten in einer Tabelle Stored Procedures oder auch externe Prozesse anstoßen können. Trigger bei MySQL.

Eine Relationale Datenbank ist eine Datenbank, die auf dem relationalen Datenbankmodell basiert. Das Datenbankmodell wurde von Edgar F. Codd 1970 erstmals vorgeschlagen und ist heute, trotz einiger Kritikpunkte, ein etablierter Standard zum Speichern von Daten. Das zugehörige Datenbankmanagementsystem wird als das relationale Datenbankmanagementsystem (RDBMS) bezeichnet. Bekannt im Zusammenhang mit relationalen Datenbanken ist die Datenbanksprache SQL, welche für Abfragen und Manipulieren der Daten in der Datenbank benutzt wird. SQL existiert in verschiedenen Versionen die nicht in allen RDBMS implementiert sind.

Bekannte Vertreter für relationale Datenbanken sind:

Grundkonzept relationaler Datenbanken ist

  1. Redundanzfreiheit (keine Wiederholungen)
  2. Datenintegrität insbesondere durch Referenzielle Integrität (Eindeutigkeit, die über Fremd- und Primärschlüssel hergestellt wird)
  3. Datenkonsistenz (keine Widersprüchlichkeit)
  • gute Redundanzfreiheit (keine Wiederholung)
  • relativ gut erweiterbar
  • Konsistenz der Daten (Widerspruchsfreiheit)
  • Integrität (Eindeutigkeit) durch Primärschlüssel
  • Objekt = Tabelle = Entitätsmenge
  • Datensatz = Tupel = Entität
  • Eigenschaft = Attribut
Gegenüberstellung von Grundbegriffen
Tabelle Relationales Datenmodell Entity-Relationship-Modell (ERM) Unified Modeling Language (UML)
Wertebereich (Domäne, Domain) Wertebereich (Domäne, Domain) Wertebereich (Domäne, Domain) Wertebereich (Domäne, Domain)
Kopfzeile Relationstyp/Relationsformat Entitätstyp Klasse
Spaltenüberschrift Attribut Attribut Attribut
Inhalt Relation Entitätsmenge(-set) Objektmenge, Instanzmenge, Klasse
Inhalt Fremdschlüssel Beziehung (Relationship) Assoziation
Zeile Tupel Entität Objekt, Instanz
Zelle Attributwert Attributwert Attributwert

(zusammgesetzte/kombinierte Primärschlüssel oder nur Primärschlüssel)

  • künstliche (ein extra Primärschlüsselfeld das sich nicht aus den natürliche Daten ergibt
  • natürliche Primärschlüssel (eindeutige Daten), z. B. aus Name, Geburtsdaten

:!: Primärschlüssel werden in ER-Diagramm unterstrichen

Beziehung Bedeutung Beispiel
1:1 ein Datensatz einer Tabelle entspricht einem Datensatz einer anderen Tabelle oft eher als Attribut gebraucht, z.B. Geburtsort
1:n oder 1:cn ein Datensatz einer Tabelle entspricht 0,1 oder mehreren Datensätzen einer anderen Tabelle
n:m oder cn:cm 0,1 oder viele Datensätze einer Tabelle haben 0,1 oder viele Datensätzen einer anderen Tabelle ⇒ keine Eindeutigkeit mehr

Referenzielle Integrität beeinhaltet

  • eine Verbindung zwischen mind. zwei Datensätzen
  • das besondere ist die
    • Aktualisierung bzw.
    • die Löschung der andere Daten in anderen Tabellen wenn sich Daten auf die sie sich beziehen ändern
    • man kann erst Daten einfügen wenn diese in einer Mastertabelle vorhanden sind.

Grund ist die Erhaltung von Konsistenten Daten.

:!: Die Referenzielle Integrität stellt die Datenintegrität und die Datenkonsistenz sicher.

Normalisierung in Normalformen (Bedingungen)

  1. Normalform: alle Datenfelder müssen atomar sein, im Regelfall auch keine leeren Felder (oder nur temporär): man erzeugt bewußt Redundanz.
  2. Normalform: 1.NF erfüllt und jedes Datenfeld muss (voll funktional, also ausschließlich) von dem/den Primärschlüssel/n abhängig sein. Bei dem Sonderfall das vorher alle Daten nur von einem Primärschlüssel abhängig waren, ist die 2. NF gleich der 1. NF.
  3. Normalform: 2.NF erfüllt und kein Nichtschlüssel (also die dem Primärschlüssel zugeordnet waren) darf von einem Schlüsselkandidaten indirekt (=transitiv) abhängig sein, sondern nur direkt. Man prüft also ob die Nichtschlüssel direkt oder indirekt abhängig sind. Wenn sie indirekt abhängen muss man sie in einer neuen Tabelle anordnen und einem Primärschlüssel direkt zuordnen.

Eine objektorientierte Datenbank ist eine Datenbank, deren Inhalt Objekte im Sinn der Objektorientierung sind. Als ein Objekt wird die Zusammenfassung von zugehörigen Attributen bezeichnet, also gehört zum Beispiel die Farbe und das Gewicht eines Autos zu dem Objekt Auto. Attribute beschreiben ein Objekt näher. Daten und Methoden werden nicht getrennt gespeichert.

Der Vorteil einer objektorientierten Datenbank liegt in der Möglichkeit, Objekte ineinander zu schachteln, um Strukturen abbilden zu können, wie zum Beispiel Firma(Abteilung(Mitarbeiter)).

Im englischen und auch im deutschen Sprachgebrauch ist anstelle der Bezeichnung objektorientierte Datenbank auch die Bezeichnung Objektdatenbank (engl. object database) gebräuchlich. Diese Bezeichnung ist kürzer und genauer, denn die Datenbank selbst ist nicht objektorientiert, sondern speichert nur Objekte.

Quelle: Wikipedia.

Eine Objektrelationale Datenbank (ORDB, ORDBMS) stellt das Bindeglied zwischen klassischen relationalen und objektorientierten Datenbanksystemen dar. Sie kommen überall dort zum Einsatz, wo Mengen von Objekten in Beziehung zu anderen Daten oder Objekten gebracht werden müssen.

Zwischen den relationalen und den objektorientierten Datenmodellen gibt es viele Entsprechungen, so entspricht die Entität dem Objekt und der Entitätstyp der Klasse. Diese Basis hat zur Entwicklung von objektrelationalen DBMS geführt, die durch eine Spracherweiterung um objektorientierte Methoden und Datentypen zur Verbesserung des relationalen Modells und damit zur Handhabung komplex strukturierter Daten geführt haben.

Quelle: Wikipedia

Ein Hierarchisches Datenbankmodell ist das älteste Datenbankmodell, es bildet die reale Welt durch eine hierarchische Baumstruktur ab. Jeder Satz (Record) hat also genau einen Vorgänger, mit Ausnahme genau eines Satzes, nämlich der Wurzel der so entstehenden Baumstruktur.

Schema: Hierarchisches Datenbankmodell, Lizenz: GNU FDL

Die Daten werden in einer Reihe von Datensätzen gespeichert, mit denen verschiedene Felder verknüpft sind. Die Instanzen eines bestimmten Datensatzes werden als Datensatzabbild zusammengefasst. Diese Datensatzabbilder sind vergleichbar mit den Tabellen einer relationalen Datenbank.

Verknüpfungen zwischen den Datensatzabbildern werden in hierarchischen Datenbanken als Eltern-Kind-Beziehungen (Parent-Child Relationships, PCR) realisiert, die in einer Baumstruktur abgebildet werden. Der Nachteil von hierarchischen Datenbanken ist, dass sie nur mit einem solchen Baum umgehen können. Verknüpfungen zwischen verschiedenen Bäumen oder über mehrere Ebenen innerhalb eines Baumes sind nicht möglich.

Quelle: Wikipedia.

  • Jeder Begriff hat nur einen Vorgänger
  • kurze Suchwege

Der Nachteil von hierarchischen Datenbanken ist,

  • dass sie nur mit einem solchen Baum umgehen können.
  • Verknüpfungen zwischen verschiedenen Bäumen oder über mehrere Ebenen innerhalb eines Baumes sind nicht möglich.

Das Netzwerkdatenbankmodell wurde von der Data Base Task Group (DBTG) des Programming Language Committee (später COBOL Committee) der Conference on Data Systems Language (CODASYL) vorgeschlagen, der Organisation die auch für die Definition der Programmiersprache COBOL verantwortlich war. Es ist auch unter den Namen „CODASYL Datenbankmodell“ oder „DBTG Datenbankmodell“ bekannt und entsprechend stark von Cobol beeinflusst. Der fertige DBTG-Bericht wurde 1971, etwa zur gleichen Zeit wie die ersten Veröffentlichungen über das relationale Datenbankmodell, vorgestellt. Er enthielt Vorschläge für drei verschiedene Datenbanksprachen: Eine Schema Data Description Language oder Schema-Datenbeschreibungssprache, eine Subschema Data Description Language oder Subschema-Datenbeschreibungssprache und eine Data Manipulation Language oder Datenmanipulationssprache.

Das Netzwerk-Modell fordert keine strenge Hierarchie sondern kann auch m:n-Beziehungen abbilden, d. h. es kann ein Datensatz mehrere Vorgänger haben. Auch können mehrere Datensätze an oberster Stelle stehen. Es existieren meist unterschiedliche Suchwege, um zu einem bestimmten Datensatz zu kommen. Man kann es als eine Verallgemeinerung des hierarchischen Datenbankmodells sehen.

Schema: Hierarchisches Datenbankmodell, Lizenz: GNU FDL

Quelle: Wikipedia

Zusammgefasst sind die Querverbindungen wichtig,

  • es gibt schnelle, kurze Suchwege
  • es wird aber einer gewissen Größe schnell unübersichtlich.