Datenbank-Grundbegriffe

Datenbank, Tabelle, Datensatz, Feld, ...

Hier werden einige Grundbegriffe vorgestellt, die bei der Arbeit mit einer Datenbank vorkommen. Es ist hilfreich, wenn sie die Grundbegriffe sowie ihre deutschen und internationalen Bezeichnungen kennen und verstehen.
Datenbank Von der Ansammlung zur Datenbank
DB-Server Server, Client, Datenbank, Server-PC, Adresse und Port
Datenbank Alle Bestandteile (Tabellen) einer 'Lösung'
Tabelle Grund-Elemente jeder Datenbank
Datensatz Zeile einer DB-Tabelle
Feld Spalte einer DB-Tabelle
Primär-Schlüssel  Automatisch vergebene Serien-Nr.

DB-Server

Server

Ein Datenbank-Server ist ein Programm zur Verwaltung von Datenbanken. Wie jedes andere Server-Programm arbeitet es 'im Hintergrund', d.h. ohne Anwendungs-Oberfläche, ohne Fenster oder Maus-Bedienung.
Wenn nicht anders erwähnt, beziehen sich alle Anmekrungen dieses Kapitels auf das Server-Programm MySQL - Marktführer bei PC Datenbanken.

Details zu den Themen Server, MySQL (Windows)

Client

Server-Programme 'lauschen' (listen) auf Aufträge, die sie von AnwenderInnen (Clients) aus dem lokalen Netzwerk (LAN) erhalten.
Da sich meist mehrere Server-Programme einen Hardware-PC und damit eine IP-Adresse teilen müssen, lauscht jedes Server-Programm auf einem anderen Port.
MySQL-Server lauschen an Port 3306 auf Client-Aufträge.
Datenbank-Hierarchie

Organisation:

Ein Datenbank-Server kann mehrere (theoretisch beliebig viele) Datenbanken verwalten.

Datenbank mysql

Jeder MySQL-Server enthält mindestens die Datenbank mysql, in welcher die gesamten Zugriffs-Rechte des DB-Servers verwaltet werden. User, Passworte und Zugangsrechte sind unabhängig vom Server-PC und dessen Betriebssystem.
Optional werden SQL-Server auch zur Verwaltung der Zugriffsrechte auf den Server und/oder die gesamte Domäne verwendet.
Der Zugang zur Datenbank mysql ist nur dem Administrations-User root erlaubt - nicht identisch mit dem Linux-Administrator root !
Tipp: Wenn sie Zugang zur Datenbank mysql haben: Ändern sie nichts ohne gründliche Überlegung !
Die Konfiguration der DB-Zugangsrechte erfordert fortgeschrittene Kenntnisse.
Wenn sie dabei einen Fehler machen, dann kann der Zugang zur Datenbank vollkommen gesperrt werden. Dieser Fall ist meistens irreparabel , d.h. alle Datenbanken des Servers müssen gelöscht und neu installiert werden !

LAMP & WAMP

Auf fast jedem Server-PC eines lokalen Netzwerks laufen mehrere Server-Programme, z.B. Fileserver, Webserver, FTP-Server und natürlich auch ein DB-Server.

MySQL MySQL ist ein kommerzielles Produkt. Die kostenlose OpenSource Version ist aus gutem Grund weltweit am meisten verbreitet: Absolut professionelle Leistung, sehr rasch, kostenlos für alle gängigen Betriebssysteme erhältlich, Zugang mit allen modernen Programmiersprachen.

Der MySQL Server ist Bestandteil aller gängigen Linux (LAMP) Server. Je nach Distribution muss der Server von der Original-DVD installiert werden, oder nur aktiviert werden, oder er läuft bereits mit der ersten Installation.

Der MySQL Server ist auch für Windows (WAMP) kostenlos, muss jedoch selbst installiert werden.

Das Programm-Paket phpMyAdmin wird fast immer zur Verwaltung eines MySQL-Servers eingesetzt. Es ist kostenlos und von ausgezeichneter Qualität. Voraussetzung ist die Installation eines (Apache) Webservers und der Programmiersprache PHP. Beide Komponenten sind kostenlos und ohnehin auf jedem Standard-Server installiert.

Datenbank

Eine Datenbank umfasst alle zu einer praktisch verwendbaren 'Lösung' gehörenden Komponenten.
Das sind in der Praxis fast immer mehrere Tabellen. Dazu kommen manchmal noch Informationen über die Beziehungen (Verknüpfungen) zwischen den Tabellen.
Diese Definition ist ziemlich unscharf, trifft aber die Praxis recht gut.
Das User Interface wird hier ausdrücklich nicht als Datenbank-Bestandteil geführt: Man braucht es zwar zur Anwendung, es wird jedoch normalerweise nicht am DB-Server verwaltet (sondern meist in Form dynamischer Webseiten am Webserver).

Moderne Pakete von Web-Programmen speichern allerdings viele ihrer Bestandteile (Quelltext, Text-Inhalt, Layout-CSS u.a.) in Datenbanken. Die Bestandteile werden auf einem Java- oder Webserver zu dynamischen Webseiten zusammengesetzt.

