Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Relationales Datenbankdesign (MySQL)

Bevor ich Ihre Fragen beantworte ... ich denke, dass user_id nicht in der Talenttabelle stehen sollte ... die Hauptidee hier ist, dass "für 1 Talent Sie viele Benutzer haben und für einen Benutzer mehrere Talente".. also die Beziehung sollte NxN sein, benötigen Sie eine Zwischentabelle

siehe:viele zu vielen

jetzt

Wenn Sie etwas Dynamisches tun möchten (Subtalente hinzufügen oder entfernen), können Sie eine rekursive Beziehung verwenden. Das ist eine Tabelle, die mit sich selbst in Beziehung steht

TABLE TALENT
-------------
id  PK
label
parent_id PK FK (a foreign key to table Talent)

siehe:rekursive Assoziationen

Wenn Sie das Modell zuvor verwendet haben, könnte es ein Albtraum sein, Abfragen durchzuführen, da Ihre Talenttabelle jetzt ein BAUM ist, der mehrere Ebenen enthalten kann. Möglicherweise möchten Sie sich auf eine bestimmte Anzahl von Ebenen beschränken, die Sie in Ihrer möchten Talenttabelle, ich schätze, zwei reichen aus. Auf diese Weise werden Ihre Abfragen einfacher sein

wenn rekursive Beziehungen verwendet werden ... sollte der Fremdschlüssel Nullen zulassen, da die Talente der obersten Ebene keine parent_id haben ...

Viel Glück! :)

BEARBEITEN: ok.. ich habe das Modell erstellt.. um es besser zu erklären

Bearbeiten Zweites Modell (in Form eines Weihnachtsbaums =D ) Beachten Sie, dass die Beziehung zwischen Model &Talent und Actor &Talent eine 1x1-Beziehung ist, es gibt verschiedene Möglichkeiten, dies zu tun (der gleiche Link zu den Kommentaren )

um herauszufinden, ob der Benutzer Talente hat. Verbinden Sie die drei Tabellen mit der Abfrage =) Ich hoffe, das hilft