Hallo,
D.h. ich gehe wie folgt vor:
- Erstelle ich eine DB.
- Ich erstelle die Tabellen mit den jeweiligen Attributen.
Genau. Wichtig ist wie gesagt die richtige Engine (INODB). Das früher von MySQL (vor Version 5.5) als Standard eingesetzte MyISAM kann diese Spezialfeatures nicht.
2.1 Ich sage der Kurs_ID# in der Tabelle Schüler das sie der FK aus der Tabelle Kurs ist.
3. Beim eintragen des Schülers gebe ich folgendes quasi ein:
INSERT INTO Schüler (ID, Vorname, Nachname, Kurs_ID#)
VALUES("", Max, Mustermann, 2);
Jepp, so würde ich das machen.
Ich habe auch etwas von ON CASCADE und ON UPDATE gelesen. Bedeutet das beides das wenn ich die in der Tabelle den Kurs mit der ID 2 in ID 3 umbenne das die DB das auch automatisch in der Tabelle Schüler macht?
Genau.
"CASCADE" bedeutet nur, dass die Änderung an die verknüpften Tabellen weiter gegeben wird, Du kannst es mit "DELETE" oder "UPDATE" kombinieren um zu bestimmen, welche Form der Änderung kaskadiert werden soll:
- "ON DELETE CASCADE": Wenn Du den Kurs X löscht, werden alle Schüler aus X gelöscht
- "ON UPDATE CASCADE": Wenn Du die ID von Kurs X in Y änderst, ändert sich
auch die Fremdschlüsselbeziehung aller Schüler mit X in Y
Geht natrülich auch beides zusammen.
(Alternativ dazu kannst Du für UPDATE oder DELETE natürlich ein anderes Verhalten definieren, z.b. dass der entsprechende Fremdschlüssel auf Null gesetzt wird: ON DELETE SET NULL)