sql >> Database >  >> RDS >> Mysql

Relationeel databaseontwerp (MySQL)

voordat ik je vragen beantwoord... ik denk dat user_id niet in de Talenten-tabel zou moeten staan... het belangrijkste idee hier is dat "voor 1 talent heb je veel gebruikers, en voor één gebruiker heb je meerdere talenten".. dus de relatie moet NxN zijn, je hebt een tussentafel nodig

zie:veel tot veel

nu

als je iets dynamisch wilt doen (subtalenten toevoegen of verwijderen) kun je een recursieve relatie gebruiken. Dat is een tabel die aan zichzelf gerelateerd is

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

zie:recursieve associaties

als je het model eerder gebruikt, kan het een nachtmerrie zijn om query's te maken, omdat je tabel Talenten nu een BOOM is die meerdere niveaus kan bevatten.. misschien wil je jezelf beperken tot een bepaald aantal niveaus dat je in je Talent's table, ik denk dat twee genoeg is.. op die manier zullen je vragen gemakkelijker zijn

bij het gebruik van recursieve relaties... moet de externe sleutel nulls toestaan ​​omdat de toptalenten geen parent_id hebben...

Veel geluk! :)

BEWERKEN: ok.. ik heb het model gemaakt.. om het beter uit te leggen

Bewerken Tweede model (in de vorm van een kerstboom =D ) Merk op dat de relatie tussen Model &Talent en Actor &Talent een 1x1 relatie is, daar zijn verschillende manieren voor (dezelfde link in de opmerkingen )

om te zien of de gebruiker talenten heeft.. sluit je aan bij de drie tabellen op de vraag =)hoop dat dit helpt



  1. Geen resultaten geretourneerd door de Query-fout in PostgreSQL

  2. Database Performance Tuning voor MariaDB

  3. SQL Server Error 109:Er zijn meer kolommen in de INSERT-instructie dan de waarden die zijn opgegeven in de VALUES-clausule

  4. SQL-injectie werkt niet correct