sql >> Databasteknik >  >> RDS >> Mysql

Relationell databasdesign (MySQL)

innan jag svarar på dina frågor... jag tycker att user_id inte ska finnas i talangtabellen... huvudtanken här är att "för 1 talang har du många användare, och för en användare har du flera talang".. så relationen ska vara NxN, du behöver en mellanliggande tabell

se:många till många

nu

om du vill göra något dynamiskt (lägga till eller ta bort subtalanger) kan du använda ett rekursivt förhållande. Det är en tabell som är relaterad till sig själv

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

se:rekursiva associationer

om du använder modellen tidigare kan det vara en mardröm att göra frågor, eftersom dina bordstalanger nu är ett TRÄD som kan innehålla flera nivåer.. du kanske vill begränsa dig till ett visst antal nivåer som du vill ha i din Talent's table, jag antar att två är tillräckligt... på så sätt blir dina frågor lättare

när du använder rekursiva relationer... bör den främmande nyckeln tillåta nollvärden eftersom talangerna på toppnivåerna inte kommer att ha ett parent_id...

Lycka till! :)

EDIT: ok .. jag har skapat modellen .. för att förklara den bättre

Redigera Andra modellen (i form av en julgran =D ) Observera att relationen mellan Model &Talent och Actor &Talent är en 1x1-relation, det finns olika sätt att göra det (samma länk i kommentarerna )

för att ta reda på om användaren har talanger.. gå med i de tre tabellerna på frågan =)hoppas detta hjälper



  1. Parsar tnsnames.ora i Visual C# 2008

  2. Jag får hela tiden den här mysql-felkoden #1089

  3. javax.naming.NoInitialContextException med mysql DataSource

  4. c3p0 hänger i väntan. Tillgänglig med viloläge