Все первичные ключи - это значение, которое мы определили, это значение, которое имеет первостепенное значение в записи. Является ли этот ключ подписанным int, неподписанным int, строкой, большим двоичным объектом (на самом деле, существуют ограничения) или UUID (или каким-либо другим именем, которое он принимает сегодня), факт остается фактом, что это ключ и что он является вещь первостепенной важности.
Поскольку мы не ограничены использованием только положительно ориентированных чисел для наших ключей, имеет смысл учитывать, что число со знаком int будет доходить до ~ 2 миллиардов, а число без знака - до ~ 4 миллиардов. Но нет ничего плохого в использовании int со знаком, установке начального значения в ~ -2 миллиарда и установке шага в единицу. После ~ 2 миллиардов записей вы достигнете нуля, а затем продолжите ~ 2 миллиарда.
Что касается того, почему было бы полезно иметь «отрицательные ключи» в таблице, это тот же вопрос, что и «почему полезно иметь ключи в таблице». «Значение» ключа не влияет на его статус в качестве ключа. Ключ это ключ это ключ.
Что важно, так это если ключ действителен.
Что касается того, почему было бы полезно разрешить ключи, которые были отрицательными, я могу предложить несколько причин:
Что если вы хотите указать возврат в системе продаж в виде отрицательных номеров заказа на продажу, которые соответствуют положительному номеру заказа на продажу, что облегчает корреляцию (это наивно и плохо спроектировано, но будет работать в смысле «электронных таблиц»).
Что делать, если вы хотите иметь таблицу пользователей и указать, что те, у кого отрицательные числа, контролируются системой (именно так и поступают с пользователями в чате).
Я мог бы продолжить, но на самом деле единственная причина, по которой значение отрицательного числа имеет значение, заключается в том, если вы или я придаем ему значение. Кроме того, нет особой причины, по которой значение ключа может иметь какое-либо отношение к самому ключу.