Como projetar tabela com chave primária e atributo com vários valores?

Estou interessado em design de banco de dados e agora estou lendo a literatura correspondente. Através do livro, eu enfrentei um exemplo estranho que me faz sentir incerto. Existe uma relação

Nesta tabela, temos uma chave primária composta (StudentID, Activity). Mas ActivityFee é parcialmente dependente da chave da tabela (Activity -> ActivityFee), então o autor sugere dividir essa relação em duas outras relações:

Agora, se dermos uma olhada em STUDENT_ACTIVITY, Activity se tornará uma chave estrangeira e a relação ainda terá uma chave primária composta.

Temos a tabela na qual as colunas inteiras definem uma chave primária composta, tudo bem?

Caso contrário, o que devemos fazer neste caso? (provavelmente define uma chave substituta?)

Qual é uma boa maneira de lidar com atributos com vários valores (atividade no nosso caso) para eliminar possíveis anomalias de dados?

questionAnswers(2)

yourAnswerToTheQuestion