Я могу ошибаться, но я думаю, что для этого нужно создать "родительскую" таблицу для A и B, которая имеет A_B_parent.id (primary_key), а затем A и B имеют внешние ключи на своих идентификатор родительской таблицы. Тогда C также может иметь внешний ключ для родительской таблицы.
Это, очевидно, оказывается действительно сложным, поэтому лучшим решением может быть просто программно применить ограничение, а не использовать внешние ключи, а затем добавить комментарий к таблице.