Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Frage zu Datenbankdesign

Begonnen von Clovermann, Juli 14, 2011, 15:29:22

⏪ vorheriges - nächstes ⏩

Clovermann

Hallo zusammen,

ich möchte gerne eure Meinung zu dem folgenden "Problem" einholen. Ich baue gerade eine Trainingsverwaltung auf in der alle möglichen Trainings aufgenommen werden sollen.
Nun bin ich an der Überlegung wie ich das Design der DB aufbauen soll.

Es steht eigentlich auf dem Papier schon soweit alles bis auf eine Detail. Die Trainer wollte ich eigentlich in eine gesonderte Tabelle auslagern das sind so ca. 15 Personen.
Es kommt aber auch vor, dass die Trainer selbst von einem anderen Trainer trainiert werden. Das bedeutet in diesem Fall, dass ich die Trainer einmal in der Mitglieder Tabelle habe und
zusätzlich in der Trainer Tabelle. Hier sehe ich die Gefahr, dass ich bei einer Aktualisierung vergesse die betroffenen Daten in allen Tabellen zu ändern.

Aus diesem Grund spiele ich mit dem gedanken die Trainer auch in der Mitglieder-Tabelle aufzunehmen und dann über eine weitere Tabelle die Position festzulegen.
Dann habe ich aber in den Trainingsdetails einmal eine Verknüpfung von der Mitarbeiter-Tabelle auf das Mitglied (welches trainiert wird) und eine Verküpfung auf den Trainer. bzw. wird der Trainer noch mal in eine weitere Tabelle ausgelagert, damit mehrere Trainer ein Mitglied unterrichten können. bisher waren dies zwar max. zwei Trainer aber man weiß ja nie ob es doch mal mehr werden. Die Eingabe Maske würde ich dann so anlegen, dass die Datenherkunft über eine Abfrage gezogen wird mit der Einschränkung es werden nur Trainer gezeigt.

Da die Datenbank nur von den Trainern genutzt wird diese aber unterschiedliche Rechte bekommen sollen bin ich wieder bei dem Punkt, dass ich doch die Trainer in einer gesonderten
Tabelle aufnehme und dann dort auch gleich die Anmeldedaten (Username, Passwort, Rechte-Gruppe) hinterlege denn diese Daten habe ja nicht wirklich was in der Mitglieder Tabelle
verloren. Bei dieser Variante habe ich auch ein Problem weniger wenn der Trainer den Trainer Status verliert kann ich Ihn inaktiv schalten er bleibt aber weiterhin als Mitglied erhalten und die
alten Trainings gehen nicht verloren nur weil er den Trainerstatus verloren hat. Historienverwaltung.

Meiner Meinung nach haben beide Möglichkeiten Vor aber auch Nachteile. Was meint Ihr dazu?

Bin über jede Idee dankbar!

Viele Grüße
Cloverman



database

#1
Hallo,

im Prinzip gibnt es nur eine einzige gangbare Variante - ein normalisiertes Datenmodell - und dieses schließt die Möglichkeit, die Trainer in einer eigenen und einer zweiten Tabelle zu führen, automatisch aus.

Die Regelung bzw. Handhabung dass Trainer auch Trainer unterrichten können darf an der Normalisierung des Datenmodells nichts ändern!
Die benutzerfreundliche Gestaltung der Datenerfassung hat auf Formularebene zu passieren.

ZitatDann habe ich aber in den Trainingsdetails einmal eine Verknüpfung von der Mitarbeiter-Tabelle auf das Mitglied ...
Hier gilt es durch geeignete Tabellen (Zwischentabellen) diese m:n - Beziehungen aufzulösen.
Möglich wäre eine Tabelle 'tblTraining' mit 'Training_ID', 'TrainingDatumStart', 'TrainingDatumEnde', 'TrainingThema', ... zum Erstellen einer definierten Trainingsveranstaltung.
In 3 weiteren Tabellen ...
'tblTrainerTraining' befinden sich dann die Fremdschlüssel zu 'tblTraining' und 'tblTrainer' also 'Training_ID' und 'Trainer_ID' ---> welche(r) Trainer unterrichten bei welchem Training?
in einer Tabelle 'tblTrainingMitglieder' analog die die Fremdschlüssel zu 'tblTraining' und 'tblMitglieder' ---> welche Mitglieder nehmen an welchem Training teil?
sowie in einer Tabelle 'tblTrainingTR' (Benamsung zur Unterscheidung) 'tblTrainer' ---> 'Training_ID' und die 'Trainer_ID ---> welche Trainer werden bei welchem Training unterrichtet?
... werden dann die Informationen zu den Trainingsteilnehmern erfaßt.

Damit ist festellbar welche Trainer ein Training abhalten, welche Mitglieder und welche Trainer als Teilnehmer anwesend waren.
Die Anzahl der unterrichtenden Trainer ist damit ebensowenig eingeschränkt wie die mögliche Teilnehmeranzahl und die Herkunft der Trainingsteilnehmer (Mitgleider und Trainer).

Zitat...diese aber unterschiedliche Rechte bekommen sollen...
Entsprechende Informationen zu Rechten kannst du in der Trainertabelle hinterlegen.

ZitatHistorienverwaltung
Passt so - mit einem entsprechenden Statusfeld in der Trainertabelle ist das durchaus zufriedenstellend zu lösen.

ZitatMeiner Meinung nach haben beide Möglichkeiten Vor aber auch Nachteile ...
Nach dem die Frage nach der mehrfachen Informationsspeicherung geklärt ist - gibts keine Nachteile mehr. ;) ;D

HTH

Clovermann

Hi,

danke für die Antwort.

Ich muss nun mal schauen wie ich das in ein vernüftiges Design packe. Da ich wahrscheinlich noch viel mehr Tabellen benötigen werde wenn ich die Trainer und die Mitglieder in einer Tabelle lasse. Irgendwo muss ich ja auch die Trainer spezifischen Daten ablegen. Ohne, dass ich die Mitglieder Tabelle zu sehr aufblohre und dann einiges an Speicherplatz verschwende.

Mir ist das auch noch nicht ganz klar wie Du das mit der Historien-Verwaltung gemeint hast. Wenn ich in der Mitglieder-Tabelle ein Feld habe Trainer Ja / Nein und dies dann dort ändere,
dann kann ich Doch nicht mehr auf die Trainings von der jeweiligen Person zurückgreifen. bzw. sehe ich dann, dass ein Mitglied ohne Trainer-Status ein Training durchgeführt hat. Dann müsste ich wieder in der Mitgliedertabelle ein weiteres Feld anlegen wann der Trainer kein Trainer mehr ist.

Die gemeinsamen Felder in der Trainer und Mitglieder Tabelle sind eigentlich "nur" der Name, die E-Mail-Adresse und das Team (optional) den Rest benötige ich nicht in der Trainer Tabelle oder in der Mitgliedertabelle macht es dann Sinn alles in eine Tabelle  zupacken oder nicht doch den Bruch der Normalisierung hinzunehmen?

Noch ein Hinweis zur DB selbst hier werden im Nachgang die Einzel-Trainings nur dokumentiert. Es geht nicht um die Organistion von dem Training.

Viele Grüße
Clovermann