Lektion 3: Datenbank-Modellierung und -Strukturierung

VonDr.-Ing. Erik Neitzel
Lektion 3: Datenbank-Modellierung und -Strukturierung

In dieser Lektion werden einige Ratschläge zum Starten jedes Datenbankprojekts in Bezug auf die Datenmodellierung und zum Durchdenken gegeben, gefolgt von einer kurzen Einführung in die Verwendung von Datendefinitions-, Manipulations- und Warteschlangenanweisungen.

Grundsätzlicher Datenbank-Entwurfsprozess

Als erstes musst Du sicherstellen, dass Du weißt, was deine Anwendung kann. Nachdem Du darüber nachgedacht hast, kannst Du dich für eine Datenstruktur entscheiden.

Versuche dabei an Folgendes zu denken:

  • Mit welchen Hauptentitäten befasst sich meine Datenbank?
  • Welche Beziehungen bestehen zwischen diesen Entitäten?
  • Benötige ich zusätzliche Beziehungstabellen?
  • Was sind die Hauptattribute meiner Entitäten und meiner Beziehungen?

Du kannst ein Tool zur Modellierung von Entitätsbeziehungen oder nur ein Blatt Papier verwenden – das hängt ganz davon ab, wie komplex deine Datenbank ist.

Entscheide dich anschließend für einen eindeutigen Primärschlüssel für jede deiner Entitäten, normalerweise eine fortlaufende Nummer oder ID, die Du beispielsweise in jeder WordPress-Tabelle findest.

Jetzt ist es ratsam, all deine Datenbanktabellen und all ihre Attribute einschließlich der Primärschlüssel mithilfe einer Keynote / Excel-Datei oder eines Blattes Papier zu “emulieren”. Visualisiere deine Tabellen und fülle sie mit Beispieldaten. Auf diese Weise kannst Du sicher sein, dass Du nichts Wichtiges vergisst. Überlege dir anschließend, aus welchen Daten dein Primärschlüssel besteht. Sind es Daten, die Du von einem anderen System erhältst, bei dem Du sicher sein kannst, dass jeder neue Eintrag einen anderen Schlüsselwert hat, oder möchtest Du, dass er automatisch mit auto_increment gefüllt wird.

Create table Statements

Erstelle abschließend dein endgültiges Datenmodell mithilfe von DDL-Anweisungen (Create Table SQL Statements), wie bereits erläutert. WordPress und jedes seiner Plugins erledigt das für dich. Der einzige Weg diese Create-Statements selbst zu sehen bestünde bei einer WordPress-Installation darin, einen Speicherauszug deiner Datenbank abzurufen. Darin siehst Du dann Tabellen-Definitionen wie die folgende:

CREATE TABLE `wp_users` (
  `ID` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_login` VARCHAR(60),
  `user_pass` VARCHAR(255),
  `user_nicename` VARCHAR(50),
  `user_email` VARCHAR(100),
  `user_url` VARCHAR(100),
  `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `user_activation_key` VARCHAR(255),
  `user_status` INT(11) NOT NULL DEFAULT '0',
  `display_name` VARCHAR(250) NOT NULL DEFAULT '',
  PRIMARY KEY (`ID`)
)

Was Du hier siehst, ist eine Tabelle “wp_users”, die mit zehn Spalten (Attributen) erstellt wird: ID, Benutzeranmeldung, Benutzerpass, Benutzername, Benutzer-E-Mail, Benutzer-URL, Benutzerregistriert, Benutzeraktivierungsschlüssel, Benutzerstatus und Anzeigename. Anschließend wird definiert, dass die Spalten-ID ein Primärschlüssel ist (dessen Wert nur einmal vorhanden sein kann). Dieser Schlüssel kann dann von anderen Tabellen als Referenz für die betreffende Datenzeile verwendet werden. Außerdem kann die ID nicht null sein und wird automatisch erhöht, wenn eine neue Zeile in der Tabelle wp_users erstellt wird.

Du siehst auch bigint (20) und varchar (100) usw. – das sind die Datentypen jedes Attributs und seine zulässige maximale Wertgröße. Es gibt auch einige zusätzliche Informationen, mit denen Du dich derzeit nicht befassen musst. Es ist jedoch wichtig, ein grundlegendes Verständnis dafür zu erlangen, wie und warum Datentabellen in einer Datenbank definiert werden.

Insert, select, update and delete Statements

Angenommen, ein Benutzer soll zu deiner WordPress-Tabelle wp_users hinzugefügt werden, indem er direkt mit der Datenbank spricht.

INSERT-Statements

Du gibst dann das folgende INSERT-Statement ein:

INSERT INTO wp_users 
(ID, user_login, user_pass, user_email, user_url, display_name)
VALUES 
(NULL, 'serpbot', 'abc123', 'serpbot@serpbot.org', 'www.serpbot.org', 'SERPBOT')

Wir weisen die Datenbank an, etwas in die Tabelle “wp_users” einzufügen, die Spalten anzugeben, die wir adressieren möchten, gefolgt von den entsprechenden WERTEN.

SELECT-Statements

Wenn wir den gesamten Inhalt unserer Benutzertabelle sehen möchten, können wir die Datenbank folgendermaßen fragen:

SELECT * FROM wp_users

Das würde alle (*) Daten aus unserer Tabelle “wp_users” AUSWÄHLEN und uns eine Liste aller aktuell eingefügten Zeilen geben – einschließlich unseres neu eingefügten Benutzers “serpbot@serpbot.org”.

UPDATE-Statements

Wenn wir jetzt das Passwort dieses Benutzers aktualisieren möchten, würden wir Folgendes verwenden:

UPDATE wp_users SET user_pass = 'bcd234'

Mit dieser SQL-Anweisung weisen wir die Datenbank an, die Tabelle “wp_users” zu aktualisieren und das Attribut “user_pass” auf “bcd234” zu setzen.

DELETE-Statements

Wenn wir diesen Benutzer aus der Datenbank löschen möchten, gehen wir folgendermaßen vor:

DELETE FROM wp_users WHERE user_email = 'serpbot@serpbot.org'

Wir weisen die Datenbank an, aus der Tabelle “wp_users” zu löschen, wobei das Attribut “user_mail” dem Wert “serpbot@serpbot.org” entspricht.

Ziemlich einfach, oder? Dies ist natürlich nur als Einführung gedacht. Es kann jedoch als Zeichen dienen, keine Angst vor relationalen Datenbanken und SQL-Anweisungen zu haben, wenn Du Wartungsarbeiten an deiner WordPress-Installation durchführst oder ein eigenes Plugin oder eine eigenständige Anwendung von Grund auf neu erstellst.

Die nächsten Lektionen:

Dr.-Ing. Erik Neitzel