phpMyAdmin
 sql >> база данни >  >> Database Tools >> phpMyAdmin

Как да задам външен ключ, който зависи от връзката на другите две таблици?

Не използвам phpmyadmin, но бих започнал с

  • уникално ограничение за subjects.name,
  • уникално ограничение за двойката {teachers.name, teachers.subject_id},
  • уникално ограничение за {events.venue, events.subject_id, events.teacher_id},
  • уникално ограничение за двойката {teachers.id, teachers.subject_id}.

Първите три са свързани с идентичността; последният ви позволява да се насочите към {teachers.id, teachers.subject_id} с ограничение за външен ключ.

В общия случай имената на хората не са уникални. Значи можете има двама учители с едно и също име, които преподават един и същ предмет. Начинът, по който можете да подходите към този вид проблем, зависи от приложението.

След това външни ключове

  • от teachers.subject_id към subjects.id и
  • от {events.teacher_id, events.subject_id} до {teachers.id, teachers.subject_id}

Това поне ще ви даде грешка, ако се опитате да вмъкнете в събития учител с грешен предмет.

Трябва да използвате двигателя INNODB за налагане на ограничения за външния ключ. Други машини ще ги анализират, но ще ги игнорират.

Клаузите FOREIGN KEY и REFERENCES се поддържат от механизма InnoDBstorage, който имплементира ADD [CONSTRAINT [символ]] FOREIGN KEY[име_индекс] (...) REFERENCES ... (...). Вижте раздел 14.6.6, „Ограничения на ВЪНШИЯ КЛЮЧ InnoDBand“. За други машини за съхранение клаузите се анализират, но се игнорират.




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. промяна на съпоставянето по подразбиране в phpmyadmin

  2. Тази таблица не съдържа уникална колона. Функциите за редактиране на мрежа, квадратче за отметка, Редактиране, Копиране и Изтриване не са налични

  3. Създадох няколко съхранени процедури в phpmyadmin, как да ги извикам с помощта на sql заявка?

  4. Автоматично увеличение в phpmyadmin

  5. преглед на текущия ред на масата