Umsetzung im gewählten DBMS

Da ich mich bei der Umsetzung des ER-Modells noch für keine Zieldatenbank entschlossen hatte, werde ich dies nun nachholen. So sollen die allgemeinen Datentypen durch reell existierende Datentypen des MySQL Systems ersetzt werden.

Datentypen für eine MySQL-Datenbank

Datentyp Optionen Speicherplatz Beschreibung
TINYINT [(M)] [U] [Z] 1 Byte Ganzzahlen von 0 bis 255 oder von -128 bis +127.
SMALLINT [(M)] [U] [Z] 2 Bytes Ganzzahlen von 0 bis 65.535 oder von -32.768 bis +32.767.
MEDIUMINT [(M)] [U] [Z] 3 Bytes Ganzzahlen von 0 bis 16.777.215 oder von -8.388.608 bis +8.388.607.
INT [(M)] [U] [Z] 4 Bytes Ganzzahlen von 0 bis ~4,3 Mill. oder von -2.147.483.648 bis +2.147.483.647.
INTEGER [(M)] [U] [Z] 4 Bytes Alias für INT.
BIGINT [(M)] [U] [Z] 8 Bytes Ganzzahlen von 0 bis 2^64-1 oder von -(2^63) bis (2^63)-1.
FLOAT [(M,D)] [U] [Z] 4 Bytes Fließkommazahl, vorzeichenbehaftet. Wertebereich von -3,402823466^38 bis - 1,175494351^38, 0 und 1,175494351^38 bis 3,402823466^38.
DOUBLE [(M,D)] [U] [Z] 8 Bytes Fließkommazahl, vorzeichenbehaftet. Wertebereich von ~ -1,798^308 bis ~ - 2,225^-308, 0 und ~ 2,225^-308 bis ~ 1,798^308.
REAL [(M,D)] [U] [Z] 8 Bytes Alias für DOUBLE.
DECIMAL [(M,D)] [U] [Z] M + x Bytes Fließkommazahl, vorzeichenbehaftet. Speicherbedarf: x=1 wenn D=0, sonst x=2
NUMERIC [(M,D)] [U] [Z] M + x Bytes Alias für DECIMAL. Speicherbedarf: x=1 wenn D=0, sonst x=2
DATE - 3 Bytes Datum im Format 'YYYY-MM-DD'. Wertebereich von 01.01.1000 bis 31.12.9999.
DATETIME - 8 Bytes Datumsangabe im Format 'YYYY-MM-DD 'hh:mm:ss'. Wertebereich entspricht DATE.
TIMESTAMP [(M)] 4 Bytes Zeitstempel. Wertebereich: 1.1.1970 bis 2037. Anzahl Stellen (M): 6, 8, 12, 14.
TIME - 3 Bytes Zeit zwischen -838:59:59 und +839:59:59. Ausgabe: 'hh:mm:ss'.
YEAR [(2|4)] 1 Byte Jahr zwischen 1901 bis 2155 bei (4) und zwischen 1970 bis 2069 bei (2).
CHAR (M) [BINARY] M Byte(s) Zeichenkette fester Länge M. Wertebereich für M: 0 bis 255.
VARCHAR (M) [BINARY] L+1 Bytes Zeichenkette variabler Länge, Maximum ist M. Wertebereich für M: 0 bis 255.
BLOB - L+2 Bytes Binäres Objekt mit variablen Daten. Weitere Typen: TINYBLOB, MEDIUMBLOB und LONGBLOB.
TEXT - L+2 Bytes Identisch mit BLOB. Berücksichtigt beim Sortieren & Vergleichen die Groß- und Kleinschreibung nicht. Weitere Typen: TINYTEXT, MEDIUMTEXT, LONGTEXT.
ENUM ('val1','val2' ...) 1 oder 2 Bytes Liste von Werten (val1, val2 ...). Maximal 65.535 eineindeutige Elemente sind möglich.
SET ('val1','val2' ...) x Bytes String-Objekt mit verschiedenen Variablen. Maximal 64 'Mitglieder' sind möglich. Speicherbedarf: x ist 1, 2, 3, 4 oder 8.

