Uma prática comum de mercado é tirar o máximo de restrições do SGBD e deixar nos programas aplicativos. Exemplo: uma pessoa deve pertencer a um departamento, um departamento deve ser gerenciado por uma pessoa e possuir no mínimo duas pessoas no departamento. O processo via programação, permitiria que um departamento fosse criado junto com o cadastro de duas pessoas (uma delas na função de gerente do departamento) OU com a alteração de duas pessoas cadastradas para o mesmo fim. Assim, cada departamento já nasceria com um gerente e outra pessoa associadas.
Ou seja, o programa gerencia a integridade referencial.
A principal vantagem é que as restrições no SGBD o tornam mais pesado / lento. A garantia das regras de negócio via programação, trariam mais eficiência ao SGBD.
É claro que o objetivo do curso é ensinar como implementar as restrições no SGBD, onde você criaria as tabelas de departamentos e colaboradores, com todas as restrições. Seria interessante colocar como se resolve quem cadastra primeiro o departamento ou o colaborador, visto que cada colaborador deve pertencer a um departamento e cada departamento deve ser gerenciado por um colaborador. Seria importante mostrar a operacionalidade do modelo, na implantação do modelo físico, visto que, uma vez criadas as bases, tanto a tabela de pessoas (colaboradores) quanto a de departamentos se iniciam vazias e o povoamento com essas referências cruzadas (que estão nas regras de negócio apresentadas) ajudariam a compreensão do dia-a-dia dos DBA em sua implementação no MySQL, inclusve com a análise do custo operacional das restrições impostas.