Для мускуля:
Стоит ли делать в БД составной внешний ключ из двух колонок?
Без контекста задачи на этот вопрос нельзя ответить
В каких случаях составной ключ лучше/хуже набора из двух одинарных?
Если связка уникальна ИЛИ поиск будет выполняться строго по двум ключам - можно сэкономить и поставить составной.
Правильно ли я понимаю, что внешний ключ должен быть помечен как: 1. key 2. как unique
UNIQUE пишется, когда он уникальный. Можно вместо KEY писать INDEX
Как принято задавать имена для ключей?
Вопрос из серии соглашений на проекте. Стандартов множество, единого всем нравящегося не существует. Например в моем текущем проекте принято соглашение: ключ именуется так же как и колонка, если ключ составной - то конкатенация через символ подчеркивания. Например userId, или userId_categoryId
Какие есть нюансы с внешними ключами для нецелочисленных типов?
Используйте только в случае, если БД не нагружена. Целостность через констрейнты стоит реально дорого.