Я собираюсь сказать здесь кое-что, что не ожидается.
Все, что они преподают в базе данных о нормализации и ключах, совершенно неверно, когда дело доходит до выбора первичных ключей.
Первичный ключ является особенным, когда речь идет о запросах диапазона, и по этой причине, если у вас есть запрос доминантного диапазона, который является вашим первичным ключом, никаких исключений.
Если ваш запрос доминантного диапазона не относится к ключу-кандидату, выв конечном итоге с первичным ключом, который не применяется для уникальности!Это иногда называют кластеризованным индексом, который является неправильным, потому что индекс отсутствует.
Теперь все ключи нормализации и кандидата важны, и вы захотите ввести уникальные ограничения по крайней мере для некоторых из них.Но не назначайте первичный ключ, потому что это естественный ключ.На самом деле это медленнее, чем определение индекса и уникального ограничения.Определите первичный ключ, основываясь только на запросах диапазона.
Помните, что нет никаких ограничений на фактическое использование первичных ключей.Таблица без первичных ключей называется таблицей кучи и не имеет внутреннего или внутреннего порядка упорядочения.
РЕДАКТИРОВАТЬ: определение запроса диапазона:
Запрос диапазона - это запрос ORDER BY.запрос или содержит оператор больше или меньше чем.Нас интересуют столбцы, для которых выполняются эти запросы.Фундаментальная идея заключается в том, что запрос диапазона выбирает несколько (от десятков до сотен, возможно, тысяч, но не всех) строк из таблицы на основе ограничивающих условий на одном или обоих концах.
Существует другой тип запросов диапазона, и именно здесь выиметь внешний ключ к другой таблице, и операция состоит в том, чтобы выбрать все соответствующие этому внешнему ключу.На самом деле это также запрос диапазона, хотя это не так.