migration-reference · implemented
Migration 10 — course_id em affiliations
Adiciona o curso obrigatório ao vínculo de discente sem criar ciclo de FK.
Contrato
course_id é bigint nullable, FK para courses.id com ON DELETE RESTRICT. AffiliationValidationRules exige o campo para AffiliationType::Student e o proíbe para os demais tipos. O curso escolhido deve pertencer ao mesmo campus do vínculo e estar ativo na atribuição ou reativação. Uma desativação posterior do curso não apaga o vínculo histórico nem bloqueia alterações que não mudem sua associação. Cada curso adicional da mesma conta exige outro vínculo de discente. A Migration 04 não contém essa FK porque courses precisa ser criada antes; não há CHECK de domínio nem índice secundário explícito nesta etapa.
Checklist
- Adicionar coluna
course_ide adiar índice secundário para análise das consultas reais. - Restringir a exclusão física do curso referenciado.
- Aplicar obrigatoriedade condicional e coerência de campus no Model, sem
CHECKde domínio. - Atualizar Model
Affiliatione relação comCourse. - Atualizar factory com vínculo discente por curso.
- Testar discente sem curso, servidor com curso indevido e dois cursos para a mesma pessoa.
- Testar escopo: curso e vínculo devem pertencer ao mesmo campus.
- Testar migrate/rollback na ordem completa.