Beiträge

Standardisierter Zugriff auf Datenbanken

SQL ist eine Standard-Abfragesprache für Datenbanken. Auf nahezu alle Datenbanksysteme, so auch MySQL oder MS-SQL, kann mit Standard SQL zugegriffen werden. Mit der Abfragesprache werden Tabellen erstellt oder abgefragt („Wie viele Kunden heißen Meier?“). Häufig verwendete SQL-Befehle sind „Create“ zum Erstellen von Tabellen (Datenstrukturen) und „Select“ zum Lesen von Tabellen. SQL steht für Structured Query Language, übersetzt „strukturierte Abfrage-Sprache“.

SQL ist eine Datenbanksprache für relationale Datenbanken, mit der Strukturen (Tabellen) definiert und Daten bearbeitet oder abgefragt werden können. Tabellen können etwa Kundendaten, Materialdaten, Aufträge und Rechnungen enthalten. Mit der Datenbanksprache werden

– Tabellen angelegt

– Felder in den Tabellen definiert

– Tabellenzeilen befüllt

– Tabelleneinträge gelesen oder Informationen zu den Inhalten abgefragt (z. B. Länge eines Feldes, Anzahl der Einträge in der Tabelle).

Beispiel: Abfragen in einer Datenbanktabelle

Per SQL-Befehl hat man in einer Datenbank die Tabelle „Kunden“ angelegt („create“). Die Struktur enthält Felder für die Aufnahme von Daten wie Kundennummer, Vorname, Nachname u.ä. Ist die Tabelle mit Kundendaten befüllt, können werden alle Kundeneinträge mit dem Namen „Meier“ selektiert („select“-Befehl) oder etwa die Anzahl der Kundendatensätze ermittelt werden („Befehle select count“).

SELECT * FROM Kunden WHERE Name = ‚Meier‘;

Es werden alle Zeilen und alle Spalten (*) aus der Tabelle Kunden ausgegeben, deren Nachname Meier ist.

Zur Standardisierung von Datenbankzugriffen

Die Syntax der Datenbanksprache ist einfach und basiert auf der relationalen Algebra. Die Sprache wird von einem gemeinsamen Gremium standardisiert, um eine möglichst hohe Unabhängigkeit von Software-Programmen zum unterliegenden Datenbankmanagementsystem anzustreben. Heute verfügen die meisten Datenbanksysteme über Schnittstellen, um den standardisierten Zugriff auf Tabellen und Daten zu ermöglichen. Auch auf Datenbanken wie MySQL oder MS-SQL kann mit Standard-SQL zugegriffen werden.

Kategorien von Befehlen bei SQL

Mit den Befehlen können in der Datenbank verschiedene Operationen ausgeführt werden. Nach ihrer Funktion sind vier Kategorien von Befehlen zu unterscheiden:

– DQL-Befehle (Data Query Language): Befehle zur Abfrage und Aufbereitung von Daten

– DML-Befehle (Data Manipulation Language): Befehle zur Manipulation von Daten, wie Ändern, Einfügen, Löschen und Lesen

