Foreign Key Collection MySQL?

2 Antworten

Nein.

Wenn Du mehrere Datensätze in Tabelle B mittels ForeignKey einem anderen Datensatz in Tabelle A zuordnen willst, musst Du umdenken.

Entweder die Datensätze in Tabelle B bekommen alle einen ForeignKey auf den einen Datensatz in Tabelle A, oder Du erstellst eine Zwischen-Tabelle, die zwei ForeignKeys auf Tabelle A und B hat.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler
RANGObro 
Fragesteller
 20.12.2021, 17:05

Das Problem ist, dass 2 Tabellen (oder mehr) aufeinander verweisen und beide auf eine unbestimmte Zahl verweisen können. Ich hab unter der anderen Antwort etwas ausführlicher geschrieben wie ich das meine. Für den Server habe ich models geschrieben die ich nochmal ändern muss und bisher habe ich die Verweise beim Löschen oder Ertsellen von Einträgen einfach im Code gemacht / geändert aber es ist deutlich angenehmer mit Foreign Keys, vor allem wenn man die Struktur ändern will, aber trotzdem danke

0
Palladin007  20.12.2021, 17:07
@RANGObro

Dann brauchst Du die Zwischen-Tabelle, die ForeignKeys auf Beides hat.

0
RANGObro 
Fragesteller
 20.12.2021, 17:08
@Palladin007

Wie mache ich die denn? Wie gesagt ist bei beiden Tabellen eine unbestimmte Anzahl an Keys notwendig

0
Palladin007  20.12.2021, 17:09
@RANGObro

Indem Du eine Tabelle erstellst, die zwei ForeignKeys hat O.o
Ist nichts magisches, einziger Unterschied zu jeder anderen Tabelle: Beide ForeignKeys sollten als PrimaryKey zusammengefasst werden.

0

verstehe die frage so nicht, kannst du ein beispiel machen was deine verwirrung angeht.

ein foreign key ist eine primäre ID aus einer anderen tabelle

und klar kann in datensätzen natürlich mehrer gleiche kombinations von fremd ids vorkommen . wenn es um eindeutigkeit geht ist das was anderes . dazu brauch es meist dann doch eine eigene id oder ein zusammengesetzer schlüssel wenn es die struktur erlaubt .

beispiel

A       B       C
F_ID_A  F_ID_B  Datum

praktisch wird natürlich auch wenn es mehrere gleiche kombis mit F_ID_A F_ID_B gibt zu unterschieldichen Datum , entsprechend alle einträge gelöscht wenn z.b. eine ID_B gelöscht wird .

RANGObro 
Fragesteller
 20.12.2021, 16:58

Sagen wir wir haben eine Benutzer Tabelle und eine Gruppen Tabelle. Benutzer können Gruppen bilden und Benutzer können hinzugefügt / entfernt werden. 1 Nutzer kann in mehreren Gruppen gleichzeitig sein. In meiner Situation ist es das selbe nur dass auf Benutzer / Gruppen bezogen noch andere Tabellen existieren, die sind aber fürs Beispiel nicht wichtig. Ich möchte in der Gruppen Tabelle im Prinzip Folgendes haben

+-- id --+- owner -+- users -+- someOtherColumn -+
+--------+---------+---------+-------------------+
|   1    |    2    | [2,3,5] |   someCoolValue   |
+--------+---------+---------+-------------------+
|   2    |    4    | [4,6,2] |   someCoolValue   |
+--------+---------+---------+-------------------+

Users soll alle Benutzer speichern die Mitglied in der Gruppe sind und das eben möglichst als foreign key. Wird ein Benutzer gelöscht soll er aus dem Eintrag entfernt werden. Ich hoffe so ist es verständlicher

0