Hallo Matthias!
Danke für die ausführliche Antwort!
Die IDs müssen nur eindeutig sein, es könnten sogar Zufallszahlen sein.
Ich habe in der Zwischenzeit verstanden, wie das gemeint war.
Ebenso bräuchtest du keine eigenen Tabellen für "Frauen" und "Männer", nur weil du den Status des Verheiratetseins abbilden willst (unabhängig davon, dass es auch gleichgeschlechtliche Partner gibt)
Sorry, ich bin kein politisch korrekter Mensch und verweigere den so modernen Begriff des "gleichgeschlechtlichen Partners". Sowas gibt es nicht für mich. Es mag Fetische und sexuelle Vorlieben geben. Und das ist auch gut so und zu respektieren. Aber eine Partnerschaft/Ehe gibt es in meinen Augen nur zwischen Mann und Frau. Auch wenn mir irgendwelche Genderorganisationen, linke Gutmenschen oder die Gesellschaft im Allgemeinen zum 50. Millionsten Mal das Gegenteil einreden wollen. Aber lassen wir das Thema, gehört eh nicht hier her.
Aus meiner Sicht wäre folgende Tabelle sinnvoll
ID | KNr | KName | Parent | Linktext | Linkziel
In der Spalte Parent steht die KNr. der Elternkategorie bzw. 0, wenn es kein Elternteil gibt.
Ich sehe nicht, wo du da Redundanzen erzeugst.
Also auf Wikipedia steht: "Die Normalisierung hat den Zweck, Redundanzen (mehrfaches Festhalten des gleichen Sachverhalts) zu verringern und dadurch verursachte Anomalien (z. B. infolge Änderung an nicht allen Stellen) zu verhindern, um so die Aktualisierung einer Datenbank zu vereinfachen (wegen Änderung an lediglich einer Stelle) sowie die Konsistenz der Daten zu gewährleisten."
Wenn ich bei Deinem Beispiel den Namen einer Kategorie verändern möchte, kann ich das nicht an einer einzigen Stelle tun, sondern muss es bei jedem Link-Datensatz, der dieser Kategorie zugeordnet ist, ändern. Das ist doch wohl ein exemplarischer Fall, der nach Normalisierung geradezu schreit.
Um eine weitere Analogie aufzuzeigen: Mit der selben Logik würde man jemenden, der eine DB für einen Autovermieter erstellt und eine Tabelle mit den Fahrzeugkategorien sowie eine mit den Fahrzeugen füllt, sagen, er soll doch die Autos in die selbe Tabelle wie die Fahrzeugkategorien schmeissen. Auch hier stünden dann 2 _völlig_ verschiedene Informationen in eienr Tabelle.
Man sollte auch "vorne" wieder ankommen mit der schließenden Klammer und Leerzeilen sind auch nicht unwichtig.
Ich persönlich finde die Art und Weise im von mir gezeigten ersten Beispielfall immer noch am übersichtlichsten. Bei dem Stil erkenne _ich_ am schnellsten die Zusammenhänge. Aber ich denke, wir sind uns darüber einig, dass es jeder so handhaben soll, wie er den Codezusammenhang am leichtesten mental verarbeiten kann.
Ich habe mich übrigens mit der alternativen Schreibweise von Kontrollstrukturen in PHP angefreundet, das macht es mMn. übersichtlicher wenn man html-Ausgaben im PHP-Code braucht.
Man darf die beiden Schreibweisen allerdings nicht mischen. (Und unser Syntaxhighlighter kennt die nicht.)
Auch eine Möglichkeit.
Wenn es URIs sind die du "in schön" ausgeben möchtest, verwende urldecode.
Die URL wird von mir im Browser markiert, dann mittels rechter Maustaste kopiert und dann in einem Formular wieder mittels rechter Maustaste eingefügt. Die URL wird dann samt http:// und einem evt. www so, wie sie gerade noch in der Adresszeile des Browser gestanden ist, 1:1 utf-8 codiert gespeichert. Bei der Ausgabe einer Linkliste steht die Adresse dann sowieso nur als href-Ziel in einem Link. Den sichtbaren Verweisnamen am Bildschirm bildet der "Link-Name", den ich gemeinsam mit der URL speichere.
Mit lieben Grüßen
Melvin Cowznofski

What – me worry?