DB Kurs Naechste Lektion

Lektion 01 - Grundwissen

Was ist eine Datenbank?

Eine Datenbank speichert Daten so, dass man sie geordnet ablegen, suchen, veraendern und auswerten kann. In Webprojekten arbeiten wir sehr oft mit relationalen Datenbanken wie MySQL oder MariaDB.

1. Wofuer braucht man Datenbanken?

Eine App braucht Daten, die dauerhaft erhalten bleiben: User, Kurse, Aufgaben, Bestellungen, Kommentare, Rollen oder Einstellungen. Eine Datenbank ist dafuer stabiler und strukturierter als eine einfache JSON-Datei.

ProjektTypische Daten
LernsystemUser, Kurse, Lektionen, Aufgaben, Fortschritt.
ShopProdukte, Kunden, Bestellungen, Zahlungen.
BlogBeitraege, Kategorien, Kommentare, Autoren.
ForumUser, Themen, Antworten, Moderation.

2. Tabelle, Feld, Datensatz

Eine relationale Datenbank besteht aus Tabellen. Eine Tabelle ist wie eine Excel-Tabelle, aber strenger. Jede Spalte beschreibt ein Feld. Jede Zeile ist ein Datensatz.

idnameemailpoints
1Minamina@example.com80
2Alexalex@example.com45

id, name, email und points sind Felder. Die Zeile mit Mina ist ein Datensatz.

3. Primaerschluessel

Ein Primaerschluessel identifiziert einen Datensatz eindeutig. Meist nutzt man dafuer eine Spalte id. Zwei User duerfen denselben Namen haben, aber nicht dieselbe ID.

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  email VARCHAR(255) NOT NULL,
  points INT NOT NULL DEFAULT 0
);

AUTO_INCREMENT bedeutet: Die Datenbank vergibt automatisch die naechste ID. PRIMARY KEY macht die Spalte zum Primaerschluessel.

4. Fremdschluessel

Ein Fremdschluessel verbindet Tabellen. Wenn eine Aufgabe zu einem Kurs gehoert, speichert die Aufgabe nicht den ganzen Kurs, sondern nur die course_id.

CREATE TABLE lessons (
  id INT AUTO_INCREMENT PRIMARY KEY,
  course_id INT NOT NULL,
  title VARCHAR(150) NOT NULL,
  FOREIGN KEY (course_id) REFERENCES courses(id)
);

Dadurch weiss die Datenbank: Jede Lektion gehoert zu einem existierenden Kurs.

5. Wichtige Datentypen in MySQL

TypBedeutung
INTGanze Zahl, zum Beispiel Punkte oder IDs.
VARCHAR(255)Text mit maximaler Laenge.
TEXTLanger Text, zum Beispiel Beschreibung.
DATEDatum ohne Uhrzeit.
DATETIMEDatum mit Uhrzeit.
BOOLEANWahr/Falsch, in MySQL oft als 0/1 gespeichert.

6. CRUD: Die vier Grundaktionen

Fast jede Datenbank-App besteht aus CRUD. Wenn du CRUD verstehst, verstehst du den Kern vieler Webanwendungen.

AktionSQL
CreateINSERT - neuen Datensatz anlegen.
ReadSELECT - Daten lesen.
UpdateUPDATE - Daten veraendern.
DeleteDELETE - Daten loeschen.

7. Uebungen

  1. Erklaere den Unterschied zwischen Tabelle, Feld und Datensatz.
  2. Entwirf eine Tabelle courses mit mindestens vier Feldern.
  3. Entwirf eine Tabelle tasks mit Primaerschluessel.
  4. Markiere, welche Felder NOT NULL sein sollten.
  5. Erklaere, warum ein Name kein guter Primaerschluessel ist.
  6. Schreibe je ein Beispiel fuer Create, Read, Update und Delete in eigenen Worten.
Weiter zum relationalen Modell