Псевдо/синтетический составной идентификатор 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 цифр по моему определению.


person Flib    schedule 15.10.2015    source источник


Ответы (1)


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

person philipxy    schedule 04.12.2015