– DDL-Befehle (Data Definition Language: Befehle zur Definition des Datenbankschemas, z. B. von Anlegen von Tabellen

– DCL-Befehle (Data Control Language): Befehle zur Transaktionskontrolle und Rechteverwaltung.

Abfrage mit „SELECT“

Das Ergebnis einer Abfrage (Query, DQL-Befehl) liefert einen Ausschnitt der Tabelle. Damit sieht das Ergebnis einer Abfrage wiederum selbst aus wie eine Tabelle und kann angezeigt, bearbeitet und verwendet werden. DQL-Befehle werden auch als Untergruppe der DML-Befehle gesehen.

Aufgabe: Ein Unternehmen hat 101 Kunden. Diese sollen angezeigt werden.

SELECT * FROM kunden;

Die Query listet alle Spalten und 101 Zeilen der Kunden-Tabelle auf.

Aufgabe: Alle Kunden anzeigen, allerdings nur die Spalten Kundennummern und Kundennamen:

SELECT Kunnr, Name

FROM kunden;

Die Ausgabe liefert 101 Zeilen (Kunden), allerdings nur die Inhalte der Felder Kundennummer und Nachname.

Aufgabe: Alle Kunden im Postleitzahlbereich „60“ anzeigen lassen.

SELECT * FROM kunden

WHERE Plz LIKE ‚60%‘;

Die Tabelle Aufträge enthält die Kundenaufträge des Unternehmens. Im relationalen Datenmodell enthält sie mit der Kundennummer lediglich „einen Link“ zur Kundentabelle.

Aufgabe: Ausgabe aller Kundenaufträge aus dem Postleitzahlbereich „60“.

SELECT auftrag.Auftragsnr, auftrag.kunnr, kunden.name, kunden.plz kunden.ort

FROM kunden, auftrag

WHERE kunden.kunnr= auftrag.kunnr

AND kunden.plz LIKE ‚60%‘;

Der (inner) JOIN verknüpft zwei Tabellen. Um die Postleitzahl zu den Aufträgen zu finden, muss in die Tabelle „kunden“ geschaut werden. Beide Tabellen enthalten den eindeutigen Schlüssel „Kundennummer“ (kunnr).

Schlüssel in relationalen Datenbanken

SQL ist eine Abfragesprache für relationale Datenbanken, in denen Informationen auf mehrere Tabellen verteilt werden. Im  Beispiel hätte die Auftragsdaten-Tabelle auch die Felder für die Kundendaten (Name, Ort, PLZ) enthalten können. Diese Felder wären damit „doppelt“ in der Datenbank vorhanden. Dies ist im relationalen Datenmodell nicht der Fall.

Um Redundanzen zu vermeiden, werden Daten auf mehrere Tabellen verteilt und über Schlüssel verknüpft. In die Auftragstabelle wird  die Kundennummer aufgenommen. Alle weiteren Kundendaten müssen in der Kundentabelle nachgelesen werden.

Die primären Schlüssel im Beispiel sind die Kundennummer in der Kundentabelle und die Auftragsnummer in der Auftragstabelle.

Programmieren mit der Abfragesprache

Mann kann die Abfragesprache kann mit Programmiersprachen kombinieren. Dazu wird aus einem Anwendungsprogramm heraus mit Standard SQL-Befehlen auf eine Datenbank zugegriffen. Folgende Techniken sind möglich:

  1. a) Embedded SQL mit Anweisungen im Quelltext von C, C++, Pascal, Cobol und anderen Programmiersprachen. Beispiele für Implementierungen sind SQLJ für Java, Pro*C für C und C++.
  2. b) Herkömmliche Programmierschnittstellen, über die SQL-Befehle direkt an das Datenbanksystem weitergegeben werden. Beispiele dazu sind ODBC, JDBC aund ADO.
  3. c) Persistenz-Frameworks, wie Hibernate oder iBATIS für eine objektorientierte Verarbeitung in z. B. C# oder Java.
  4. d) Teil 4 des SQL/PSM Standards mit Konstrukten wie IF-Blöcken und Schleifen, die in Hersteller-spezifische Erweiterungen implementiert werden. Beispiele sind PL/SQL in Oracle und Transact SQL im SQL Server.

Unterschied zwischen statisches und dynamisch

Unabhängig von der Programmiertechnik ist eine SQL-Anweisung statisch und damit  zum Zeitpunkt der Programmübersetzung festgelegt. Beim dynamischen SQL wird die tatsächliche Anweisung erst zum Zeitpunkt der Programmausführung bekannt. Beispiele für dynamische Anweisungen sind etwa die Benutzereingabe der Query zur Laufzeit des Programms oder die Konstruktion des Statements im Programm.

Eine Datenbank ist eine organisierte Sammlung von elektronischen Daten. Der physischen Datenbank übergeordnet ist ein Datenbank Management System (DBMS). Das DBMS ist die Software, die mit Endbenutzern, Anwendungen und der Datenbank selbst interagiert, um die Daten zu erfassen, zu analysieren, verwalten oder zu löschen. Zusammen bilden diese beiden Komponenten ein Datenbanksystem (DBS).

Warenwirtschaftssysteme, Enterprise Ressource Planning (ERP) Software und CRM Systeme nutzen Datenbanksysteme im Hintergrund. Datenbanksysteme wie MariaDB und MySql installieren Internet Service Provider standardmäßig für das Hosting von Onlineshops und Content Management Systemen (CMS) wie WordPress oder Joomla.

Der Begriff Datenbank bezieht sich formal auf eine Reihe verwandter Daten und deren Organisation. Der Zugriff auf diese Daten wird normalerweise durch ein Datenbank Management System, abgekürzt DBMS bereitgestellt. Das DBMS ermöglicht Benutzern die Interaktion mit einer oder mehreren Datenbanken und den Zugriff auf die gespeicherten Daten. Aufgrund der engen Beziehung zwischen DBMS und Datenbank wird der Begriff „Datenbank“ häufig verwendet, um sich sowohl auf eine Datenbank als auch auf das DBMS zu beziehen, mit dem sie bearbeitet wird.

Funktionen des Datenbank Management Systems (DBMS)

