Предположим, у меня есть два понятия: Учитель и класс. Они хорошо сочетаются с двумя таблицами базы данных, преподавателями и классами. Чтобы выразить утверждение «каждый класс имеет Учителя», я добавляю внешний ключ в таблицу классов, указывающую на таблицу Учителей. Теперь, если я попытаюсь удалить строку «Учителя», которая используется в классе, я получаю хорошую ошибку, говоря «Не могу этого», что я и хочу.Как изменить зависимости ограничения внешнего ключа?
Пока все хорошо. Но что, если я хотел бы распространить это поведение на учеников? То есть когда я пытаюсь удалить ученика, который является частью класса, я хочу, чтобы механизм базы данных кричал на меня и сказал: «Не могу этого сделать».
Я мог бы имитировать то, что хочу, создав 30 внешних ключей в классах: Pupil_1_ID, Pupil_2_ID, ... Pupil_30_ID. Но то, что я на самом деле, делает это для произвольного числа учеников.
Как я могу это достичь?
Стандартное отношение внешних ключей должно это сделать. Если вы хотите другое поведение, то возможности «каскада» позволят другие вещи (например, удаление класса, у которого есть ученики, которые удалены). –
НЕ создавайте столбцы для каждого ученика. Как бы вы ожидали разумного определения того, является ли конкретный ученик в классе? –