DB-Auswahl

Normalerweise erlaubt ein DB-Server den Zugang nur zu einer Datenbank, d.h. man muss sich nach der Anmeldung (Name / Passwort) für eine Datenbank entscheiden.

Das bedeutet keine Einschränkung, denn erstens enthält jede Datenbank alle dazugehörenden Tabellen, zweitens kann man auch mehrere unabhängige Verbindungen zu einem DB-Server aufbauen, jede zu einer anderen Datenbank.

Namen

Alle Elemente einer Datenbank (Tabellen, Felder, ...) müssen benannt werden.
Die Namen der Datenbanken müssen eindeutig sein, d.h. keine Datenbank darf 2 Tabellen mit gleichen Namen enthalten.

Die Organisation einer guten Datenbank erfordert ein besonders hohes Maß an Zuverlässigkeit und Genauigkeit. Die Vergabe der Namen ist dabei ein wichtiger Punkt mit großer Tragweite. Eine spätere Änderung ist möglich, jedoch kritisch und meist recht aufwändig.

Verwenden sie für alle DB-Elemente sprechende Namen und besonders strenge Regeln:

Nur die Zeichen abcdefghijklmnopqrstuvwxyz0123456789 und _ Underline als Trennzeichen.
Keine Umlaute, Sonderzeichen, Leerzeichen oder Interpunktionen.

Die Namen der Elemente sind von den "Überschriften" entkoppelt: Die Namen werden ausschließlich intern von DB-Server verwendet. Man optimiert sie auf Eindeutigkeit und Portabilität.

Tabelle

Tabellen sind die Grund-Elemente allerDatenbanken:
Die Zellen einer Tabelle sind nach Reihen und Spalten organisiert und enthalten als Werte (values) die eigentlichen Daten.
Ähnliche Strukturen kommen auch in anderen Gebieten der Informatik vor, z.B. als Tabellen einer Kalkulation (blaue Namen).
In der Datenbank-Technik werden besondere Namen (schwarz) für die Elemente verwendet:
Elemente einer Tabelle
Länge ( Datensätze) und Breite (Felder) der Tabellen sind theoretisch nicht begrenzt. In der Praxis bemüht man sich, die Breite auf ein überschaubares Maß zu begrenzen. Die Länge kann außerordentliche Werte annehmen: Tausende oder sogar Millionen von Zeilen sind keine Seltenheit.

Datensatz (record) = DB-Zeile

Datensätze haben keine Namen und sind aus beliebig vielen Feldern unterschiedlicher Typen zusammengesetzt.
Beispiel:
Ein Datensatz (Zeile) der Tabelle personen enthält typisch alle Daten zu einer einzelnen Person, z.B. pers_vorname, pers_zuname, pers_gebdatum, pers_groesse_cm, pers_gewicht_kg usw.
Primär-Schlüssel (primary key)
Jeder Datensatz muss eindeutig zu identifizieren sein. Dazu verwendet man ein eigenes Feld (erste Spalte) mit einer besonderen Eigenschaft, den Primär-Schlüssel.
Beispiel:
Es ist möglich, dass 2 Personen die gleichen Vor- und Zunamen haben und sogar an der gleichen Adresse wohnen. Um die beiden Datensätze sicher zu unterscheiden, erhält z.B. jeder eine andere pers_nr
Jede Zelle des Primär-Schlüssels muss Daten enthalten. ( NOT NULL - Es darf keine leere Zelle im Primär-Schlüssel geben).

Jeder Wert muss eindeutig ( UNIQUE ) sein. Es darf z.B. nur keinen oder genau einen Datensatz mit persnr=123 geben.

Die Werte müssen allerdings nicht aufeinander folgen: Es ist möglich, dass die Bereiche persnr=50..70 einfach fehlen.
Tipp: Verwenden sie in jeder Tabelle nur ganze positive Zahlen ( INT UNSIGNED ) für den Primärschlüssel. Das bietet die meiste Sicherheit und funktioniert am schnellsten.

Tipp: Der Prim6auml;r-Schlüssel sollte vom Server automatisch eingesetzt werden ( AUTO-INCREMENT ) Das User-Interface sollte keine Änderung dieses Felds erlauben.

Tipp: Verwenden sie immer einen automatisch verwalteten internen Schlüssel ohne sonstige Bedeutung.
Beispiel: Die Sozialversicherungs-Nummer sollte theoretisch als Schlüssel für Personen geeignet sein. Verwenden sie trotzdem für Primär-Schlüssel und SVNr getrennte Felder: Nur so ist es möglich, eine falsch eingetragene SVNr auszubessern oder eine fehlende SVNr nachzutragen.

Tipp: Wenn Werte von Primär-Schlüsseln freiwerden (z.B. durch Löschen von Datensätzen), dann sollten diese niemals mehr für andere Daten verwendet werden.

Feld (field) = Spalte

