Stellt Euch vor, eine Firma speichert bei jedem Mitarbeiter, den Namen der Abteilung und Name und Adresse des Vorgesetzten. Und dann zieht der Vorgesetzte um. Das ist dann viel Arbeit, wenn man alles Stellen kennt kann man es in den Griff bekommen, aber auch nur mit erfahrenen ITler der die verkorkste Struktur auch kennt.
Besser man verteilt die Informationen auf verschiedene Tabellen, so dass jede Information genau einmal vorliegt. Jede Tabellenzeile bekommt dann eine ID. In der Tabelle Abteilung, steht dann in der Spalte Abteilungsleiter, die ID des entsprechenden Mitarbeiters. Und Mitarbeiter haben unter Abteilung die ID der Abteilung stehen. Warum keine Zeichenketten als Fremdschlüssel? Das ist im Prinzip kein Problem, wenn die Zeichenkette eindeutig ist und sich garatiert niemals ändert, und hat den Vorteil das es von Menschen einfacher zu lesen ist. Es ist aber auch langsamer, bei einer Zahl kann der Rechner sofort an die passende Stelle gehen. Wird jedoch eine Zeichenkette verwendet, muss Zeile für Zeile durchgearbeitet werden. Das kann man durch einen Index beschleunigen, in einem Index wird die Zeichenkette in eine Zahl umgerechnet und von da an kann wieder direkt zugegriffen werden. Das verwenden von Index ist absoluter Standard und wurde auch im der Datenbank gemacht, die ich gerade bearbeitet.