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