Должны ли мы разорвать отношение один ко многим, которое является однонаправленным, в JoinTable - PullRequest
1 голос
/ 08 марта 2019

В настоящее время я работаю над приложением, в котором у меня есть 2 таблицы.Пользователь и команда.У пользователя есть UserId как PK и UserPassword.

Таблица команд имеет TeamId в качестве PK и TeamName.

Первоначально у меня была одна таблица, в которой у меня были UserId, UserPassword и TeamId, но мне было указано, что текущий дизайн не нормализован.Следовательно, мне пришлось разбить таблицу на пользователя, команду, а также таблицу соединения с именем User_Team, которая содержит UserId как PK из таблицы User и TeamId как PK из таблицы Team.

Ограничения Один пользователь можетбыть только в 1 команде и в 1 команде может быть много пользователей.

Так что, насколько я понимаю, это OneToMany от Команды до Пользователя.

Я сделал UserId и TeamId вместе как составной ключ, а также сделал его уникальным в JoinTable (User_Team), чтобы 1 пользователь не мог входить в несколько команд.

Мой запрос заключается в том, что необходимо разбить таблицу на таблицу Team отдельно.Не могу у меня просто все 3 поля в одной таблице.Может кто-нибудь объяснить мне, как это не нормируется.Также дайте мне знать, если в этом случае требуется JoinTable.

1 Ответ

2 голосов
/ 08 марта 2019

Нет, вам не нужна JoinTable для связи OneToMany.Просто укажите поле teamId в таблице пользователей, и все готово.

Как правило:

  • OneToOne : естьотдельная таблица
  • OneToMany : две таблицы, сторона "много" (User для вашего случая) имеет внешний ключ
  • ManyToMany :Есть JoinTable
...