Indizes um Dokumente zu referenzieren: Sinnvoll?
Philipp Hasenfratz
- programmiertechnik
Halihallo Forumer
Ich hatte vor kurzem ein kleines Problem:
Machte eine Homepage mit einem "höchst" primitiven CMS. Beiträge/Artikel/Dokumente werden mit einer eineindeutigen ID in der Datenbank verlinkt. Hier entstand ein kleines Problem:
Wenn die Daten eingelesen werden (setup - Programm), waren die ID's nicht konsistent auf allen Systemen (lokaler PC und Webserver), da die Dokumente nicht in gleicher Reihenfolge eingelesen wurden. Dieses Problem liesse sich ja einfach ändern, aber was passiert, wenn ein neuer Eintrag in das System eingefügt wird, bzw. lokal und online andere Einträge veröffentlich werden? - Die ID's stimmen - auf Teufel komm raus - nicht überein und die Dokumente sind völlig falsch verlinkt... Bekanntes Problem??? - Hab mir mal einige Gedanken zu einer "besseren" Lösung gemacht und vielleicht hilfts wem, bzw. hat jemand einige guten/konstruktiven Kommentare hierzu:
„Immer diese Indizes“ :-((
Oftmals werden die Inhalte von Artikeln in CMS - Systemen durch eine ID eineindeutig referenziert. Klar bietet dies einige Vorteile, aber sie sind auch lästig und bei Veränderungen der Inhalte bzw. Erweiterung derselben nervtötend... Sobald eine ID wechselt (z. B. weil der Artikel auf gewissen Systemen anders in die Datenbank eingeordnet wird) stimmen alle Links nicht mehr. Es artet in ein wildes Suchen nach Dokumenten aus, welche den genannten Artikel referenzieren (bzw. manuelle Eintragungen in die Datenbank). Oder man erstellt einen neuen Artikel zu einem bestimmten Thema und muss ihn jetzt manuell in jedem Dokument verlinken, welches ein verwandtes Thema behandelt...
Ich habe mich auf die Suche nach einer anderen Lösung gemacht und habe folgendes Zusammengereimt:
Die ID sagt eigentlich überhaupt nichts über den Inhalt des Dokumentes aus; es ist eine abstrakte und willkührliche Bezeichnung für ein Dokument. Dadurch entsteht erst das genannte Problem. Die Lösung: Artikel müssen inhaltsbezogen referenziert werden! - Nicht durch die ID's, sondern durch Kern- / Keywords. Wenn dies geschehen ist, kann man den Prozess der Dokumentenverknüpfung automatisieren, d. h. jedesmal, wenn ein Link auf ein Dokument, welches mit Keywords referenziert wird, zeigt, wird eine Suchabfrage gestartet, welche alle themenverwandten Dokumente in der Datenbank auffindet und dem Besucher zur Auswahl ausgibt (bzw. wenn nur ein Dokument gefunden wird, gleich darauf weiterleitet; bzw2. das Beste/Treffendste gleich zum Client sendet).
Natürlich können auch die Keywords durch ID's repräsentiert werden, sodass der ID - Philosophie gewahrt bleibt und so würde dies ausschaun:
/show_article.pl?ID=2545,945,3853 # KeywordListe
KeywordID KeywordContent
2545 hello
945 world
3853 kochen
3854 Informatik
DocumentID KeywordList Source
1 2545, 945 www.bla1.ch
2 3853,3854 www.bla2.ch
3 98543 www.hilfe.ch
so, durch das obengenannte Statement würden nur die Dokumente 1 und 2 gefunden werden, wobei ersteres treffender war und somit selektiert und zum Client gesendet wird.
Viele Grüsse
Philipp
Moin!
Machte eine Homepage mit einem "höchst" primitiven CMS. Beiträge/Artikel/Dokumente werden mit einer eineindeutigen ID in der Datenbank verlinkt. Hier entstand ein kleines Problem:
Wenn die Daten eingelesen werden (setup - Programm), waren die ID's nicht konsistent auf allen Systemen (lokaler PC und Webserver), da die Dokumente nicht in gleicher Reihenfolge eingelesen wurden. Dieses Problem liesse sich ja einfach ändern, aber was passiert, wenn ein neuer Eintrag in das System eingefügt wird, bzw. lokal und online andere Einträge veröffentlich werden? - Die ID's stimmen - auf Teufel komm raus - nicht überein und die Dokumente sind völlig falsch verlinkt... Bekanntes Problem??? - Hab mir mal einige Gedanken zu einer "besseren" Lösung gemacht und vielleicht hilfts wem, bzw. hat jemand einige guten/konstruktiven Kommentare hierzu:
Der einzige Kommentar, der mir dazu einfällt: Die ID ist elementarer Bestandteil der Datenstruktur. Wenn du also Artikel zwischen Systemen transferierst, mußt du logischerweise auch die IDs transferieren. Sowas ist alles machbar, da ja im Prinzip nur die Daten einer Datenbank dupliziert werden müssen - die Tabellenstruktur sollte dabei natürlich identisch sein, aber das gleiche DBMS muß nicht verwendet werden.
Insofern ist nicht die Methode fehlerhaft, sondern dein bisheriges Vorgehen, das Livesystem zu aktualisieren. Ich hatte jedenfalls noch keine derartigen Probleme.
Sobald eine ID wechselt (z. B. weil der Artikel auf gewissen Systemen anders in die Datenbank eingeordnet wird) stimmen alle Links nicht mehr.
Das muß eben einfach verhindert werden - und es kann verhindert werden, und auch vollkommen ohne Magie. Einfach die geforderte ID mit in die neue Datenbank einfügen. Die Datenbank wird sich im Zweifel schon melden, wenn du eine Unique ID zweimal vergeben willst - dann ist klar, daß irgendwas falsch gelaufen ist, und du statt INSERT vielleicht lieber UPDATE machen willst.
Die ID sagt eigentlich überhaupt nichts über den Inhalt des Dokumentes aus; es ist eine abstrakte und willkührliche Bezeichnung für ein Dokument.
Die ID ist das einzige wirkliche Erkennungsmerkmal, welches auch bei Änderungen des Dokuments konstant bleibt. Sie wird ein einziges Mal vergeben: Beim Neuanlegen eines Dokuments. Danach bleibt sie eindeutig diesem Dokument zugeordnet bis zum Ende der Welt[1]. Nur so funktioniert es. Alles andere, insbesondere deine Keyword-Raterei, funktioniert nicht, oder nicht zuverlässig. Das sind dann eher Suchmaschinen (die ja auch was nettes an sich haben können).
- Sven Rautenberg
[1] Wobei als Ende der Welt wahlweise der Entropietod, die Wandlung unserer Sonne zum Roten Riesen, kosmische Katastrophen, fortschreitende Umweltzerstörung oder kriegerische Auseinandersetzungen zur Wahl stehen.
Halihallo Sven
Insofern ist nicht die Methode fehlerhaft, sondern dein bisheriges Vorgehen, das Livesystem zu aktualisieren. Ich hatte jedenfalls noch keine derartigen Probleme.
Hm. Ja, wobei fehlerhaft etwas hart ausgedrückt ist, ich will einfach nicht jedes mal, wenn ein neuer Artikel o. ä. hinzukommt, die ganze Datenbank speigeln (*Faulheit*)... Aber mit meinem Keyword-blablabla wird wohl der Programmieraufwand auch sehr viel grösser und ist somit nicht ökonomisch, d. h. ich spiegele lieber die DB :-)
Sobald eine ID wechselt (z. B. weil der Artikel auf gewissen Systemen anders in die Datenbank eingeordnet wird) stimmen alle Links nicht mehr.
Die ID sagt eigentlich überhaupt nichts über den Inhalt des Dokumentes aus; es ist eine abstrakte und willkührliche Bezeichnung für ein Dokument.
Die ID ist das einzige wirkliche Erkennungsmerkmal, welches auch bei Änderungen des Dokuments konstant bleibt. Sie wird ein einziges Mal vergeben: Beim Neuanlegen eines Dokuments. Danach bleibt sie eindeutig diesem Dokument zugeordnet bis zum Ende der Welt[1].
zu [1]: Ich wähle ersteres, die anderen treten ja schon bald auf :-)
Aber bis der "Entropietod" eintritt, da vergehen wohl nochmal ein paar Jährchen :-)
Nur so funktioniert es. Alles andere, insbesondere deine Keyword-Raterei, funktioniert nicht, oder nicht zuverlässig. Das sind dann eher Suchmaschinen (die ja auch was nettes an sich haben können).
Vielen Dank für die Hinweise. Hast mich auch von der "Standardvorgehensweise" überzeugt. War auch nur ein "Gedanke" von mir. Die Keyword-Umsetzung wäre vielleicht ganz nett, aber programmiertechnisch und wartungstechnisch wohl sehr, sehr viel aufwändiger...
Viele Grüsse und Danke!
Philipp