Я не знаю из первых рук ответ о том, «почему» комитет SQL разработал его так, как они это сделали, но я бы предположил, что разработчики SQL хотели только один первичный ключ в обычной таблице. Все остальные столбцы в структуре базы данных 3NF функционально зависят от этого ключа и только от этого ключа.
Вы можете получить ключи из функциональных зависимостей, а также вы можете получить функциональные зависимости из суперключей. Но только если они были объявлены правильно, логически симметрично.
Если бы вы могли объявить оба ключа и FD, то была бы возможность объявить таблицу в логическом конфликте с самим собой, что нарушило бы нормализацию.
Лучше, если в языке предусмотрен только один механизм, чтобы избежать двусмысленных объявлений.