Mysql
 sql >> Base de données >  >> RDS >> Mysql

Conception de bases de données relationnelles (MySQL)

avant de répondre à vos questions... je pense que user_id ne devrait pas être dans la table Talents... l'idée principale ici est que "pour 1 talent vous avez plusieurs utilisateurs, et pour un utilisateur vous avez plusieurs talents".. donc la relation devrait être NxN, vous aurez besoin d'une table intermédiaire

voir :plusieurs à plusieurs

maintenant

si vous voulez faire quelque chose de dynamique (ajouter ou supprimer des sous-talents), vous pouvez utiliser une relation récursive. C'est une table qui est liée à elle-même

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

voir :associations récursives

si vous utilisiez le modèle auparavant, cela pourrait être un cauchemar de faire des requêtes, car votre tableau Talents est maintenant un ARBRE qui peut contenir plusieurs niveaux.. vous voudrez peut-être vous limiter à un certain nombre de niveaux que vous souhaitez dans votre La table des talents, je suppose que deux suffisent.. de cette façon, vos requêtes seront plus faciles

lors de l'utilisation de relations récursives ... la clé étrangère doit autoriser les valeurs nulles car les talents de haut niveau n'auront pas de parent_id ...

Bonne chance! :)

MODIF : ok.. j'ai créé le modèle.. pour mieux l'expliquer

Modifier Deuxième modèle (en forme d'arbre de Noël =D ) Notez que la relation entre Modèle &Talent et Acteur &Talent est une relation 1x1, il y a différentes façons de le faire (le même lien dans les commentaires )

pour savoir si l'utilisateur a des talents .. rejoignez les trois tables sur la requête =) j'espère que cela vous aidera