Как спроектировать таблицу с первичным ключом и многозначным атрибутом?

Я интересуюсь дизайном базы данных и сейчас читаю соответствующую литературу. Через книгу я столкнулся со странным примером, который заставляет меня чувствовать себя неуверенно. Есть отношение

В этой таблице у нас есть составной первичный ключ (StudentID, Activity). Но ActivityFee частично зависит от ключа таблицы (Activity -> ActivityFee), поэтому автор предлагает разделить это отношение на два других:

Теперь, если мы посмотрим на STUDENT_ACTIVITY, Activity становится внешним ключом, а отношение все еще имеет составной первичный ключ.

У нас есть таблица, в которой целые столбцы определяют составной первичный ключ, это нормально?

Если это не так, что мы должны делать в этом случае? (возможно, определите суррогатный ключ?)

Как можно справиться с многозначным атрибутом (в нашем случае Activity), чтобы устранить возможные аномалии данных?

Ответы на вопрос(2)

Ваш ответ на вопрос