Legende
^ = Potenzzeichen
[ ] = optionaler Parameter
BINARY = Attribut für die Sortierung
D = Anzahl der Kommastellen bei einer Dezimalzahl
L = Stringlänge (Berechnung Speicherbedarf)
M = maximale Anzahl der gezeigten Stellen
Mill. = Milliarden
U = UNSIGNED (Zahl ohne Vorzeichen)
Z = Zerofill

Für die Umsetzung der Textfelder, zum Beispiel des Attributs „Name“, eignet sich derDatentyp „VARCHAR“ am besten. Der Vorteil von „VARCHAR“ gegenüber dem älterenBruder „CHAR“ ist, dass die Zeichenkettenlänge den Speicherplatzbedarf bestimmt. Dies Weis ich, da ich bereits in einem früheren Projekt eine Datenbank zum Thema Gartenmöbel verwaltet habe. Der Einsatz des Datentyps konnte dort voll und ganz überzeugen. Für dieFrageformulierung sollten die 255 Zeichen ausreichen. Schlimmstenfalls könnte man beiEngpässen nachträglich eine Umstellung auf den Datentyp „TEXT“ vornehmen.Das Passwort soll verschlüsselt in der Datenbank gespeichert werden, um Personen ohneadministrative Rechte („root Rechte“) den Zugriff auf Fremddaten zu erschweren. Dazu wirddas Passwort mit der „MySQL“-Funktion „Encode“ verschlüsselt. Mit „Decode“ wird dieseFunktion wieder aufgehoben. Bei dieser Methode entstehen binäre Zeichenketten, die sichnicht als normaler String in der Datenbank speichern lassen. Das „MySQL“-Handbuchempfiehlt den Datentyp „BLOB“ zur Speicherung, weil dieser „0 Werte“ innerhalb vonZeichenketten ignoriert. Ein „String“ würde die Daten nach dem ersten „0 Wert“ abschneiden.Die Attribute „Modus“ und „Punkte“ kann man über den Datentyp „TINYINT“ verwirklichen. Der Wertebereich ist mehr als ausreichend, da eine maximale Punktzahl von255 in Ganzzahlen vergeben werden kann. Bereits die Speichergröße von einem Byte istausreichend. Ein „INT“ wäre für diesen Einsatz vollkommen übertrieben, denn wer vergibtschon 4,3 Mill. Punkte pro Frage!

Die Primär- und Fremdschlüssel bekommen den Datentyp „INT“, weil diese Zahlen mitjedem neuen Datensatz automatisch weiter hochzählen („auto-increment“-Funktion). Imersten Augenblick scheint dies verschwenderisch, da wieder freigegebene Plätze nicht genutztwerden. Jedoch ist diese Funktion notwendig, um die Fehlerfreiheit der Datenbank zugewährleisten. So könnten teilweise verwaiste Datensätze zu unerwünschten Ergebnissenführen.

Als Programm zur Eingabe der Datenstruktur kann man zum Beispiel das von der Firma„MySQL AB“ frei zur Verfügung gestellte Programm „MySQL Control Center“ verwenden.Es ermöglicht zusätzlich zu den standardmäßigen „MySQL“ -Eingaben das visuelle Anlegenvon Datenbanken. Zur Verwaltung der Zugriffsrechte eignet sich besonders der „MySQLAdministrator“, der auch kostenlos auf der „MySQL“-Webseite erhältlich ist. Eine weitereMöglichkeit zur Implementierung von Datenbanken stellt das Programm „DBDesigner 4“ von „Fabulous Force“ dar, hiermit ist es möglich, Datenbanken graphisch anzulegen.

Das fertige MySQL Datenbankdesign