Допустим, у нас есть 3 таблицы (на самом деле у меня есть 2 на данный момент, но этот пример может лучше проиллюстрировать эту мысль):
[лицо]
- ID: int, первичный ключ
- Имя: nvarchar (xx)
[Группа]
- ID: int, первичный ключ
- Имя: nvarchar (xx)
[Роль]
- ID: int, первичный ключ
- Имя: nvarchar (xx)
[PersonGroupRole]
- Person_ID: int, ПЕРВИЧНЫЙ КОМПОЗИТ ИЛИ НЕТ?
- Group_ID: int, ПЕРВИЧНЫЙ КОМПОЗИТ ИЛИ НЕТ?
- Role_ID: int, ПЕРВИЧНЫЙ СОСТАВ ИЛИ НЕТ?
Должен ли какой-либо из 3 идентификаторов в отношении PersonGroupRole быть помечен как ПЕРВИЧНЫЙ ключ или все они должны быть объединены в один составной файл? какая реальная выгода от этого или нет?
Я могу присоединиться в любом случае, насколько мне известно, поэтому Person JOIN PersonGroupRole JOIN Group сообщает мне, какие лица входят в какие группы и т. Д.
Я буду использовать LINQ / C # / .NET поверх SQL-экспресса и SQL-сервера, поэтому, если есть какие-либо причины в отношении языка / SQL, которые могут сделать выбор более ясным, об этой платформе я спрашиваю.
Будем рады увидеть, какие ответы появятся, поскольку я много раз думал об этих первичных ключах / индексах при создании комбинированных.
EDIT:
Хорошо, вопрос должен был быть неправильно понят, теперь я вижу.
Вопрос в том, имеет ли смысл помечать три идентификатора в PersonGroupRole как ПЕРВИЧНЫЕ КЛЮЧИ для целей индексации. Это добавит дополнительную скорость для объединения с каждой из трех таблиц, или они останутся без PRIMARY KEY в таблице PersonGroupRole и будут только первичными в отдельных таблицах.
Извините, по поводу путаницы. Постараюсь объяснить мои вопросы лучше.