Вам все равно понадобится составной UNIQUE
индекс (RoleId, ReportId
).
Нет смысла не делать это PRIMARY KEY
.
Если вы сделаете это CLUSTERED PRIMARY KEY
(по умолчанию), это будет лучше с точки зрения производительности, поскольку будет меньше по размеру.
Кластерный первичный ключ будет содержать только два столбца в каждой записи: RoleID
и ReportID
, а вторичный индекс будет содержать три столбца: RoleID
, ReportID
и RoleReportID
(в качестве указателя строки) .
Возможно, вы захотите создать дополнительный индекс для ReportID
, который можно использовать для поиска всех Roles
по заданному Report
.
Был бы некоторый смысл в создании суррогатного ключа для этих отношений, если выполняются два следующих условия:
- У вас есть дополнительные атрибуты в ваших отношениях (т. Е. Эта таблица содержит дополнительные столбцы, такие как
Date
или что-то еще)
- У вас есть лотов таблиц, которые ссылаются на это отношение с
FOREIGN KEY
В этом случае было бы лучше иметь один столбец PRIMARY KEY
для ссылки в FOREIGN KEY
отношениях.
Так как у вас, кажется, нет такой необходимости, просто сделайте композит PRIMARY KEY
.