Ключи IDENTITY являются хорошей практикой для сгенерированных на стороне сервера ключей, в средах, где у вас нет репликации или слияния тяжелых данных. Как они реализованы, они не позволяют дублировать в одной таблице, поэтому не беспокойтесь об этом. Они также имеют преимущество минимизации фрагментации в таблицах, в которых нет большого количества DELETE.
GUID - это обычная альтернатива. У них есть то преимущество, что вы можете создавать их на веб-уровне, не требуя обмена туда-обратно. Однако они больше, чем IDENTITIES, и они могут вызвать фрагментацию экстремальных таблиц. Поскольку они (полу) случайные, вставки распространяются по всей таблице, а не сосредоточены на одной странице в конце.
В отличие от естественного ключа или суррогатного ключа, генерируемого в приложении (привет/вот, Guid и т.д.)? –
См. Http://stackoverflow.com/questions/262547/reasons-not-to-use-an-auto-incrementing-number-for-a-primary-key, поскольку это может быть dup – Rippo