Hallo Pit,
"Zeitraumlose Termine" sind wohl eher Öffnungszeiten. Die trägt sich aber niemand in seinen Kalender ein, oder?
Dass ein User an einem Termin über die volle Strecke teilnimmt, wäre für mich die Normalsituation. In dem Fall setze ich die spezifischen Beginn/Ende-Felder für ihn auf NULL. Hat er einen spezifischen Teilnahmezeitraum, wird der eingetragen. Aus Sicht eines ER-Modells könnte man sich das vorstellen als eine m:n-Beziehungsklasse "UserTermin" mit einer Subklasse "UserTerminAbweichend" - oder so - die beide auf die gleiche DB-Tabelle gemappt werden.
Der Termin hat Beginn und Ende - das ist der Rahmenzeitraum. Bei einer mehrtägigen Konferenz wäre es vielleicht auch sinnvoll, mehrere Termine einzutragen - es ist oft so, dass da die Zeitfenster pro Tag unterschiedlich sind. Und jeder Teilnehmer kann während des vollen Zeitraums teilnehmen, dann hat er NULL in den UserTermin-Feldern stehen, oder in einem eigenen Zeitraum. Die Application prüft, dass der eigene Zeitraum innerhalb des Rahmenzeitraums liegt, und meldet bei Änderungen des Rahmenzeitraums ggf. an die User, dass der eigene Zeitraum auf einmal nicht mehr passt.
Beginn und Ende am Termin ganz wegzulassen und nur am User zu speichern, halte ich nicht für zielführend. Dann hast Du (a) Redundanzen und (b) keine Möglichkeit, den Rahmenzeitraum des Termins zu speichern. Du brauchst meiner Meinung nach beides. Es ist ja kein individueller Terminkalender, von dem wir hier reden, sondern ein Terminplanungssytem für mehrere Leute, deren Termine miteinander vernetzt sein sollen.
Rolf
sumpsi - posui - clusi