Um das Thema nochmals aufzuwärmen ...
Ich hatte mich vor längerem mal mit den Serienterminen beschäftigt und auch im Forum die Frage gestellt, ob es (aus Gründen der Abfragegeschwindigkeit) sinnvoller sei,
(A) die Serientermine alle als einzelne Datumswerte (für jeden Tag eines Termines je einen Datensatz) einzugeben oder eben
(B) die Berechnung über weitere Verknüpfungen und Intervalle (wie wöchentlich, monatlich usw.) zu basteln, so dass pro Terminserie nur ein Datensatz entsteht.
Damals wurde mir geraten, die Termine alle einzeln in die Datenbank einzutragen (A), weil dadurch die Abfragegeschwindigkeit gegenüber der "Einzelfall-Berechnung" steigt.
Nun lese ich aber hier im Forum immer öfter die andere Variante, dass also online per MySQL oder PHP ein Datum daraufhin untersucht werden soll, ob es in einen Zeitraum fällt, der durch einen Serientermin abgedeckt wird (B).
Ich habe (für eine Internetzeitung) sehr viele Einzeltermine und Terminserien. Allein die Öffnungszeiten von vielen Einrichtungen, die ich mit in meiner Datumsabfrage einbauen will, spricht eher für die Intervallvariante (B). Aber wenn ich mir vorstelle, dass online jeder sagen wir zweite Termin auf das Intervall untersucht werden soll, dann dauert doch auch das ewig!? Ich kann die Abfrage natürlich eingrenzen, aber ich sehe es doch richtig, dass PHP oder MySQL jeden Termin, der mit einem Intervall verknüpft ist, in einem Array bzw- Abfrage ausführen muss, um dann diese Ergebnisse mit dem gewünschten Datum zu vergleichen?
Sprich: Habe ich einen Datensatz, der am 15.01.2006 begann und über einen Wert "w" als wöchentlicher Termin gekennzeichnet ist, dann müsste ich per Array/Abfrage simulieren 15.01.; 22.01;29.01 .. (alle 7 Tage) um dann zu schauen, ob heute der Termin läuft.
Das sind doch irre Rechenoperationen, oder? Also scheint die direkte Eingabe aller Termine in die Datenbank doch besser zu sein? |