MySQL Zwischentablle mit doppeltem Fremdschlüssel

Vorbild

Neuer Benutzer
Beiträge
2
Guten Tag,

ich arbeite aktuell mit der MySQL Workbench und einer Google Cloud SQL Datenbank.

Es handelt sich um eine Messaging Datenbank und soll es die Tabelle User, sowie die Usersubscription(abo) geben. User haben als PK eine userID. Ein User kann einen anderen User abonnieren, wobei mein Problem enstanden ist.
Die Usersubsciptiontabelle ist eine m:n Tabelle und ich identifiziere den abonnierten, sowie auch den abonnierenden durch die userID. Normalerweiße sollte die Abotabelle ja als Fremdschlüssel die userID übernehmen, aber ich brauche für beide die userID zum identifizieren.

Hier noch ein Ausschnitt des ERM's und des Schemas. Aktuell gibt es bei mir die subscriberID und die subscribedID, was beide die userID von der Usertabelle sind.

Wqb6nRs.jpg


rWiW7ug.jpg

Ich hoffe ihr könnt mir helfen, wie ich dieses Problem in meiner Datenbank am besten lösen kann.
Mfg David
 
Werbung:
Werbung:
Ich hoffe ihr könnt mir helfen, wie ich dieses Problem in meiner Datenbank am besten lösen kann.

Welches Problem? 2 Fremdschlüssel in einer Tabelle auf die selbe Tabelle?

Code:
test=# create table t_user(id int primary key, name text);
CREATE TABLE
test=*# create table abo(u1 int, u2 int, primary key(u1, u2));
CREATE TABLE
test=*# create unique index idx_abo on abo(least(u1,u2),greatest(u1,u2));
CREATE INDEX
test=*#

Der Index sorgt noch dafür, daß ein Userpaar (x,y) nicht auch noch als (y,x) gespeichert werden kann. Das ginge aber auch mit einer Check-Condition wie folgt:

Code:
test=*# create table abo2(u1 int, u2 int, primary key(u1, u2), check(u1<u2));
CREATE TABLE
 
Zurück
Oben