zanim odpowiem na twoje pytania... myślę, że user_id nie powinno być w tabeli Talenty... główną ideą jest to, że "na 1 talent masz wielu użytkowników, a na jednego użytkownika masz wiele talentów".. więc relacja powinno być NxN, będziesz potrzebować tabeli pośredniej
zobacz:wiele do wielu
teraz
jeśli chcesz zrobić coś dynamicznego (dodać lub usunąć subtalenty), możesz użyć relacji rekurencyjnej. To jest tabela, która jest ze sobą powiązana
TABLE TALENT
-------------
id PK
label
parent_id PK FK (a foreign key to table Talent)
zobacz:powiązania rekurencyjne
jeśli korzystasz z modelu wcześniej, tworzenie zapytań może być koszmarem, ponieważ Twoja tabela Talenty jest teraz DRZEWEM, które może zawierać wiele poziomów. Możesz ograniczyć się do określonej liczby poziomów, które chcesz w swoim Tabela talentów, myślę, że dwie wystarczy.. w ten sposób Twoje zapytania będą łatwiejsze
podczas używania relacji rekurencyjnych... klucz obcy powinien zezwalać na wartości null, ponieważ talenty najwyższego poziomu nie będą miały rodzica_id...
Powodzenia! :)
EDYTUJ: ok... stworzyłem model... żeby lepiej to wyjaśnić
Edytuj Drugi model (w kształcie choinki =D ) Zauważ, że relacja między Modelem i Talentem a Aktorem i Talentem jest relacją 1x1, można to zrobić na różne sposoby (ten sam link w komentarzach )
aby sprawdzić, czy użytkownik ma talenty.. dołącz do trzech tabel w zapytaniu =)mam nadzieję, że to pomoże