Liebes Forum,
ich bin mir nicht sicher, ob meine Frage in dieser Allgemeinheit Sinn macht, aber ich probiere es mal.
Ich habe eine Datenbank, in der ich die Leistungen von Doktoranden in ganz verschiedenen Bereichen erfasse und sie bekommen Punkte dafür. Für eine Zusammenfassung trage ich die Punktwerte dann in einer Abfrage zusammen, die auf 15 Abfragen beruht, die wiederum auf einer Abfrage beruhen, die z.T. wieder auf Abfragen beruhen. Die Informationen müssen aus vielen Tabellen zusammengetragen und dabei z.T. noch umformatiert oder berechnet werden.
Durch die vielen Abfragen komme ich immer wieder auf den "Mehr Datenbanken können nicht geöffnet werden" Fehler und habe daher überlegt, ob es eine grundlegend andere Strategie gibt, die Daten zusammenzutragen. Ich hatte schon an ein Sammeln in VBA-Arrays gedacht, aber generell heißt es ja, dass man eher zu Abfragen/SQL greifen, weil das viel schneller geht.
Die Daten liegen in einem Backend, die Abfragen im Frontend. Version: Access 2016.
Vielleicht hat ja jemand spontan eine Idee für einen Denkansatz.
Vielen Dank und viele Grüße
Jürgen
Hallo,
bei der Schilderung denke ich eher an ein suboptimalses Datenmodell.
Sind die Normaliserungsregeln eingehalten ?
Wie ist denn der Aufbau der DB ?
Mit Deiner Schilderung sollten eigentlich 3 Tabellen reichen.
- Doktoranden
- Bereiche
- Punkteerfassung
ZitatDie Informationen müssen aus vielen Tabellen zusammengetragen ... werden
Warum das denn?
Wenn man gleiche Informationen in das gleiche Feld der gleichen Tabelle legt (1. Normalform), wäre man mit dem Zusammentragen schon fertig und könnte gleich mit dem Verarbeiten beginnen, was dann auch einfacher sein dürfte.
Welchen Denkansatz würdest Du daraus entwickeln?
Liebes Forum,
Schonmal vielen Dank für die Reaktionen.
Zur näheren Erläuterung:
Es gibt eine Tabelle "Personen" mit allen persönlichen Daten zu den einzelnen Doktoranden.
Dann gibt es mehrere Tabellen, die jeweils einen Bereich abbilden, in denen Leistungen erbracht werden können, z.B.
- Kurse (mit allen Angaben zu Kursen, die wir anbieten)
- Publikationen
- Preise
- Betreute Arbeiten
und einige mehr
Zwischen Personen und den Leistungstabellen gibt es in den meisten Fällen eine Verknüpfungstabelle, z.b.
v_Personen_Kurs
weil ja auch immer mehrere Doktoranden der gleichen Leistung zugeordnet werden können. In diesen stehen dann auch die Punkte, die sie für eine Leistung bekommen. Es gibt auch den Fall, dass nur die Leistung (z.B. Teilnahme an einem Kurs) erfasst werden muss, es aber keine Punkte gibt.
Ich muss bei einem Punktewert auch immer die Verknüpfung zur entsprechenden Leistung haben, um die Punkte zu belegen.
Die Leistungstabellen werden auch für Übersichten ohne Punkte benutzt, z.B. alle Publikationen, alle Publikationen mit internationalen Autoren, alle angebotenen Kurse, alle Dozenten der Kurse (wobei ein Kurs mehr als 1 Dozenten haben kann), usw.
Ich hoffe, das ist so verständlich.
Viele Grüße
Jürgen
Hallo,
hier gibt es erhabliches Verbesserungspotential.
die Leistungstabellen sind in einer Tabelle zusammenzufassn, mit einem Kennzeichen für die Leistung.
Dann klappt das auch mit der oben vorgeschlagenen n:m Beziehung.
Es gibt dann für die Auswertung nur noch
eine Verknüpfungstabelle in der die Punkte stehen.
Diese eine Verknüpfungstabelle wird in einer Abfrage über die LeistungsID und DoktorantID gruppiert.
Zitat(wobei ein Kurs mehr als 1 Dozenten haben kann),
Auch das ist eine lassische n:m Beziehung mit 3 Tabellen.
- Dozent
- Kurs
- DozentKurs (FS zu Dozent, FS zu Kurs).
Du solltest Dich mit dem Aufbau relationaler Datenbanken beschäftigen.
Bei korrektem Aufbau der DB wird die Anzahl der Tabellen drastisch verkleinert.
Lieber Klaus,
vielen Dank für die Antwort. Ich habe einen Moment gebraucht, bis ich es verstanden habe. Es geht darum, die Tabellen mit den Veknüpfungen zwischen den Doktoranden und den Leistungen in einer Tabelle zusammenzufassen, nicht die Tabellen mit den Informationen zu den Leistungen selber. Richtig?
Das wäre eine Möglichkeit. Ich brauche die bestehenden Verknüpfungstabellen vermutlich trotzdem, weil da noch andere Informationen drin stehen (z.B. Anmeldedatum für einen Kurs, Gebühren, Kommentare), aber die reinen Punkte könnte man in eine gemeinsame Tabelle auslagern.
Eine entsprechende Umstrukturierung wäre ein größerer zeitlicher Aufwand, aber würde mein Problem lösen.
Zitat(wobei ein Kurs mehr als 1 Dozenten haben kann),
Auch das ist eine lassische n:m Beziehung mit 3 Tabellen.
- Dozent
- Kurs
- DozentKurs (FS zu Dozent, FS zu Kurs).
Das mache ich schon so und das war auch der Denkansatz für die anderen Verknüpfungen.
Vielen Dank nochmal und
Gruß
Jürgen