phpMyAdmin
 sql >> Baza danych >  >> Database Tools >> phpMyAdmin

Jak ustawić klucz obcy zależny od relacji dwóch pozostałych tabel?

Nie używam phpmyadmina, ale zacznę od

  • niepowtarzalne ograniczenie dotyczące nazwy subject.name,
  • unikalne ograniczenie w parze {teachers.name, teacher.subject_id},
  • unikalne ograniczenie dotyczące {events.venue, events.subject_id, events.teacher_id},
  • unikalne ograniczenie w parze {teachers.id, teacher.subject_id}.

Pierwsze trzy dotyczą tożsamości; ostatni pozwala na kierowanie {teachers.id, teacher.subject_id} z ograniczeniem klucza obcego.

W ogólnym przypadku imiona osób nie są niepowtarzalne. Więc możesz mieć dwóch nauczycieli o tym samym nazwisku, którzy uczą tego samego przedmiotu. To, jak możesz podejść do tego rodzaju problemu, zależy od aplikacji.

Następnie klucze obce

  • od teacher.subject_id do objects.id i
  • od {events.teacher_id, events.subject_id} do {teachers.id, teacher.subject_id}

To przynajmniej da ci błąd, jeśli spróbujesz wstawić do wydarzeń nauczyciela z niewłaściwym przedmiotem.

Musisz użyć silnika INNODB aby wymusić ograniczenia klucza obcego. Inne silniki będą je analizować, ale zignoruj ​​je.

Klauzule FOREIGN KEY i REFERENCES są obsługiwane przez silnik InnoDBstorage, który implementuje ADD [CONSTRAINT [symbol]] FOREIGN KEY[nazwa_indeksu] (...) REFERENCES... (...). Patrz Sekcja 14.6.6, „Ograniczenia dotyczące klucza obcego InnoDBand”. W przypadku innych silników pamięci masowej klauzule są analizowane, ale ignorowane.




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Wybierz identyfikator zalogowanego użytkownika za pomocą PDO

  2. Jak aktywować mysqli za pomocą wampserver?

  3. Jak usunąć unikalny klucz z konkretnego pola tabeli mysql?

  4. Usuń dane, używając ciągu php z adresu URL

  5. phpmyadmin nie otrzymano danych do importu błąd, jak to naprawić?