Вы немного все перепутаете.
1) Есть два определения суррогатных ключей
Суррогат (1)
Это определение основано на том, что дано Холлом, Оулеттом и Тоддом (1976).
Здесь суррогат представляет собой сущность
во внешнем мире. Суррогатный
внутренне генерируется системой, но
тем не менее виден пользователю или
приложение.
Суррогатное (2)
Это определение основано на определении Wieringa and De Jonge (1991).
Здесь суррогат представляет объект
в самой базе данных. Суррогат
внутренне генерируется системой
и невидим для пользователя или
применение.
Суррогатное (1) определение определяет
его использование в модели данных скорее
чем модель хранения и используется в
Эта статья. См. Дата (1998).
(из записи вики о суррогатных ключах; прочитайте статью с небольшим скептицизмом - например, цитата ' Присоединение суррогатных ключей дешевле (сравнение столбцов меньше), чем составных ключей 'может показаться разумным на первый взгляд, но естественные составные ключи создадут индексы, которые упорядочены и разделены естественным образом, что обеспечивает очень эффективное сканирование при просмотре или анализе данных, в том числе благодаря тем же логическим соединениям, которые возвращают наборы результатов, содержащие несколько строк. намного лучше)
В любом случае, рассматривая суррогатные ключи с точки зрения модели данных, вы должны не учитывать то, что вы называете «традиционным» определением.
2) Ваша логика для рассмотрения естественных ключей UUID очень скользкая
цитата из вашего вопроса:
Я бы посмотрел UUID больше как
естественный ключ, потому что он может служить
та же цель, что и номер счета:
обратиться к конкретному аккаунту в
уникальный и неизменный способ.
Это не отличительная или естественная характеристика естественных ключей по сравнению с суррогатными ключами. Натуральные ключи имеют следующие свойства (из wiki ):
Естественный ключ - это ключ-кандидат, который
имеет логическое отношение к
атрибуты в этой строке. Естественный
ключ иногда называют ключом домена.
Главное преимущество натурального ключа
за суррогатный ключ, который не имеет
такие логические отношения, что это
уже существует; нет необходимости
добавить новый искусственный столбец в
схемы. Используя естественный ключ (когда один
можно определить) также упрощает
качество данных: обеспечивает
может быть только одна строка для ключа; этот
«одна версия правды» может быть
проверено, потому что естественный ключ
основанный на реальных наблюдениях.
Обычно нет логической связи между UUID и атрибутами одной и той же строки. Однако, если идентификаторы UUID назначаются внешней системой и если у вас уже есть требование хранить их как атрибут, у вас есть эта логика (аналогично тому, как вы можете считать серийный номер или номер социального страхования естественным ключом).
Только в этом смысле UUID может перестать быть суррогатным ключом, и все же у вас может быть (и, вероятно, будет) более сильная и богатая логика для другого ключа-кандидата для той же строки.