Mysql
 sql >> Database >  >> RDS >> Mysql

Progettazione di database relazionali (MySQL)

prima di rispondere alle tue domande... penso che user_id non dovrebbe essere nella tabella Talents... l'idea principale qui è che "per 1 talento hai molti utenti, e per un utente hai più talenti".. quindi la relazione dovrebbe essere NxN, avrai bisogno di una tabella intermedia

vedi:molti a molti

ora

se vuoi fare qualcosa di dinamico (aggiungere o rimuovere subtalent) puoi usare una relazione ricorsiva. Questa è una tabella che è correlata a se stessa

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

vedere:associazioni ricorsive

se stavi utilizzando il modello prima, fare query potrebbe essere un incubo, perché la tua tabella Talents ora è un ALBERO che può contenere più livelli.. potresti voler limitarti a un certo numero di livelli che desideri nel tuo Tavolo del talento credo che due siano sufficienti.. in questo modo le tue domande saranno più facili

quando si utilizzano relazioni ricorsive... la chiave esterna dovrebbe consentire valori nulli perché i talenti di livello più alto non avranno un parent_id...

In bocca al lupo! :)

MODIFICA: ok.. ho creato il modello.. per spiegarlo meglio

Modifica Secondo modello (a forma di albero di Natale =D ) Nota che la relazione tra Model &Talent e Actor &Talent è una relazione 1x1, ci sono diversi modi per farlo (lo stesso link nei commenti )

per scoprire se l'utente ha talenti.. unisciti alle tre tabelle sulla query =)spero che questo aiuti