Нужен ли уникальный идентификатор для связующей таблицы?

В БД есть следующие таблицы:
  • Фильмы
    • Идентификатор (PK)
    • Название

  • Личности
    • Идентификатор (PK)
    • Имя
    • Биография

  • Роли личностей
    • Идентификатор (PK)
    • Название роли

  • Личности фильма
    • Идентификатор фильма (PK, FK)
    • Идентификатор роли (PK, FK)
    • Идентификатор личности (PK, FK)



Не раз видел, как связующим таблицам (таким как "Личности фильма") добавляют отдельный PK. Стоит ли это делать в ситуации, схожей с примером выше (в будущем может добавиться еще один ключ (напр. идентификатор персонажа фильма))? Если стоит, то почему?
  • Вопрос задан
  • 323 просмотра
Пригласить эксперта
Ответы на вопрос 4
oxyberg
@oxyberg
Продуктовый дизайнер ВКонтакте
Стоит добавить еще один айди, чтобы при всяких редактированиях сущности Личности фильма тягать по этому айди данные из бд, и потом их туда же толкать по этому айди (то есть не будет возни со сменой данных, которые уже являются составным первичным ключом).
Ответ написан
solotony
@solotony
покоряю пик Балмера
В данном примере - нет, не нужно. Какие "редактирования" у таблицы связности (кроме удаления и добавления) могут быть ?

Если бы "Личности фильма" было бы сущностью (и имело какие-то другие свойства) - тогда да, введение уникального идентификатора было бы обосновано
Ответ написан
Комментировать
sim3x
@sim3x
В любой ситуации стоит делать уникальный ид
Когда возникнет ситуация с удалением конкретной строки дубля, только ид поможет
Ответ написан
А разве в вашей таблице "Личности фильма" первичный ключ не появляется естественным образом? Зачем ещё нужен суррогатный?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы