Você está criando uma chave composta (ou composta) tornando este primário:
("COURSE_ID", "ACCREDITATION_BODY_ID", "DATE_OBTAINED")
e então, você tenta fazer
ACCREDITATION_BODY_ID
uma chave estrangeira, referenciando a mesma coluna na mesma tabela. Não sei o que você está tentando alcançar, mas de qualquer forma, não a maneira correta de fazer. Na minha opinião, O motivo é:
ACCREDITATION_BODY_ID
deve ser uma chave primária para ser referenciada como uma chave estrangeira, mas esse não é o caso aqui. A restrição da sua tabela é uma chave composta , e você precisa fazer referência a todos as colunas na instrução de chave estrangeira. (me corrija se eu estiver errado) Tente fazer referência a todas as colunas de chave composta na instrução de chave estrangeira. Isso pode resolver seu problema.
A propósito, referenciar uma chave primária como uma chave estrangeira na mesma tabela não fazia sentido para mim (talvez esteja faltando alguma coisa, mas ainda assim ..). Eu consideraria mudar o design.