Я просто хотел добавить сюда кое-что, что я никогда не рассмотрел при обсуждении автоматически сгенерированных полей целочисленных идентификаторов с реляционными базами данных (потому что я их часто вижу), то есть его базовый тип может переполниться при какой-то момент.
Теперь я не пытаюсь сказать, что это автоматически делает составные идентификаторы подходящими, но это просто факт, что, хотя в таблицу может быть логически добавлено больше данных (которые все еще уникальны), единый автоматический сгенерированная целочисленная идентичность может предотвратить это.
Да, я понимаю, что для большинства ситуаций это маловероятно, и использование 64-битного целого дает вам большой запас, и реально база данных, вероятно, должна была бы быть разработана по-другому, если бы произошло такое переполнение.
Но это не мешает кому-то это делать ... таблица, использующая одно автоматически сгенерированное 32-битное целое число в качестве идентификатора, который, как ожидается, будет хранить все транзакции на глобальном уровне для конкретной компании быстрого питания, происходит сбой, как только он пытается вставить свою 2 147 483 648-ю транзакцию (и это вполне осуществимый сценарий).
Стоит только отметить, что люди склонны скрывать или просто игнорируют. Если какая-либо таблица будет вставляться с регулярностью, следует подумать о том, как часто и сколько данных будет накапливаться с течением времени, и следует ли вообще использовать целочисленный идентификатор.