Мы создаем приложение, которое, возможно, потребуется реплицировать на многие серверы (я надеюсь, что нет, но нет способа узнать, потребуется ли клиентам их собственная копия клиент / сервер, пока мы не выпустим онлайн-продукт).
Поскольку число серверов неизвестно, я решил использовать GUID для любых идентификаторов транзакционной таблицы. Поскольку каждый клиент имеет свою собственную базу данных, я намерен использовать значение по умолчанию NEWSEQUENTIALID (), а самая большая таблица будет добавлять не более 1,5 млн строк в год (но в среднем 15 тыс. Строк), я не ожидаю значительных проблем с производительностью .
Однако я не уверен, как обращаться со случаями, когда мы хотим, чтобы внешний ключ указывал «ни один не выбран». Например, клиент имеет одного администратора. Это устанавливается как внешний ключ (login_id) для login.id (GUID). Однако, если у клиента еще нет пользователя с правами администратора, как мы могли бы легко настроить клавишу «Нет выбранных»?
В предыдущих приложениях мы использовали столбцы IDENTITY и вставляли в большинство таблиц фиктивную запись с идентификатором 0. Существует ли принятый подход к предоставлению аналогичных функций с GUID?