sql >> Databáze >  >> RDS >> Mysql

Návrh relační databáze (MySQL)

než odpovím na vaše otázky... myslím, že user_id by nemělo být v tabulce Talentů... hlavní myšlenkou zde je, že "na 1 talent máte mnoho uživatelů a na jednoho uživatele máte více talentů".. takže vztah by měl být NxN, budete potřebovat zprostředkující tabulku

viz:mnoho k mnoha

nyní

pokud chcete udělat něco dynamického (přidat nebo odebrat subtalenty), můžete použít rekurzivní vztah. To je tabulka, která souvisí sama se sebou

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

viz :rekurzivní asociace

pokud jste model používali dříve, mohla by být noční můra dotazovat se, protože váš stůl Talents je nyní STROM, který může obsahovat více úrovní. Možná se budete chtít omezit na určitý počet úrovní, které chcete ve svém Talentova tabulka, myslím, stačí dvě... tak budou vaše dotazy jednodušší

při použití rekurzivních vztahů... cizí klíč by měl povolit hodnoty null, protože talenty nejvyšší úrovně nebudou mít parent_id...

Hodně štěstí! :)

UPRAVIT: ok.. vytvořil jsem model.. abych to lépe vysvětlil

Upravit Druhý model (ve tvaru vánočního stromku =D ) Všimněte si, že vztah mezi Model &Talent a Herec &Talent je vztah 1x1, existují různé způsoby, jak toho dosáhnout (stejný odkaz v komentářích )

zjistit, zda má uživatel talent.. připojte se ke třem tabulkám v dotazu =)doufám, že to pomůže



  1. Potíže s Apache v Xampp po několika instalacích Apache

  2. Vytvoření tabulky MYSQL s výchozí hodnotou (výrazem) do sloupce

  3. Požadavek MySQL na kombinování a vyhledávání ve 2 tabulkách

  4. Nelze zrušit tabulku:Omezení cizího klíče se nezdaří