Во-первых, я знаю этот вопрос , и предложение (с использованием GUID) не применимо в моей ситуации.
Мне нужны простые UID, чтобы мои пользователи могли легко передавать эту информацию по телефону:
Здравствуйте, у меня проблема с заказом
1584
в отличие от
привет, у меня проблема с заказом
4daz33-d4gerz384867-8234878-14
Я хочу, чтобы они были уникальными (для всей базы данных), потому что у меня есть несколько различных видов «объектов» ... есть идентификаторы заказов, и идентификаторы доставки, и идентификаторы выставления счетов, и так как нет отношения один к одному между ними я не могу угадать, к какому объекту относится идентификатор.
С помощью уникальных идентификаторов по всей базе данных я могу сразу сказать, на какой объект ссылается мой клиент. Мой пользователь может просто ввести идентификатор в поисковом инструменте, и я сохраню ему дополнительный щелчок, чтобы дополнительно уточнить то, что нужно.
Моя текущая идея состоит в том, чтобы использовать столбцы идентификаторов с различными начальными значениями 1, 2, 3 и т. Д. И значением приращения 100.
Это поднимает несколько вопросов:
Что если я в итоге получу более 100 типов объектов? Конечно, я могу использовать 1000 или 10000, но что-то, что плохо масштабируется, "пахнет"
Существует ли вероятность того, что начальное число "потеряно" (во время репликации, проблемы с базой данных и т. Д.)
в целом, есть ли другие проблемы, о которых мне следует знать?
возможно ли использовать нецелое число (в настоящее время я использую bigints) в качестве столбцов идентификаторов, чтобы я мог добавить к идентификатору идентификатор, представляющий тип объекта? (например, столбец varchar)
было бы неплохо использовать «основную таблицу», содержащую только столбец идентификаторов, и, возможно, тип объекта, чтобы я мог просто вставить в нее строку всякий раз, когда потребуется новая идея. Я чувствую, что это может быть немного излишним, и я боюсь, что это усложнит все мои запросы на вставку. Плюс тот факт, что я не смогу определить тип объекта, не глядя на базу данных
Существуют ли другие умные способы решения моей проблемы?