Wie Links zur Identifikation der Inhalte speichern?
Malcolm Beck´s
- datenbank
0 Cheatah0 Hopsel0 Cheatah
0 Malcolm Beck´s
0 hotti
hi,
ich habe in meinem kleinen CMS eine umständliche Methode, die Inhalte anhand der URI zu identifizieren und würde das gerne vereinfachen, nur habe ich meine Zweifel, ob meine Idee Sinnvoll ist.
Aktueller Stand:
id | uri_name
----------------
1 | autos -- autos ist eine Hauptkategorie
2 | bmw -- unterkategorie von „autos“
3 | mercedes -- unterkategorie von „autos“
4 | vw -- unterkategorie von „autos“
5 | empfehlungen -- unterkategorie von „autos“
-- Nächste Kategorie --
6 | schiffe -- schiffe ist eine Hauptkategorie
7 | ruderboot -- unterkategorie von „schiffe“
8 | kanu -- unterkategorie von „schiffe“
9 | empfehlungen -- unterkategorie von „schiffe“, allerdings könnte ich es so nicht machen, da „autos“ bereits empfehlungen hat
Wenn ich jetzt anhand der URI die ID der jeweiligen Begiffe ermitteln möchte (mit der ich dann die Inhalte der Tabellen verknüpfe), muss ich die URI zerstückeln, um an den Begriff zu kommen, Bspw.:
example.org/autos/mercedes
Und dann halt den letzten String nach dem letzten „/“ rausfiltern, hat aber den Nachteil, dass ich jeden Begriff nur ein mal verwenden kann; jetzt könnte es aber sein, dass ich 2 Hauptkategorien habe, wo ich „empfehlungen“ als identifier schreiben möchte, dann aber würde ich ein falsches bzw. nicht gewünschtes Ergebnis aus der Query bekommen.
Jetzt habe ich mir gedacht, dass ich das ja auch direkt im benötigten Format speichern könnte:
id | uri_name
----------------
1 | autos
2 | autos/bmw
3 | autos/mercedes
4 | autos/vw
5 | autos/empfehlungen
Das würde mir die arbeit um ein vielfaches erleichtern, nur, ist diese Variante auch Sinnvoll, oder wie könnte ich das sonst noch lösen?
Alternativ (gerade auf die Idee gekommen):
id | uri_name | from_categorie
--------------------------
1 | autos | 0
2 | bmw | 1
3 | mercedes | 1
4 | vw | 1
5 | empfehlungen | 1
6 | schiffe | 0
7 | ruderboot | 6
8 | kanu | 6
9 | empfehlungen | 6
Wie würdet ihr das angehen?
mfg
Hi,
Alternativ (gerade auf die Idee gekommen):
[...]
Wie würdet ihr das angehen?
fast wie Dein letzter Vorschlag. Nur würde ich natürlich niemals auf die Idee kommen, für Kategorien, die *keine* Unterkategorie sind, dieses "keine" mit einem anderen Wert als NULL anzugeben. Die "0" sagt aus, dass eine Kategorie innerhalb einer Kategorie mit der ID 0 liegt - und dies ist nicht gegeben.
Cheatah
Hi Cheatah!
Die "0" sagt aus, dass eine Kategorie innerhalb einer Kategorie mit der ID 0 liegt - und dies ist nicht gegeben.
Du hast recht.
Es kann aber sinnvoll sein, eine solche Rootkategorie anzulegen.
Dann gäbe es nämlich eine Rootkategorie mit dem leeren URI-Namen:
id | uri_name | from_categorie
--------------------------
0 | | NULL
... | ... | ...
MfG H☼psel
Hi,
Es kann aber sinnvoll sein, eine solche Rootkategorie anzulegen.
ohne Zweifel, dann sind aber die Hauptkategorien kategorisch Unterkategorien der Rootkategorie ;-)
Cheatah
hi,
fast wie Dein letzter Vorschlag.
Hatte ich mir schon gedacht, sieht auch am Sinnvollsten aus.
Nur würde ich natürlich niemals auf die Idee kommen, für Kategorien, die *keine* Unterkategorie sind, dieses "keine" mit einem anderen Wert als NULL anzugeben.
Danke für den Hinweis -- nun werde ich mal sehen, wie ich das ganze umsetzen kann.
mfg
hi,
Wie würdet ihr das angehen?
2 Tabellen:
Kategorie (1)
1 Autos
1.1 Schnelle Autos
1.2 Langsame Autos
2 Flugzeuge
3 Hubschrauber
Artikel (2)
1.1.1 Mercedes C 180
1.1.2 BMW 318i
1.2.1 Golf
1.2.1 Ente
2.1 Dash 8-100
3.1 Alouette II
Bezug zur URI in Parameter
k=1.1 (Kategorie Schnelle Autos)
a=1.1.1 (C180)
Anmerkung: Im Artikel selbst ist die Kategorie kodiert
1.1.1 ist das "erste" Auto in der Kategorie 1.1
1.1.2 ist das "zweite" Auto in Kat 1.1 usw.
Beispielsweise kann mit einem URI like http://example.com/show?k=1.1 eine Liste aller Langsamen Autos erstellt werden. http://example.com/show?a=1.1.1 hingegen bezeichnet exakt den C 180.
Hotti
hi,
» Wie würdet ihr das angehen?
2 Tabellen:
Danke für deinen Vorschlag, allerdings werde ich die von Cheatah genannte Methode verwenden, da 2 Tabellen für diesen Zweck nicht geeignet sind; die Navigation geht über 3 Level, dann müsste ich ja noch eine weitere Tabelle erstellen, abgesehen davon ist die wichtigste Bedingung lesbare URIs erzeugen, keine IDs.
mfg