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

Relationel databasedesign (MySQL)

før jeg besvarer dine spørgsmål... jeg synes, at user_id ikke skal være i tabellen Talenter... hovedideen her er, at "for 1 talent har du mange brugere, og for en bruger har du flere talenter".. så forholdet skal være NxN, skal du bruge en mellemliggende tabel

se:mange til mange

nu

hvis du vil gøre noget dynamisk (tilføje eller fjerne subtalenter), kan du bruge et rekursivt forhold. Det er en tabel, der er relateret til sig selv

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

se:rekursive associationer

hvis du bruger modellen før, kan det være et mareridt at lave forespørgsler, fordi dine bordtalenter nu er et TRÆ, der kan indeholde flere niveauer.. du vil måske begrænse dig selv til et bestemt antal niveauer, som du ønsker i din Talents tabel, to er vel nok.. på den måde bliver dine forespørgsler nemmere

når du bruger rekursive relationer... bør fremmednøglen tillade null, fordi talenterne på øverste niveau ikke har et parent_id...

Held og lykke! :)

EDIT: ok .. jeg har lavet modellen .. for at forklare den bedre

Rediger Anden model (i form af et juletræ =D ) Bemærk at forholdet mellem Model &Talent og Skuespiller &Talent er en 1x1 relation, der er forskellige måder at gøre det på (det samme link i kommentarerne )

for at finde ud af, om brugeren har talenter.. slutte sig til de tre tabeller på forespørgslen =)håber dette hjælper



  1. tilføj kolonne til mysql-tabellen, hvis den ikke eksisterer

  2. Sådan sammenkædes strenge i SQLite

  3. Hvordan kan jeg starte PostgreSQL på Windows?

  4. Sådan gemmer du tom værdi som et heltalsfelt