Jedes Tabellen-Feld (Spalte) hat einen Namen.
Der Feld-Name muss innerhalb der Tabelle eindeutig sein.
Keine Tabelle darf 2 Felder (Spalten) mit identischen Namen enthalten.
Es ist nicht notwendig, aber sinnvoll, für die Namen von Feldern (Spalten) noch strengere Regeln anzuwenden:

Wählen sie Feld-Namen, die in der gesamten Datenbank eindeutig sind. Verwenden sie dazu für jede Tabelle eine kurze Vorsilbe, z.B. pers_vorname, pers_zuname, usw.
Diese Maßnahme schafft Übersicht bei komplizierten Befehlen und Verknüpfungen.
Reservieren sie die erste Spalte jeder Tabelle für die interne Organisation (Primär-Schlüssel, primary key).
Es ist zwar zulässig, auch andere Felder als Primär-Schlüssel zu verwenden, die erste Spalte ist jedoch die beste (zuverlässigste) Wahl.
Entkoppeln sie die Namen der Felder von der Überschriften. Das erscheint zunächst mühsam, erleichtert jedoch die Programmierung außerordentlich. Jede spätere Änderung oder Anpassung an andere Sprachen wird dadurch erleichtert.
Beispiel:
Wählen sie als Feld-Name pers_vorname und als Überschrift 'Vorname'.
Jedes Feld hat eine Type. Übliche Typen sind z.B. ganze Zahlen, Gleitkomma-Zahlen, Datum, Zeit, Text usw.
Für erste Versuche ist die genaue Wahl der Feld-Type unkritisch.
Wenn die Anzahl der zu verwaltenden Daten groß ist, dann muss man bei der Wahl der Type sehr umsichtig vorgehen, da sich schon kleine Unterschiede der Typen stark auf den Speicherplatz und auf die Geschwindigkeit der Verarbeitung auswirken.
Die meisten Datenbanken bieten dazu eine feine Abstufung der Grund-Typen, z.B. ganze Zahlen verschiedener Werte-Bereiche ( TINYINT, SMALLINT, INT, BIGINT... ) mit und ohne Vorzeichen ( signed, unsigned ), Texte verschiedener fixer und variabler Länge usw.

 NULL

Für jedes Feld muss festgelegt werden, ob es leer bleiben darf ( NULL ) oder ob es in jedem Fall Daten enthalten muss ( NOT NULL ).

Vorsicht: Die Suche nach NULL (unbestimmt) ist nicht identisch mit der Suche nach leeren Daten-Zellen !

Der Primär-Schlüssel darf niemals leer bleiben.
Alle anderen Felder sollten nach Möglichkeit leer bleiben können. In der Praxis kommt es vor dass manchmal auch solche Daten unbekannt sind, von denen man das bei Herstellung der Datenbank nicht angenommen hat. In diesem Fall zwingt man die AnwenderInnen zur Eingabe unsinniger Daten.
Jedes Feld kann als UNIQUE markiert werden. In diesem Fall muss es einen eindeutigen Inhalt haben, d.h. jeder Wert dieser Spalte darf nur einmal vorkommen. Der Primär-Schlüssel muss immer UNIQUE sein.
Bei allen anderen Feldern sollte diese Eigenschaft besser nicht verlangt werden. Wenn in der Praxis unerwartet doch gleiche Werte mehrfach vorkommen, zwingt man die AnwendeerInnen zur Eingabe unsinniger Daten.

Standard-Werte

Für jedes Feld kann ein Standard-Wert festgelegt werden.
Dieser Wert wird automatisch in jeden neu angelegten Datensatz eingetragen.
Verwenden sie Standard-Werte für alle häufig eingesetzten Daten, das spart Arbeit und ergibt weniger Eingabe-Fehler.
Beispiel:
Wenn die Mehrzahl ihrer KundInnen aus Österreich stammt, dann verwenden sie für das Feld 'Staat' der Adressen-Tabelle den Standard-Wert 'A'.
Berechnete Felder
Es ist möglich, aus den vorhandenen Daten jedes Datensatzes (Zeile) neue Daten zu berechnen, z.B. den 'Body Mass Index' aus Gewicht und Größe.

Solche Daten werden niemals in der Datenbank gespeichert.

Man kann die Daten bei Bedarf jederzeit neu berechnen und erhält dabei garantiert die aus den aktuellen Daten berechneten Werte.
Wenn man solche berechnete Felder mehrmals benötigt, dann werden sie berechnet und die Daten für die Arbeitszeit (Sekunden) in einer temporären Tabelle gespeichert, die anschließend wieder gelöscht wird.
Zur Berechnung kann man wahlweise SQL-Funktionen (und damit den DB-Server) verwenden oder die Funktionen des User-Interface (z.B. PHP - und damit des Webservers).
Zusammenfassungen (Aggregat-Funktionen)
Jeder DB-Server bietet einige Funktionen zur Zusammenfassung aller Zellen eines Feldes (Spalte), z.B. count (Anzahl), min, max usw.

Die Daten dieser Funktionen werden nicht gespeichert, weils sie sich mit der jeweiligen Auswahl der Datensätze ändern.