1. Все зависит от организации проекта, если например у Вас база данных шардированная - то внешнее ключи как бы Вы не сделаете, или например если Вы хотите избежать проверок на целостность данных при каждом изменении данных, а проводить их самостоятельно раз в сутки. В общем внешние ключи крайне желательны, но бывают ситуации когда стоит их не использовать
2. Не консистентными даными
3. В пункте 1 привел некоторые примеры