Hallo Forumbesucher :-)
Ich mach mir grade Gedanken, um eine Verwaltung von Dokumenten und Formularen. Es geht um eine Oberfläche, die wir unseren Kunden zur Verfügung stellen möchten. Darin liegen Prüfungsberichte und/oder Prüfungsveraussetzungen/-Bedingungen als DOC oder PDF Dateien.
Es gibt nun viele Kunden, die sich am System anmelden können. Das regelt schonmal, dass man weiß, WER ein Dokument ansieht / herunterlädt.
Was wir errichen wollen ist folgendes: Ein Dokument kann und wird einigen Kunden zur Ansicht vorgelegt. Nun möchten wir gerne den Kunden anzeigen, ob er sich die Dokumente schon angesehen hat. Da ein Dokument von mehreren Kunden (als Gruppenrecht) angesehen wird, kann ich nicht ein Flag für gesehen/ungesehen setzen. Irgendwie muss eine Verknüpfung her zwischen Dokument und Kunde...
Soviel zur Theorie.
Praxis:
Ansatz 1: Ich dachte, ich nehm mir einfach noch eine kleine Datenbanktabelle in der ich die Kunden mit den Dokumenten verknüpfe und als Eigenschaft noch eine Readtime mit hinzupacke. Nachteil: Diese Tabelle wird schon bald eine riesige Menge an Datensätzen enthalten, was die Sache denke ich mal sehr verlangsamen wird.
Ansatz 2: Ich überlege, eine neue Tabelle zu machen, in der ich für jeden Kunden einen Datensatz schreibe (Kunde, ReadFlags). ReadFlags wird ein textfeld. Jede Stelle des Textfeldes dient als Flag (1|0) für das Dokument, mit der ID der Stelle im Textfeld.
Beispiel: DokumentID=5, Dokument gelesen? => SELECT SUBSTRING(ReadFlags, 5, 1) ...;
Nachteil hier ist sicherlich, dass mir irgendwann die Länge des Textfeldes (ca. 65000) zum Verhängnis wird und ich dann auch eine schrecklich langsame Abfrage erhalten werde (vermutlich). Zudem hab ich keine Info mehr über die ReadTime des Kunden.
Meine Frage nun:
Gibt es für dieses Problem schon einen praxistauglichen Entwurf, der nicht in die Knie geht, wenn viele Datensätze vorliegen. Wünschenswert wäre das Datum, also die ReadTime, aber es muss nicht unbedingt enthalten sein.
Danke für Eure Vorschläge.
Viele Grüße
Stefan
Beide Ansätze