Access2007: Beziehungsproblem
minicrispie
- datenbank
Hallo,
hab immer noch ein Datenbank-Problem.
Ich hab eine Tabelle, in der alle User gespeichert sind. Diese Tabelle ist mit ein paar anderen Tabellen verknüpft. Diese Tabellen sollten aber nicht relevat sein.
Nun hab ich also in der Tabelle "T_Person" zwei Kategorien:
-normale User
-Übungsleiter
Die Übungsleiter können die normalen User unterrichten. Dies tun sie in Übungsgruppen.
Nun habe ich also die Tabelle "T_Uebungsgruppe", in der Informationen zu der Gruppe stehen. Eine solche Übungsgruppe hat _einen_ Übungsleiter und x normale User.
Nun hatte ich folgendes zur Lösung gedacht:
Aufbau der Tabellen mit dem relevanten Daten:
+-------------------------------------------------------+
| T_Person |
+--------------+----------------------------------------+
| ID | Autowert |
| Vorname | Text[30] |
| Name | Text[30] |
| Übungsgruppe | Integer(soll als Fremdschlüssel dienen |
+--------------+----------------------------------------+
+-----------------------------------------+
| T_Uebungsgruppe |
+---------------+-------------------------+
| ID | Autowert |
| Uebungsleiter | Integer(Fremdschlüssel) |
| Bemerkung | Text[100] |
+---------------+-------------------------+
Damit man nun das Problem lösen kann, dachte ich, die ID einer Person in "T_Uebungsgruppe" zu speichern. Diese Person ist also der Übungsleiter.
Beziehung: T_Person.ID = T_Uebungsgruppe.Uebungsleiter
Damit nun x User in der Gruppe sein können, wollte ich nun die ID der Übungsgruppe im Datensatz der User festhalten.
Beziehung: T_Uebungsgruppe.ID = T_Person.Übungsgruppe
Im Kopf hat diese Version auch funktioniert. :)
Nun wollte ich den Entwurf umsetzen. Also Tabellen anlegen und nun Beziehungen setzen. Zuerst habe ich die Beziehung "T_Person.ID = T_Uebungsgruppe.Uebungsleiter" gesetzt. Danach wollte ich die andere( "T_Uebungsgruppe.ID = T_Person.Übungsgruppe" ) setzen. Genau an dieser Stelle sagte mir Access, das eine solche Beziehung schon vorhanden sei!?
Das kann aber nicht sein, da eine solche Beziehung nicht existiert.
Access Fehlermeldung:
"Eine solche Beziehung besteht bereits"
Dann erhalte ich die Möglichkeit, abzubrechen oder eben diese angeblich existierende Beziehung zu bearbeiten. Nun drückte ich auch bearbeiten und ich kam zu einem Dialog, der mir die Beziehung anzeigte, die ich _vorher_( "T_Person.ID = T_Uebungsgruppe.Uebungsleiter" ) gesetzt hatte.
Wie kann denn das sein?
Ist das ein Bug von Access? Bzw. ist meine Vorgehensweite falsch?
Wie würdet ihr das Problem mit der Übungsgruppe lösen?
Ein zweiter Ansatz war, das ich die ID des Übungsleiters in der Tabelle speichere und dazu noch 20 Felder für mögliche User mache. Nur die gefällt mir ehrlich gesagt nicht.
Habt ihr ne Idee?
MfG. Christoph Ludwig
@@minicrispie:
nuqneH
Qapla'
Hallo,
Nun hatte ich folgendes zur Lösung gedacht:
Aufbau der Tabellen mit dem relevanten Daten:
+-------------------------------------------------------+
| T_Person |
+--------------+----------------------------------------+
| ID | Autowert |
| Vorname | Text[30] |
| Name | Text[30] |
| Übungsgruppe | Integer(soll als Fremdschlüssel dienen |
+--------------+----------------------------------------++-----------------------------------------+
| T_Uebungsgruppe |
+---------------+-------------------------+
| ID | Autowert |
| Uebungsleiter | Integer(Fremdschlüssel) |
| Bemerkung | Text[100] |
+---------------+-------------------------+Nun wollte ich den Entwurf umsetzen. Also Tabellen anlegen und nun Beziehungen setzen. Zuerst habe ich die Beziehung "T_Person.ID = T_Uebungsgruppe.Uebungsleiter" gesetzt. Danach wollte ich die andere( "T_Uebungsgruppe.ID = T_Person.Übungsgruppe" ) setzen. Genau an dieser Stelle sagte mir Access, das eine solche Beziehung schon vorhanden sei!?
Du musst die Tabelle T_Uebungsgruppe im Beziehungen-Fenster zwei Mal einblenden:
Rechtsklick-Tabelle anzeigen, T_Uebungsgruppe wählen.
Dann kannst Du die Beziehungen setzen:
+---------------+
|T_Uebungsgruppe|
+---------------+
|ID |-+
|Uebungsleiter | |
|Bemerkung | |
+---------------+ |
| +---------------+
| |T_Person |
| +---------------+
| |ID |-+
| |Vorname | |
| |Name | |
+-|Uebungsgruppe | |
+---------------+ |
| +-----------------+
| |T_Uebungsgruppe_1|
| +-----------------+
| |ID |
+-|Uebungsleiter |
|Bemerkung |
+-----------------+
Aber warum nutzt Du für so etwas nicht den Nachschlageassistenten im Tabellenentwurf? Im Entwurf von T_Person im Feld Uebungsgruppe den Nachschlageassistenten (Felddatentyp) starten und die Werte aus Tabelle T_Uebungsgruppe entnehmen lassen. Dann im Entwurf von T_Uebungsgruppe im Feld Uebungsleiter den Nachschlageassistenten starten und die Werte aus Tabelle T_Person entnehmen lassen. Dabei werden die Beziehungen gleich mit erstellt und man hat gleich Dropdown-Select-Boxen mit den möglichen Daten bei der Dateneingabe in den Tabellen.
Die Beziehungen können dann im Beziehungen-Fenster weiterbearbeitet werden.
viele Grüße
Axel
Hallo,
Du musst die Tabelle T_Uebungsgruppe im Beziehungen-Fenster zwei Mal einblenden:
Rechtsklick-Tabelle anzeigen, T_Uebungsgruppe wählen.
Dann kannst Du die Beziehungen setzen:
wow ... so einfach ist die Lösung!? .. na toll :)
danke!
MfG. Christoph Ludwig