Я выберу вариант 3, чтобы иметь surrogate key
как длинный идентификатор. Потому что вы хотели бы избежать обновления нескольких строк в случае изменения части вашего составного ключа. Также обратите внимание, что даже ссылки на индексы должны быть обновлены.
Например,
- в приведенном ниже примере допустим, что идентификатор компании / сотрудник не изменился, тогда вам придется обновить несколько строк в случае сотрудника, а затем таблицы телефона.
Employee Phone
--------- --------
Company ID (PK) Phone no
Employee No (PK) Company ID (FK)
Name Employee No (FK)
Скорее, если вы добавите суррогатный ключ в Employee, то только одно обновление в таблице Employee.
Employee Phone
--------- --------
ID (PK) Phone no
Company ID (UK) Employee ID (FK)
Employee No (UK)
Name