Die vier Hauptfunktionen eines Datenbank Management Systems sind:

Datendefinition: Erstellen, Ändern und Entfernen von Definitionen, mit der die Organisation der Daten festgelegt wird

Update: Einfügen, Ändern und Löschen der Daten

Abruf: Bereitstellung von Informationen in einer direkt verwendbaren Form oder zur Weiterverarbeitung durch andere Anwendungen. Die abgerufenen Daten können in einer Form zur Verfügung gestellt werden, die im Wesentlichen dieselbe ist, wie sie in der Datenbank gespeichert ist, oder in einer neuen Form, die durch Ändern oder Kombinieren vorhandener Daten aus der Datenbank erzeugt wird.

Administration: Hierzu gehören die Registrierung und Überwachung von Benutzern, Durchsetzung der Datensicherheit, Überwachung der Leistung, Aufrechterhaltung der Datenintegrität, Handhabung der Parallelitätskontrolle und Wiederherstellung von Informationen, die durch ein Ereignis wie einen unerwarteten Systemfehler beschädigt wurden.

Arten von Datenbanksystemen

Ethernet

Die Benutzer eines Datenbanksystems müssen in der Lage sein, die darin enthaltenen Informationen jederzeit schnell zu manipulieren. Für große Unternehmen, die viele unabhängige Dateien mit verwandten und sich überschneidenden Daten aufbauen, ist häufig das Verknüpfen von Daten aus mehreren Dateien erforderlich. Zur Unterstützung unterschiedlicher Anforderungen wurden verschiedene Arten von DBMS entwickelt: flach, hierarchisch, verteilt, relational und objektorientiert.

Flache Datenbanken

In frühen Datenbanksystemen wurden die Daten sequenziell, das heißt alphabetisch, numerisch oder chronologisch gespeichert. Die Entwicklung von Speichermedien mit direktem Zugriff ermöglichte den wahlfreien Zugriff auf Daten über Indizes.

In flachen Datenbanken werden Datensätze nach einer einfachen Liste von Entitäten organisiert. Die Tabellen in diesen Datenbanken enthalten nur Daten und keine Verknüpfungen zu anderen Tabellen. Viele einfache Datenbanken für PCs sind flach aufgebaut.

Hierarchische Datenbanken

Die Datensätze in hierarchischen Datenbanken sind in einer baumartigen Struktur organisiert, wobei jede Datensatzebene in eine Reihe weiterer Kategorien verzweigt. Bei diesem Datenbanksystem wird die „Eltern-Kind-Beziehung“ zum Speichern von Daten verwendet.

Diese Art von Datenbanksystem wird heute nur selten verwendet. Die Struktur ähnelt einem Baum mit Knoten, die Datensätze darstellen, und Zweige, die Felder darstellen. Die Windows-Registrierung in Windows XP ist ein Beispiel für eine hierarchische Datenbank.

Verteilte Datenbanken

Hierbei handelt es sich um ein Datenbanksystem, in dem nicht alle Speichergeräte an einen gemeinsamen Prozessor angeschlossen sind. Eine verteilte Datenbank kann auf mehreren Computern gespeichert werden, die sich am selben physischen Ort befinden, oder über ein Netzwerk miteinander verbundener Computer verteilt sein. Im Gegensatz zu eng miteinander verbundenen Parallelsystemen, die ein einziges Datenbanksystem bilden, besteht ein verteiltes Datenbanksystem aus lose verbundenen Standorten, die keine physischen Komponenten gemeinsam nutzen.

Systemadministratoren können Datensammlungen an mehreren physischen Standorten verteilen. Eine verteilte Datenbank kann sich auf organisierten Netzwerkservern oder auf dezentralen unabhängigen Computern im Internet, in Intranets oder Extranets von Unternehmen oder in anderen Organisationsnetzwerken befinden. Da verteilte Datenbanksysteme Daten auf mehreren Computern speichern, können verteilte Datenbanken die Leistung an den Arbeitsplätzen der Endbenutzer verbessern.

Relationale Datenbanken

Eine relationale Datenbank basiert auf dem 1970 von E. F. Codd entwickelten relationalen Datenmodell. Im relationalen Datenmodell werden Daten in einer oder mehreren Tabellen, oder „Relationen“ aus Spalten und Zeilen organisiert. Jeder Zeile ist ein eindeutiger Schlüssel zugeordnet. Die Zeilen werden auch als Datensätze oder Tupel bezeichnet.

