Я работаю над базой данных, которая использует целые числа в качестве первичных ключей для ряда таблиц. Я хотел бы сделать первичные ключи относительно сложными для угадывания - они не должны быть сверхжесткими, просто не увеличивая целые числа в младших сотнях. Поскольку я модифицирую это в существующие схемы с существующими данными, изменение типа данных первичного ключа (integer
) не представляется возможным. Что мне интересно, так это то, как лучше всего генерировать идентификаторы. Пока я могу думать об этих вариантах:
- Создание UUID с использованием
UUID()
и преобразование их в целое число.
- Держите отдельную таблицу, заполненную случайными целыми числами, и используйте процедуру, чтобы выбрать и удалить одну из таблиц внутри транзакции.
- Используйте метку времени UNIX плюс случайное n-значное число, например,
CONCAT(UNIX_TIMESTAMP(),SUBSTRING(RAND() FROM 3 FOR 6))
Я тоже открыт для других предложений.
Буду признателен за любые мысли, которые вы можете предложить.
Спасибо,
Росс