Оригинальный вопрос не относится к нормализации. Если у вас есть нормализованная база данных, как вы заявили, вам не нужно менять ее по причинам нормализации.
В вашем вопросе действительно две проблемы. Во-первых, предпочтительнее ли использовать int или varchars для использования в качестве первичных ключей и внешних ключей. Второе - можете ли вы использовать естественные ключи, указанные в определении проблемы, или вам следует сгенерировать синтетический ключ (суррогатный ключ), чтобы заменить естественный ключ.
целые числа немного более кратки, чем varchars, и немного более эффективны для таких вещей, как обработка индекса. Но разница не огромная. Вы, вероятно, не должны принимать решение на этой основе в одиночку.
Вопрос о том, действительно ли предоставленный естественный ключ работает как естественный ключ или нет, гораздо важнее. Проблема дубликатов в столбце «имя» - не единственная проблема. Существует также проблема того, что происходит, когда человек меняет свое имя. Эта проблема, вероятно, не проявляется в приведенном вами примере, но она возникает во многих других приложениях баз данных. Примером может служить стенограмма за четыре года всех курсов, пройденных студентом. Женщина может выйти замуж и изменить свое имя в течение четырех лет, и теперь вы застряли.
Вы должны либо оставить имя без изменений, в этом случае оно больше не согласуется с реальным миром, либо обновить его задним числом во всех курсах, пройденных человеком, из-за чего база данных не согласуется с печатными списками, созданными в то время.
Если вы определитесь с синтетическим ключом, теперь вам нужно решить, будет ли приложение раскрывать значение синтетического ключа для сообщества пользователей. Это еще одна целая банка червей, выходящая за рамки этого обсуждения.