Как спроектировать таблицу с первичным ключом и многозначным атрибутом?
Я интересуюсь дизайном базы данных и сейчас читаю соответствующую литературу. Через книгу я столкнулся со странным примером, который заставляет меня чувствовать себя неуверенно. Есть отношение
В этой таблице у нас есть составной первичный ключ (StudentID, Activity). Но ActivityFee частично зависит от ключа таблицы (Activity -> ActivityFee), поэтому автор предлагает разделить это отношение на два других:
Теперь, если мы посмотрим на STUDENT_ACTIVITY, Activity становится внешним ключом, а отношение все еще имеет составной первичный ключ.
У нас есть таблица, в которой целые столбцы определяют составной первичный ключ, это нормально?
Если это не так, что мы должны делать в этом случае? (возможно, определите суррогатный ключ?)
Как можно справиться с многозначным атрибутом (в нашем случае Activity), чтобы устранить возможные аномалии данных?