Одним из требований является то, что при сохранении объектов C# в базе данных я должен определить идентификатор базы данных (суррогатный первичный ключ) в коде.Создание уникальных идентификаторов базы данных в коде
Второе требование заключается в том, что тип базы данных для ключа должен быть int или char (x) ... поэтому нет уникального идентификатора или двоичного кода (16) или тому подобного.
Это неизменные требования.
Что было бы лучшим способом справиться с этим?
Одна из идей - это кодированные base64 GUID, похожие на «XSiZtdXcKU68QWe7N96Dig». Они легко создаются в коде и для меня приемлемы в URL-адресах, если это необходимо. Но будет ли это слишком дорого в отношении производительности (индексации, размера), имеющей все первичные и внешние ключи char (22)? Мне очень нравится эта идея.
Еще одна идея - создать кодовую версию последовательности базы данных, создающую увеличивающиеся целые числа для меня. Но я не знаю, является ли это правдоподобным, и для того, чтобы обеспечить надежность, потребуется некоторое руководство. Секвенсор должен знать, что он пришел, и что касается нитей, которые я не контролирую и т. Д.
Я думаю, что никакой стол не будет превышать 1.000.000 строк ..., вероятно, будет намного меньше.
Это действительно не имеет смысла - это действительно задача базы данных, зачем пытаться переместить ее на клиентский код? Любой клиентский код будет подвержен ошибкам (возможные дубликаты) - только база данных действительно может гарантировать уникальность –
Могу ли я попросить вас уточнить, почему требование заключается в определении уникального идентификатора в коде? Девять раз из десяти, я обнаружил, что решение этой проблемы работает над этим требованием и просто позволяет базе данных выполнять свою работу. –
Я знаю все дискуссии и не хочу оправдываться :). Я задаю вопрос, основанный на упомянутых неизменных требованиях, чтобы ответить соответствующим образом. – lox