Может ли суррогатный ключ когда-нибудь измениться?Да.Допустим, ваша компания куплена другой компанией, и они решили объединить базы данных.Если чьи-то идентификационные номера должны измениться, они будут вашими, а не их.Я участвовал в двух таких консолидациях систем, и это не довольно.
Хотя я этого не делал, я считаю, что вы можете изменить начальную точку в NHibernate.(В большинстве ORM вы можете, по крайней мере, создать свой собственный класс, расширяя класс ORM. Затем кодируйте желаемое поведение.)
Можете ли вы показать пользователям вычисленный ключ на основе вашего идентификационного номера?Не в общем случае.Когда пользователи предлагают идеи для ключей, они обычно не очень хороши и почти всегда требуют ручной настройки.Так что вам почти наверняка придется хранить его.В этом нет ничего плохого.(За исключением того, что пользователи могут создавать ключи с закодированным значением.)
If.,,Предоставление пользователю суррогатного первичного ключа может стать проблемой в будущем. Я создам альтернативный ключ для представления пользователям, в противном случае я предоставлю суррогатный первичный ключ.
- Пользователи имеютчтобы иметь возможность идентифицировать вещи.
- Базы данных SQL используют ключи для идентификации вещей.
- Чтобы идентифицировать вещи в базе данных SQL, пользователи должны видеть хотя бы один естественный ключ.
(Существуют исключения, но их не много.)
Поэтому, если вы используете скрытый суррогатный ключ, вам потребуется по крайней мере еще один естественный ключ для представления пользователям.Почему натуральный ключ?Без него вы рискуете получить таблицы, построенные следующим образом.
id title
--
1 An Introduction to Database Systems
2 An Introduction to Database Systems
3 An Introduction to Database Systems
4 An Introduction to Database Systems
8 An Introduction to Database Systems
15 An Introduction to Database Systems
37 An Introduction to Database Systems
Но, скрывая суррогат, пользователь видит это.
title
--
An Introduction to Database Systems
An Introduction to Database Systems
An Introduction to Database Systems
An Introduction to Database Systems
An Introduction to Database Systems
An Introduction to Database Systems
An Introduction to Database Systems
Если строки относятся к одному из этих заголовковНужно обновить, как пользователи узнают, какой заголовок выбрать?