Dieses Thema hatte ich vor etwa einem Jahr bereits zu Access gestellt, im Zuge einer Datenbankumstellung ändern sich die Voraussetzungen aber wesentlich (u.a. wegen Einschränkungen die vorher durch Access bedingt waren), so das ich dies hier neu aufrolle.
Grundsätzlich geht es um eine Ressourcenplanung, sehr vereinfacht ausgedrückt haben wir drei Tabellen: "Termine" (z.B. IdTermin/IdTerminart/Anfang/Ende), "Ressourcen" (IdRessource,Bezeichnung... ; z.B. Personen, Räume etc.) und eine Tabelle die Termine und Ressourcen verknüpft (IdTermin/IdRessource). Jede Tabelle hat noch einen Versionsstempel um schneller auf Änderungen zu prüfen.
Nun soll während ein Termin eingetragen oder verändert wird, kein anderer Benutzer in den Zeitraum des Termins Änderungen (Neuanlage/Bearbeitung/Löschen) machen können, gleichzeitig soll eine komplette Tabellensperrung (falls möglich) vermieden werden.
Im wesentlichen soll das so aussehen:
1. (Bei bestehenden Termin) Daten einlesen [DB-Zugriff]
2. Termin erfassen/bearbeiten
3. Prüfung auf Änderung oder Konflikt [DB-Zugriff]
4. Bei Änderung/Konflikt: Entscheiden was mit Änderung/Konflikt geschehen soll (Änderungen einladen und mit 2 weiterführen, Dennoch speichern...).
5. Termin schreiben (nochmal auf Änderung prüfen, ggf. zurück zu 4.) [DB-Zugriff]
Sofern wir es vermeiden können, wollen wir auf komplette Tabellensperren verzichten (und wenn müssen wir diese, der Schnittstelle wegen, auf eine Datensatzsperre in eine Hilfstabelle oder ähnliches beschränken). Nur wie kann man z.B. das Einfügen eines Datensatzes in einen Zeitraum unterbinden?
Diese Problematik wird noch etwas erschwert dadurch, das die Konfliktprüfung "weich" ist. Sprich: Eine Ressource darf in Zukunft ggf. mehrfach verplant werden, aber nur mit Rückfrage. Dann muss ich noch ein Mechanismus finden, der sicherstellt das im Konfliktfall der Anwender entscheiden kann die Konflikte zu ignorieren, und beim anschließenden Schreiben muss dann natürlich auch sichergestellt sein, das keine neuen Konflikte aufgetreten sind (oder die Frage wiederholt wird).
Grundsätzlich geht es um eine Ressourcenplanung, sehr vereinfacht ausgedrückt haben wir drei Tabellen: "Termine" (z.B. IdTermin/IdTerminart/Anfang/Ende), "Ressourcen" (IdRessource,Bezeichnung... ; z.B. Personen, Räume etc.) und eine Tabelle die Termine und Ressourcen verknüpft (IdTermin/IdRessource). Jede Tabelle hat noch einen Versionsstempel um schneller auf Änderungen zu prüfen.
Nun soll während ein Termin eingetragen oder verändert wird, kein anderer Benutzer in den Zeitraum des Termins Änderungen (Neuanlage/Bearbeitung/Löschen) machen können, gleichzeitig soll eine komplette Tabellensperrung (falls möglich) vermieden werden.
Im wesentlichen soll das so aussehen:
1. (Bei bestehenden Termin) Daten einlesen [DB-Zugriff]
2. Termin erfassen/bearbeiten
3. Prüfung auf Änderung oder Konflikt [DB-Zugriff]
4. Bei Änderung/Konflikt: Entscheiden was mit Änderung/Konflikt geschehen soll (Änderungen einladen und mit 2 weiterführen, Dennoch speichern...).
5. Termin schreiben (nochmal auf Änderung prüfen, ggf. zurück zu 4.) [DB-Zugriff]
Sofern wir es vermeiden können, wollen wir auf komplette Tabellensperren verzichten (und wenn müssen wir diese, der Schnittstelle wegen, auf eine Datensatzsperre in eine Hilfstabelle oder ähnliches beschränken). Nur wie kann man z.B. das Einfügen eines Datensatzes in einen Zeitraum unterbinden?
Diese Problematik wird noch etwas erschwert dadurch, das die Konfliktprüfung "weich" ist. Sprich: Eine Ressource darf in Zukunft ggf. mehrfach verplant werden, aber nur mit Rückfrage. Dann muss ich noch ein Mechanismus finden, der sicherstellt das im Konfliktfall der Anwender entscheiden kann die Konflikte zu ignorieren, und beim anschließenden Schreiben muss dann natürlich auch sichergestellt sein, das keine neuen Konflikte aufgetreten sind (oder die Frage wiederholt wird).
Comment