Die Spalten in einer relationalen Datenbank werden als Attribute bezeichnet. Im Allgemeinen stellt jede Tabelle / Relation einen „Entitätstyp“ dar, zum Beispiel einen Kunden oder ein Produkt. Die Zeilen repräsentieren Instanzen dieses Entitätstyps wie „Josef“ oder „Zündkerze“. Die Spalten repräsentieren Werte, die dieser Instanz zugeordnet sind – zum Beispiel die Adresse oder den Preis.

Ein Softwaresystem zum Verwalten relationaler Datenbanken ist ein relationales Datenbank Managenent System (RDBMS). Praktisch jede relationale Datenbank verwendet SQL (Structured Query Language) zur Abfrage und Pflege der Datenbank. Die bekanntesten relationalen Datenbanksysteme sind:

Oracle Database

Die Oracle Database Software, oft einfach als Oracle bezeichnet, ist ein Datenbankmanagementsystem mit mehreren Datenmodellen, das von der Oracle Corporation hergestellt und vermarktet wird.

MySQL

Dieses kostenlose Open Source-RDBMS, basiert auf Structured Query Language. MySQL läuft auf praktisch allen Plattformen, einschließlich Linux, UNIX und Windows.

MariaDB

MariaDB ist ebenfalls ein Open Source RDBMS, das aus MySQL hervorgegangen ist.

Microsoft SQL Server

Microsoft SQL Server, kurz MS-SQL, ist ein kostenpflichtiges RDBMS, das eine Vielzahl von Transaktionsverarbeitungs-, Business Intelligence– und Analyseanwendungen in Unternehmens-IT-Umgebungen unterstützt. MS-SQL ist unter Windows und Linux Systemen verfügbar.

PostgreSQL

PostgreSQL, oft einfach Postgres, ist ein objektrelationales Datenbankverwaltungssystem (ORDBMS), das den Schwerpunkt auf Erweiterbarkeit und Einhaltung von Standards legt.

DB2

DB2 von IBM ist ein Datenbanksystem, das große Datenmengen effizient speichern, analysieren und abrufen kann.

Objektorientierte Datenbanken

DatenbankEine Objektdatenbank ist ein Datenbankverwaltungssystem, in dem Informationen in Form von Objekten gespeichert werden, wie sie in der objektorientierten Programmierung verwendet werden. Objektdatenbanken unterscheiden sich von relationalen Datenbanken, die tabellenorientiert sind. Objektrelationale Datenbanken sind eine Mischung aus beiden Ansätzen.

Objektorientierte Datenbankverwaltungssysteme (OODBMS), auch ODBMS (Object Database Management System) genannt, kombinieren Datenbankfunktionen mit objektorientierten Programmiersprachenfunktionen. OODBMS ermöglichen objektorientierten Programmierern, ein Produkt zu entwickeln, als Objekte zu speichern und vorhandene Objekte zu replizieren oder zu modifizieren, um neue Objekte in der OODBMS zu erstellen.

Da die Datenbank in die Programmiersprache integriert ist, kann der Programmierer die Konsistenz innerhalb einer Umgebung aufrechterhalten, indem sowohl das OODBMS als auch die Programmiersprache dasselbe Repräsentationsmodell verwenden. Im Gegensatz dazu sorgen relationale DBMS für eine klarere Trennung zwischen Datenbankmodell und Anwendung. Beispiele für objektorientierte Datenbanken sind IRIS von Hewlett Packard und ORION von Microelectronics.

NoSQL Datenbanken

Als NoSQL Datenbanken im Sinne von „No“ oder kein SQL wurden ursprünglich Datenbanksysteme bezeichnet, die keinen SQL Zugriff auf die Daten ermöglichten. Seit etwa 2009 wird NoSQL im Sinne von „Not Only “ SQL (Nicht nur SQL) verwendet.

NoSQLDatenbank Management Systeme verfügen im Allgemeinen über kein starr definiertes Schema, wie die in die Datenbankeingefügten Daten typisiert und zusammengesetzt werden müssen. NoSQL-Datenbanken können schema-agnostisch sein, wodurch unstrukturierte und halb strukturierte Daten gespeichert und bearbeitet werden können.

NoSQL-Datenbanken werden zunehmend in Big-Data– und Echtzeit-Webanwendungen verwendet. Beispiele von NoSQL-Datenbanken sind Oracle NoSQL DatabaseRedisRiak und MongoDBMongoBD ist eine relativ junge Datenbankentwicklung, die die besten Eigenschaften relationaler Datenbanken beibehält und gleichzeitig die Vorteile von NoSQL nutztMongoDB ist eine dokumentenorientierte NoSQL-Datenbank, mit der User Sammlungen von JSON-ähnlichen Dokumenten verwalten können.