Прочитав this и this, а затем прочитав this (что касается двух других иронически), я задаюсь вопросом, насколько велика дискуссия по этой теме? Я парень SQL Server, поэтому я склонен использовать идентификатор, который автоматически генерируется в форме int. Однако, когда я знаю, что мне потребуется какая-то форма репликации между сервером и сервером или синхронизация между клиентом и сервером, я использую GUID как мой ключ.Первичные ключи - родные, последовательные или GUID-ключи?
Вопрос: Должен ли я использовать GUID в качестве основного ключа во всех таблицах во все времена на всякий случай, если мне понадобится эта возможная масштабируемость по дороге? Это делает мою схему более гибкой в том, что она может быть перенесена между платформами во все времена? Помогает ли это поддерживать гибкость моего ORM (независимо от вкуса), не встраивая специфические функции платформы?
Ответы:
@David Archer: За свой комментарий, я обновил свой пост, чтобы не сказать "естественный ключ". Правильны ли вы в этом естественном ключе как such. Спасибо за исправление.
Просто ничто, ваша терминология кажется немного выключенной. «Естественный ключ» обычно основан на чем-то определенном для записи типа, которую вы описываете, и считается уникальным и неизменным. Подумайте о номере социального страхования для хранения списка граждан США или адреса электронной почты для списка пользователей. Термин, который вы ищете, является суррогатным ключом, и он одинаково применим как к автогенерированным ints, так и к GUID. –