Я разрабатываю приложение asp.net, в котором есть потенциально большие таблицы данных. Я хотел бы знать, что было бы лучшим способом определить первичный ключ. Я знаю, что это было задано раньше, но поскольку это для конкретной ситуации, я думаю, что вопрос действительно.Лучший формат первичного ключа для большой таблицы
Я использую Entity Framework 4 в базе данных SQL Server 2008.
Каковы возможности для определения первичного ключа, принимая во внимание следующее:
- Существует реальная возможность того, что с течением времени количество записей превысит 32 битную границу, поэтому автоматическое приращение целочисленное будет не возможно.
- Невозможно определить первичный ключ в комбинации других столбцов в таблице.
- Для обеспечения синхронизации данных идентификатор, созданный приложением, был бы предпочтительнее, чем идентификатор базы данных. Кроме того, в EF это означало бы дополнительный переход к базе данных для получения вновь созданного идентификатора.
- Для производительности вставки предпочтительным будет последовательный ключ.
- Я рассматриваю требования к пространству для (последовательного) направления вниз.
- Для строковых идентификаторов предпочтительной является нечувствительность к регистру.
Я уже разработал собственный алгоритм, который генерирует часть datetime и случайную часть, преобразованную в шестнадцатеричное строковое представление. Это оставляет меня чуть короче, чем руководство. Я все еще мог преобразовать его в base64, но это будет идти против элемента nr 6.
Спасибо за ваши предложения.
«в EF это означало бы дополнительный обратный переход к базе данных, чтобы получить вновь сгенерированный идентификатор». Неправильно. «INSERT» и выбор нового идентификатора выполняются в одном выражении SQL в EF. –
Согласитесь с Крейгом - EF с радостью вернет обратно любой сгенерированный идентификатор в одном и том же кругообороте - нет необходимости в дополнительном кругообороте - этот спор спорный –
Ах, я не знал, что EF сбрасывает идентификатор в том же обратном направлении. Не знаю, почему я думал, что это невозможно. – Carvellis