SQL Server "псевдо / синтетический" композитный идентификатор (ключ)

Извините, но я не знаю, как назвать в заголовке то, что мне нужно.

Я хочу создать уникальный ключ, где каждые две цифры номера идентифицируют другую таблицу PK. Допустим, у меня есть ниже Pks в этих 3 таблицах:

Id  Company     Id  Area        Id  Role
1   Abc         1   HR          1   Assistant
2   Xyz         2   Financial   2   Manager
3   Qwe         3   Sales       3   VP

Теперь мне нужно вставить значения в другую таблицу, я знаю, что я могу сделать это в 3 столбцах и создать составной ключ для достижения целостности и уникальности, как показано ниже:

Id_Company  Id_Area Id_Role ...Other_Columns.....
1           2       1
1           1       2
2           2       2
3           3       3

Но я думал создать один столбец, в котором каждая цифра X идентифицирует каждый FK. Таким образом, первые столбцы вышеприведенной таблицы 3 становятся такими, как показано ниже (добавляя каждую цифру в FK)

Id  ...Other_Columns.....
121
112
222
333

Я не знаю, как это назвать, и даже если это глупо, но для меня это имеет смысл, где я могу выбрать для одного столбца, и в случае необходимости какого-то объединения мне просто нужно разделить число на каждые X цифр по моему определению.

1 ответ

Он называется "умным", "интеллектуальным" или "сцепленным" ключом. Это плохая идея. Он хрупок, приводит к проблемам с обновлением и мешает СУБД. СУБД и язык запросов предназначены для простого описания вашего приложения с помощью базовых таблиц. Используйте их так, как они были предназначены.

Другие вопросы по тегам