sql >> Base de Datos >  >> RDS >> Mysql

Diseño de bases de datos relacionales (MySQL)

antes de responder a sus preguntas... creo que user_id no debería estar en la tabla de talentos... la idea principal aquí es que "para 1 talento tiene muchos usuarios, y para un usuario tiene múltiples talentos". Entonces, la relación debe ser NxN, necesitará una tabla intermedia

consulte:muchos a muchos

ahora

si desea hacer algo dinámico (agregar o eliminar subtalentos), puede usar una relación recursiva. Esa es una tabla que está relacionada consigo misma

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

ver:asociaciones recursivas

si está usando el modelo anteriormente, podría ser una pesadilla hacer consultas, porque su tabla Talentos ahora es un ÁRBOL que puede contener múltiples niveles. Mesa de talentos supongo que con dos es suficiente... así tus consultas serán más fáciles

cuando se usan relaciones recursivas... la clave foránea debe permitir valores nulos porque los talentos de niveles superiores no tendrán un parent_id...

¡Buena suerte! :)

EDITAR: ok.. he creado el modelo.. para explicarlo mejor

Editar Segundo modelo (en forma de árbol de Navidad =D) Tenga en cuenta que la relación entre Modelo y Talento y Actor y Talento es una relación 1x1, hay diferentes formas de hacerlo (el mismo enlace en los comentarios )

para averiguar si el usuario tiene talento... únase a las tres tablas en la consulta =) espero que esto ayude