Jeśli chodzi Ci jedynie o klucz obcy, to engine nie ma nic do rzeczy. Natomiast jeśli chodzi o prawdziwe relacje, to tylko InnoDB
added:
Klucz obcy, w sytuacji gdy nie istnieją transakcje w pełnym tego słowa znaczeniu to pojęcie abstrakcyjne. To zwykłe pole w bazie, a jedynie Ty, w swoim projekcie, określasz że ta akurat liczba to id z innej tabeli. Dla SBD to nie jest żaden klucz obcy.
edit: Upewniłem się, więc wszystkie "chyba" usunięte