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