Dankenbank mit variablen Rows

Hallo zusammen,

ich bin noch relativ neu, was Datenbanken angeht. Ich schreibe momentan ein Programm für eine kleine Gruppe von Hobbysportlern. Das Programm dient der Vereinfachung der Verwaltung. Da bin ich jetzt auf ein Problem gestoßen, welches ich nicht lösen kann:
Und zwar bräuchte ich eine Anwesenheitstabelle. Diese müsste Tage hinzufügen können und dann zu jedem Tag sämtliche Mitglieder mit einem X für da, und einer 0 für nicht da beinhalten. (ich würde das mit dem Typ bit machen! Also mit 0 und 1).
Ich habe mir das jetzt so vorgestellt, dass die Tage an denen wir uns treffen alles Einträge sind. Dafür müsste die Tabelle aber spalten haben, die den Mitgliedern einer anderen Tabelle entsprechen. Diese widerum können sich aber ändern. Es können neue dazu kommen, alte gelöscht werden, aber bei der Löschung müssen die Daten trotzdem in der neuen Tabelle enthalten bleiben. Kann man so etwas irgendwie realisieren? Und wenn ja wie?

Danke schon einem im voraus und
viele Grüße,
David

Hallo David,
wie wäre es wenn Du Deine Tabelle aufbaust mit den Feldern:
Datum
NameID (aus Mitgliederliste)

Dann wäre die Tabellenstruktur klar definiert.
Aus Deiner Mitgliederliste könntest Du dann alle Personen nehmen und prüfen ob zu dem Datum ein Eintrag vorhanden ist und die nicht vorhandenen in Deiner Ausgabeliste ausgeben.
Die Ausgabe Deiner Tabelle muss ja nicht der Tabellenstruktur entsprechen.
Du könntest auch eine Tabelle Treffen machen, in der Du das Datum eingibst. So könntest Du auch ermitteln, an welchen Treffen KEINER da war …

Gruß
Klaus

Hallo Klaus,

an und für sich ist das eine gute Idee, ich denke ich setze das auch so um, wenn ich nichts anderes finde.
Nur ich wollte halt vermeiden, dass ich dann im extremfall 20 Einträge mit dem gleichen Datum habe. Das kann ich natürlich in den View’s hinterher ändern, nur ist da der Verwaltungsauffand entsprechend höher. Aber ich will mich nicht beklagen, denn das ist schon mal ein Denkanstoss auf den ich nicht gekommen bin, also danke schon einmal.

Gruß,
David

Moin, David,

Das Programm dient der Vereinfachung der Verwaltung.

die wird nur dann erzielt, wenn auch die Daten einfach sind.

Und zwar bräuchte ich eine Anwesenheitstabelle. Diese müsste
Tage hinzufügen können und dann zu jedem Tag sämtliche
Mitglieder mit einem X für da, und einer 0 für nicht da
beinhalten.

Tabellen können nichts hinzufügen, und einfacher wäre es wohl, nur die Anwesenheit zu speichern oder nur die Abwesenheit, aber nicht beides.

Ich habe mir das jetzt so vorgestellt, dass die Tage an denen
wir uns treffen alles Einträge sind.

Nicht Einträge, sondern eine eigene Tabelle:

**Treffen** (<u>Treffen</u>, Datum, Ort, Zweck, ...)

Dafür müsste die Tabelle aber spalten haben, die den
Mitgliedern einer anderen Tabelle entsprechen.

Ein Dialog sollte es ermöglichen, dass zu einem solchen Treffen für die Mitglieder festgehalten wird, ob sie teilgenommen haben. Das macht man mit einem Dropdown, das alle erlaubten Namen zeigt und nach Auswahl in einer Tabelle

**Teilnahme** (<u>Teilnahme</u>, FS\_Treffen, FS\_Mitglied, ...)

die Teilnahme des Mitglieds am Treffen dokumentiert. FS_ sind Fremdschlüssel, die auf den passenden Satz in der jeweiligen Tabelle zeigen.

Die dritte Tabelle führt die Mitglieder:

**Mitglied** (<u>Mitglied</u>, Name, Vorname, Beitritt, ...)

Die Tabelle Teilnahme kann dann nach Belieben ausgewertet werden.

Dieses Aufdröseln in Tabellen heißt Modellierung. Erste Idee dahinter: Wenn es gelingt, den Tabellen klare Namen zu verpassen, ist ziemlich sicher, dass es sich um Basisinfos handelt. Nur mit einfachen Infos lassen sich komplexe Dinge darstellen :wink:

Gruß Ralf

Hallo Ralf,

vielen Dank erst einmal für deine Hilfe. Das was du sagst klingt logisch, ich werde das gleich mal so umsetzen. So wie ich mir das vorgestellt habe, scheint es ja nicht möglich zu sein.
Warum ich das so machen wollte, liegt einfach daran, dass ich hinterher einen Ausdruck erstellen muss, indem eine Tabelle ist wo die Spalten die Mitgliedernamen und die Zeilen die Treffen (Datum) eingetragen sind. Ansonsten meckert der Verein wieder :smile:.
Aber mit deiner Lösung ist dies ja auch möglich.

Danke noch einmal.
Gruß,
David

Moin, David,

…die Spalten die Mitgliedernamen und die Zeilen die Treffen…

Aber mit deiner Lösung ist dies ja auch möglich.

nicht mit Standard-SQL, eventuell liefert Dein DBMS die Möglichkeit, derartige Reports zu erstellen. Andernfalls muss so eine Liste programmiert werden.

Gruß Ralf

Mahlzeit Ralf,

also eigentlich hattest du vorher schon Recht. Ich bin noch zu neu in dem Thema, um das zu verstehen! Aber man sollte beim Erstellen von Datenbanken ja auch einiges Achten. Ich lese momentan mal ein Buch, und ich muss ehrlich sagen, was ich da versucht habe zu Veranstalten ist kompletter Schwachsinn. Danke für deine Antworten, ich betrachte vieles jetzt schon anders (Bücher machens möglich).

Vll. sollte man sich manchmal vorher Ordentlich in eine Sache einarbeiten :wink:!

Viele Grüße,
David