Я обнаружил, что раскрытие первичных ключей, идентифицирующих физические объекты, может вызвать головную боль.
Представьте, что в лабораторию поступают два образца крови и для каждого образца генерируются результаты анализов.Можно выполнить много разных видов теста, и каждая запись, представляющая результат теста, будет иметь sample_id в качестве внешнего ключа.
Если вы передаете клиенту идентификатор базы данных и обнаружите, что два образца были случайно переключены, выпридется обновить внешние ключи во всех подробных записях, представляющих тесты.Если вместо этого вы выставили какое-то другое уникальное имя за пределами вашей системы, вам просто нужно поменять два уникальных имени в примерах записей в основной таблице.
Существуют и другие преимущества, связанные с миграцией данных, и преимущества, когдасущности представлены в более чем одной базе данных, в которой трудно создавать записи с одинаковыми идентификаторами базы данных.
По моему опыту, всегда лучше предоставить уникальный идентификатор, отличный от первичного ключа, вне вашей системы.Это дает вам больше гибкости в разрешении путаницы данных, решении проблем переноса данных и в других случаях для защиты вашей системы в будущем.