Как мне нормализовать это, чтобы в первичном ключе не было повторяющихся значений?
У меня есть стол, который выглядит примерно так:
ID | NAME | HOMEID | HOMENAME | TEAMID | TEAMNAME | YEARJOINED 1 | PETE | SP | SPAIN | 1 | TEAM1 | 2018 2 | PAUL | FR | FRANCE | 1 | TEAM1 | 2018 3 | MARY | GR | GREECE | 2 | TEAM2 | 2019 1 | PETE | SP | SPAIN | 2 | TEAM2 | 2019 2 | PAUL | FR | FRANCE | 2 | TEAM2 | 2020
Каждый человек может присоединиться максимум к одной команде в год.
Я нормализовал таблицу вплоть до (того, что я думаю) BCNF:
{ID, NAME} {HOMEID, HOMENAME} {TEAMID, TEAMNAME} {ID, TEAMID, YEARJOINED} {ID, HOMEID, TEAMID}
Однако я действительно не знаю, как нормализовать это так, чтобы в первичном ключе для последних двух таблиц не было повторяющихся значений. Насколько я могу понять, способ YEARJOINED зависит от ID и TEAMID, таблицы всегда будут иметь повторяющиеся значения?
Что я уже пробовал:
Я попробовал разделить таблицы на TEAM1 и TEAM2, т. е.:
TEAM1{ID, TEAMID, YEARJOINED} TEAM2{ID, TEAMID, YEARJOINED}
учитывая, что каждый человек может присоединиться только к одной команде в год. Однако это затрудняет выполнение SQL-запросов к таблицам позже!
MadMyche
Можете ли вы предоставить этому еще какой-то контекст; было бы легче работать с ним, если бы была более широкая картина