Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Projekt relacyjnej bazy danych (MySQL)

zanim odpowiem na twoje pytania... myślę, że user_id nie powinno być w tabeli Talenty... główną ideą jest to, że "na 1 talent masz wielu użytkowników, a na jednego użytkownika masz wiele talentów".. więc relacja powinno być NxN, będziesz potrzebować tabeli pośredniej

zobacz:wiele do wielu

teraz

jeśli chcesz zrobić coś dynamicznego (dodać lub usunąć subtalenty), możesz użyć relacji rekurencyjnej. To jest tabela, która jest ze sobą powiązana

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

zobacz:powiązania rekurencyjne

jeśli korzystasz z modelu wcześniej, tworzenie zapytań może być koszmarem, ponieważ Twoja tabela Talenty jest teraz DRZEWEM, które może zawierać wiele poziomów. Możesz ograniczyć się do określonej liczby poziomów, które chcesz w swoim Tabela talentów, myślę, że dwie wystarczy.. w ten sposób Twoje zapytania będą łatwiejsze

podczas używania relacji rekurencyjnych... klucz obcy powinien zezwalać na wartości null, ponieważ talenty najwyższego poziomu nie będą miały rodzica_id...

Powodzenia! :)

EDYTUJ: ok... stworzyłem model... żeby lepiej to wyjaśnić

Edytuj Drugi model (w kształcie choinki =D ) Zauważ, że relacja między Modelem i Talentem a Aktorem i Talentem jest relacją 1x1, można to zrobić na różne sposoby (ten sam link w komentarzach )

aby sprawdzić, czy użytkownik ma talenty.. dołącz do trzech tabel w zapytaniu =)mam nadzieję, że to pomoże



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Liczba kolumn nie odpowiada liczbie wartości w wierszu 1

  2. Jak uzyskać SQLAlchemy, aby poprawnie wstawić wielokropek Unicode do tabeli mySQL?

  3. WYBIERANIE z wieloma warunkami WHERE w tej samej kolumnie

  4. Obcinanie danych:zbyt długie dane dla kolumny „logo” w wierszu 1

  5. int(11) vs. int(cokolwiek innego)