Gunther: MySQL 5.0 - Tabellenlayout

Beitrag lesen

Hi hopsel!

Bei einer solchen Tabelle gibt es auch nicht viel zu normalisieren. Eine URL ist eindeutig, die kannst Du durchaus als Primärschlüssel festlegen, da kann die Spalte id (autoincrement) schonmal entfallen.
Prinzipiell hast du ja recht, aber was machst du, wenn plötzlich mehrere, also mindestens zwei, URLs mit einer Resource-ID verknüpft werden?

Auch wenn das in diesem Fall ausdrücklich nicht gewünscht scheint, sollte der Primärschlüssel einer Tabelle nie mit Semantik belegt sein. Er dient ausschließlich der Identifikation einzelner Datensätze.

Nicht gewünscht - ja (aus einem anderen Grund, der nichts mit der DB zu tun hat). ;-)
Das kann aber halt schon vorkommen, bspw. wenn sich ein Seitentitel eben doch mal (oder sogar mehrmals) ändern sollte[1]. Dann gibt es zwei oder mehr verschiedene Einträge in der Spalte 'res_url', die alle einen identischen Wert in der Spalte 'id' haben. Unterschied ist, dass es nur einen Eintrag darunter gibt (geben sollte) dessen Wert in der Spalte 'status' = NULL ist, nämlich in dem Datensatz, mit dem aktuellen Seitentitel.

Die älteren Einträge müssen aber ja weiterhin vorhanden sein, damit solche Requests nicht 'ins Leere' laufen, sondern korrekt per 301 redirected werden.

Gruß Gunther

[1] Das_sollte_natürlich am besten nie vorkommen, aber zumindest würde ich diese Option gerne von vornherein mit einbauen, um hinterher nicht doch vor dem Problem zu stehen, eben genau solch einen Fall doch irgendwie "handeln" zu müssen.