MS Access, Beziehungen eingeben?
Ich arbeite Aktuell an einer kleinen Datenbank für ein Projekt in MS Access. Jedoch funktioniert das Erstellen von Beziehungen nicht.
Ich hab mich schon durch mehrere Artikel auf Google durch gegraben und versucht, alle Hinweise umzusetzen, aber es funktioniert bei mir immer noch nicht.
Nun zu meinem Problem:
Ich habe 4 Tabellen, alle sind noch leer, damit es keine doppelten Werte gibt. Nun wollte ich Beziehungen herstellen (Gilt für 1:1 und 1:n Beziehungen), aber ich bekomme laufend die Fehlermeldung:
"Es wurde kein eindeutiger Index für das in Beziehung stehende Feld der Primärtabelle angegeben". Wenn ich "Mit referenzieller Integrität" ausschalte, dann funktioniert die Verbindung. Für die Funktion benötige ich diese Bedingung jedoch.
1 Antwort
Uff, da muss ich tief im Gedächtnis kramen, aus meinen Versuchen selbst die erste Datenbank für unsere Firma zu basteln:
Jede Tabelle muss einen (oder mehrere) eindeutige Primärschlüssel haben. Das können auch zusammengesetzte Felder sein.
Verknüpft man Tabellen über Beziehungen, muss es natürlich eindeutig sein, welcher Datensatz mit Datensatz verknüpft ist. Dazu muss man die Primärschlüssel der einen Tabelle als normales Feld in der anderen anlegen oder in auf ein Feld mit gleichen Wert beziehen (wenn es eine andere Bezeichnung in der Tabelle hat)
Teilweise sind mehrere Beziehungen zwischen zwei Tabellen erforderlich, damit der Bezug eindeutig ist (bei uns kommt immer der Mandant dazu, weil wir davon zwei haben, mit unabhängigen Primärschlüsseln bei den einzelnen Datensätzen).
Die referenzielle Integrität kann auch durch eine falsche Beziehungsart gestört sein, siehe inner join - outer join: https://www.linux-tips-and-tricks.de/de/datenbanken/10-sql-joins-einfach-erklaert oder https://de.wikipedia.org/wiki/Join_(SQL).
Dazu können Beziehungen nicht funktionieren, wo es zweistellige Relationen gibt. Da ist eine Zwischentabelle erforderlich, um n:m - Beziehungen abzubilden.
(Beispiel: Ärzte haben mehrere Patienten und Patienten haben mehrere Ärzte).
Dazu fällt mir als Fehlerquelle noch eine ungenügende Normalisierung ein, die strukturelle Fehler erzeugt.
http://www.datenbanken-verstehen.de/datenmodellierung/normalisierung/
Ich muss allerdings gestehen, dass ich in den letzten acht Jahren nur noch Abfragen geschrieben habe und ansonsten eingekaufte Datenbanken verwendet habe, daher würde ich meine Ausführungen nur als Anregung und nicht als Weisheit letzter Schluss verstehen.^^