Натуральные ключи (email, ИНН, username) меняются. Когда это произойдёт, вам предстоит каскадное обновление миллионов строк и всех FK-ссылок. Суррогатные ключи (BIGSERIAL / UUID) не меняются никогда.
Я сейчас пробую использовать свой генератор ключа для юзера. Комбинирую уникальный номер пользователя с ФИО, записываем его в одну строчку без пробелов и спецсимволов, через тире: например "9999999-ИвановАА". Вставляем этот сгенерированный string в поле как ключевое id.
Этот айдишник планирую вставлять везде при операциях с данными в таблицах, будет выделен специальный столбец createdBy. И сразу видна фамилия того, кто вносил изменения в БД. На мой взгляд, удобнее будет читать аудитору.
На счет производительности, не уверен, пока не тестировал интересно что вы думаете?
Я сейчас пробую использовать свой генератор ключа для юзера. Комбинирую уникальный номер пользователя с ФИО, записываем его в одну строчку без пробелов и спецсимволов, через тире: например "9999999-ИвановАА". Вставляем этот сгенерированный string в поле как ключевое id.
Этот айдишник планирую вставлять везде при операциях с данными в таблицах, будет выделен специальный столбец createdBy. И сразу видна фамилия того, кто вносил изменения в БД. На мой взгляд, удобнее будет читать аудитору.
На счет производительности, не уверен, пока не тестировал интересно что вы думаете?
Автор, шикарнейшая статья. Можно я утащу к себе и опубликую на каком-нибудь Пикабу?