Версия источника: 4880e8b4372c96001c2e052be28b68a95d31252b
Синхронизировано: 2026-11-09T11:15:07.649Z
Источник: https://github.com/sergey-from-riders/vibecoding-base/tree/4880e8b4372c96001c2e052be28b68a95d31252b

<a id="database-identifiers"></a>

# Идентификаторы: UUID и bigint

## Коротко

UUID удобен для независимого создания записей и публичных идентификаторов. Имя поля и его тип — разные решения.

## Плохо

```sql
CREATE TABLE orders (
  order_id bigint PRIMARY KEY
);
-- Два независимых сервиса выдали order_id = 42.
```

## Хорошо

```sql
CREATE TABLE orders (
  order_id uuid PRIMARY KEY DEFAULT uuidv7()
);
-- PostgreSQL 18: генерация без общего счётчика.
```

## Почему

UUID уменьшает зависимость от единого генератора. Он не заменяет проверку доступа; UUIDv7 раскрывает временную составляющую.

## Когда применять

Числовой identity допустим в централизованной БД. UUIDv7 есть в PostgreSQL 18; UUIDv4 через gen_random_uuid() подходит там, где v7 недоступен.

## Как проверить

- Где создаётся идентификатор? Нужен ли единый счётчик? Проверяется ли доступ независимо от UUID?

## Человек

Выбирает требования к публичности, генерации и совместимости идентификаторов.

## Агент

Готовит схему или миграцию, проверяет граничные значения и совместимость с текущими запросами.

Контроль результата:

- Где создаётся идентификатор? Нужен ли единый счётчик? Проверяется ли доступ независимо от UUID?

## Источники

- [PostgreSQL: Documentation: 18: 9.14. UUID Functions](https://www.postgresql.org/docs/18/functions-uuid.html)

Уровень: Зависит от задачи. Проверено: 2026-11-09. Изменено: 2026-11-09.

[Исходный файл](https://github.com/sergey-from-riders/vibecoding-base/blob/4880e8b4372c96001c2e052be28b68a95d31252b/registry/standards/database/postgres/rules/identifiers.md)
