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

Kompleksowa Unia MYSQL

Jeśli pożądaną hierarchią jest program -> temat -> nić -> rok -> jednostka -> wydarzenie_naukowe, należy dostosować strukturę tabeli, aby to odzwierciedlić. W szczególności temat powinien mieć związek klucza obcego między tematem a programem i potrzebujesz dodatkowego poziomu na rok. Posiadanie klucza obcego między motywem a programem pozwala uniknąć łączenia krzyżowego. Połączenia krzyżowe mają zwyczaj gryzienia cię i generalnie należy ich unikać.

Jeśli spojrzysz na to dbfiddle zobaczysz, że dokonałem tych zmian. Nazwałem rok strandyear, aby uniknąć używania zastrzeżonego słowa, ale intencja powinna być jasna. Teraz złączenia stają się złączeniami wewnętrznymi (zamiast złączeniami lewostronnymi), aby pobierać wartości opisu z wyższych poziomów w drzewie, a najniższy poziom (learning_events) automatycznie zawiera tylko wartości pasujące do strand, year i unit, nie z innego powodu niż że sama struktura to gwarantuje, poprzez prosty wybieg, że każdy poziom ma klucz obcy do poziomu powyżej.

Zauważ, że klucze obce skutecznie łączą łańcuchy. Nie potrzebujesz na przykład konkretnego klucza obcego między learning_event a strand, ponieważ klucze pośredniczące w łańcuchu gwarantują relację.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Yii2 wyświetla dane dla każdej pętli

  2. SQL — Wybierz wiersze z dwóch różnych tabel

  3. Wstrzyknięcia SQL w ADOdb i ogólne bezpieczeństwo witryny

  4. Jaki jest najlepszy sposób na wstawienie wielu wierszy do bazy danych mysql za pomocą php?

  5. Tworzenie tabel tymczasowych w procedurze składowanej MySQL