Hallo zusammen,
ich bin Access-Einsteigerin und versuche mich gerade an einer Datenbank für ein chemisches Praktikum an unserem Institut. Diese soll die den Studenten zugeteilten analytischen Aufgaben verwalten und bei der Auswertung ihrer Leistung helfen.
Die Grundidee ist folgende: Jeder Student bekommt eine bestimmte Anzahl Analysen, die er untersuchen muss. Jede Analyse besteht aus bestimmten Substanzen. Zu bestimmen sind die enthaltenen Ionen. Die Analysen werden ,,generiert" durch Zusammengeben von mehreren Substanzmischungen. So bekommt Stundent X z.B. bei Analyse 1 eine Mischung aus Q001 und E001. Dabei enthalten die Mischungen Q001 und E001 zum Teil unterschiedliche, teilweise auch gleiche Ionen, z.B.: Q001: K+, Ca2+, PO43-, Cl- und E001: K+, SO42-.
Idealerweise sollte die Datenbank hinterher (u.a.) so funktionieren: Die Betreuer des Praktikums geben die Matrikelnummer des Studenten sowie die Mischungen ein, die sie für eine Analyse verwendet haben. Umgekehrt soll durch eine Abfrage hinterher pro Matrikel angezeigt werden, welche Ionen in welcher Analyse enthalten sind.
Mein Problem ist nun: Ich habe u.a. eine Tabelle ,,Mischungen" angelegt mit den Namen der Mischungen (z.B. eben Q001 oder E001) als Primärschlüssel und je einer Spalte pro möglichem Ion als ,,Ja/Nein"-Feld (denn das jeweilige Ion kann ja nur enthalten sein –,,ja"- oder nicht –,,nein"). Ich habe jetzt mehrere Varianten ausprobiert, die Zuordnung der Ionen (einer Analyse) zu den Matrikeln vorzunehmen, habe aber immer dasselbe Problem: In der Abfrage würde ich ja gern den Matrikel mit den angehakten ,,Ja/Nein"-Feldern für die Ionen pro Analyse sehen und nicht pro Mischung. Da ja aber eine Analyse aus mehreren Mischungen besteht, müsste ich die ,,Ja/Nein"-Felder kumulieren. Dafür habe ich bisher aber noch keine Lösung gefunden. Geht so etwas grundsätzlich überhaupt? Oder muss ich für die Ionen eine andere Art Feld wählen bzw. muss das Datenbank-Design ganz anders aussehen?
Ich hoffe, ich konnte mein Problem einigermaßen verständlich schildern und jemand hat einen Geistesblitz, wie es sich lösen lässt.
Vorab schon vielen Dank!
Beste Grüße
Hallo,
ZitatIch habe u.a. eine Tabelle ,,Mischungen" angelegt mit den Namen der Mischungen (z.B. eben Q001 oder E001) als Primärschlüssel und je einer Spalte pro möglichem Ion als ,,Ja/Nein"-Feld (denn das jeweilige Ion kann ja nur enthalten sein –,,ja"- oder nicht –,,nein").
Du kannst davon ausgehen, dass solche Ja/Nein Felder als Kennzeichnung wenn etwas vorhanden ist für eine Datenbank völlig ungeeignet ist. Hier fehlen vermutlich noch 2 Tabellen.
Eine Tabelle für die Ionen (alle) und eine weitere Tabelle zur Erfassung der für eine Mischung vorhanden Ionen. Das ist eine klassische n:m Beziehung.
Welche Namen haben denn jetzt z.B. diese Ja/Nein Felder ?
Zu den Ja/Nein Fleder siehe mal hier:
http://allenbrowne.com/casu-23.html
Student => Mischung
Sports => alle Ionen
StudentSports => Zutreffende Ionen
Kannst Du mal ein Bild des Beziehungsfensters posten ?
Hallo Strubbely,
zwar bin ich mir nicht sicher, ob du diese Info je lesen wirst, aber sei's drum.
Als Mensch, der CTA gelernt hat, habe ich eine kleine Applikation gebaut.
Mein Datenmodell geht etwas weiter: eine Mischung besteht aus Substanzen, die wiederum aus Ionen. Also gibt es in meiner DB Tabellen für Ionen, Substanzen, Mischungen und schließlich Aufgaben.
Ziel war es, in einer Aufgabe alle Ionen aufzulisten, die beteiligt sind. Dazu gibt es eine Sub, die im Formular "Aufgaben" über einen entspr. Button aufgerufen werden kann.
Die Formulare sind alle nur "quick and dirty", ohne Anspruch auf Schönheit oder so.
Der Kern meiner "Lösung" ist die kleine Routine, die im Modul1 gespeichert ist. Sie schreibt einfach mit einer "SELECT DISTINCT"-Abfrage die beteiligten Ionen in eine Aufgaben-Ionen-Tabelle. So ist der Normalisierung genüge getan.
Das Layout der Formulare ist - wie gesagt - stark verbesserungs- und auch erweiterungs-fähig. Das Ganze soll ja auch nur als Idee dienen - Erweiterungen musst du dann selbst machen (z. B. Substanz-(Warn-)Hinweis durchreichen, also beim Erstellen einer Mischung sichtbar machen.
Übrigens habe ich bei den Ionen eine Schreibweise gewählt, die mit der Tastatur einfach ist.
Komischerweise funktioniert meine "Kumulations-Sub" nicht richtig, wenn ich sie im After-Update-Event des Feldes Mischung im Unterformular Mischungen des Formulars Aufgaben aufrufe. Liegt vielleicht daran, dass die Datensätze noch nicht gespeichert sind. Deshalb habe ich den Button "Ionen bestimmen" eingebaut.
Vielleicht hat ja jemand Lust, an meiner primitiven "Basis-Lösung" weiter zu basteln.
Übrigens muss man einen Verweis auf "ActiveX-Data-Objects" setzen.