Wenn man nicht oft mit Datenbanken in Berührung kommt, kann man schnell man wieder was vergessen oder verwechseln. Speziell beim Datenbank Schema Design, sind das wichtige Einstellungen. Man kann zum Beispiel die Datenbankabfrageperformance mit Fremdschlüssel enorm verbessern. Kleiner Hinweis vorweg, auch mit der richtigen Datenbanktyp (IMAP, InnoDB) lässt sich einiges rausholen.
Der wichtigste Satz, den ihr Euch merken müsst. Ein Primärschlüssel ist ein Attribute, womit man eine Datenbankzeile (Tupel) identifizieren kann. Ein Fremdschlüssel ist ein Attribute was auf den Primärschlüssel einer anderen Tabelle verweist und verknüpft diese auch.
Primärschlüssel erkennt man in Tabellen daran das das Attribute Unterstrichen ist.
Fremdschlüssel erkennt man in Tabellen daran das das Attribute Überstrichen ist.
Ein Primärschlüssel muss eindeutig und minimal sein. Also vermeidet gleich, zusammengesetzte Schlüssel als Primärschlüssel und setzt gleich eine ID die sich autoinkrementiert. Klar es gibt immer wieder Fälle, wo man bereits im Vorfeld weiß, dass der Primärschlüssel eindeutig sein wird. Gutes Beispiel Automarken, Wochentage, Schulfächer. Weil es halt nur ein Porsche, ein Freitag und ein Mathe gibt. Dann muss man nicht zwingend mit einer Integer ID die sich autoinkrementiert arbeiten. Ich tue es aber trotzdem. Man weiß ja nie, oder? So kann es ja sein und so war es bereits schon mal, dass ein Autokonzern seinen Namen änderte. Dann müsste man alle Einträge ändern. Mit der Integer ID muss man nur einen Wert aktualisieren.