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

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

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

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

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



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

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

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

Похожие вопросы