составной первичный ключ, состоящий из первичных ключей из других таблиц - PullRequest
0 голосов
/ 02 марта 2019

Здравствуйте, я пытаюсь объединить PK из двух таблиц (PK 'video_id' и 'user_id'), чтобы создать уникальный список видео, которые просматривал конкретный пользователь.Я хотел, чтобы это было составным, чтобы минимизировать избыточность, но в документации, казалось, только FK использовались для составления PK.Если я сделаю его составным FK, будет ли он по-прежнему уникальным (не будет нескольких строк для видео, просматриваемых одним и тем же пользователем)?

1 Ответ

0 голосов
/ 02 марта 2019

Не уверен, что вы спрашиваете здесь, но следующий вопрос решает общую проблему.

У вас здесь отношения многие ко многим.Многие пользователи могут смотреть одно видео.Многие видео могут смотреть один пользователь.

Общий способ записи таких отношений - использовать третью таблицу.Мы могли бы назвать это userVideo.Он имеет как минимум две колонки, UserID и VideoID.Это, как вы предлагаете, FK, ссылающиеся на PK таблиц User и Video.Взятые вместе, они могут быть (составными) PK этой третьей таблицы.Там может быть больше столбцов, таких как рейтинг, где он будет показывать, насколько пользователь наслаждался видео.

Комбинация UserID и VideoID будет уникальной в этой таблице.Если вы хотите хранить данные о каждом просмотре видео пользователем, это другой случай.

Это отвечает на ваш вопрос?

...