Есть ли канонический источник, поддерживающий «все суррогаты»?

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/204521

Вопрос

фон

Подход "ALL-PK-DEST-BE-SURROAROCALS" не присутствует в реляционной модели CODD или любой стандарт SQL (ANSI , ISO или другой).

Канонические книги, кажется, ускользнут на этих ограничениях.

САМАНАЯ САМАНАЯ СХОДА ДАННЫХ ДАННЫХ СПОСОБАЯ СХОДА В некоторых таблицах и суррогатных ключах в некоторых таблицах и суррогатных ключах. Я упоминаю это, потому что эти люди должны знать вещи или две о дизайне RDBMS.

ppdm (профессиональная ассоциация управления на нефтепродуктом) рекомендую одинаковые канонические книги:

Используйте суррогатные ключи в качестве первичных ключей, когда:

  1. нет натуральных или бизнес-ключей
  2. натуральные или бизнес клавиши плохие (часто меняются)
  3. Значение натурального или бизнес-ключа не известно во время вставки записи
  4. многокрасочные натуральные ключи (обычно несколько fk) превышают три столбца, что делает объединения слишком многослойными.
  5. также я не нашел канонического источника, который говорит, что натуральные ключи должны быть неизменными. Все, что я нахожу, состоит в том, что они должны быть очень оцененными, то есть должны быть изменены только в очень редких оксассиях, если когда-либо.

    Я упоминаю PPDM, потому что эти люди должны знать вещи или два о дизайне RDBMS.

    Происхождение подхода «все суррогаты», по-видимому, происходит от рекомендаций из кадров ORM.

    Это правда, что подход позволяет быстрое моделирование базы данных , не имеющим большого количества бизнес-анализа, но за счет ремонтопригодности и <сильной> читабельности кода SQL. Много превышения сделан для чего-то, что может произойти или не может произойти в будущем (естественный PK изменился, поэтому нам придется использовать функцию обновления Cascade RDBMS) за счет повседневной задачи, как присоединиться к большему количеству столов в каждом Запрос и необходимость пишета кода для импорта данных между базами данных, в противном случае очень источничная процедура (из-за необходимости избежать PK Colensions и необходимость предварительного создания таблиц эквивалентности).

    Другой аргумент заключается в том, что индексы на основе целых чисел быстрее, но это необходимо поддерживать с тестами. Очевидно, что длинные, различные варгача не хороши для PK. Но индексы, основанные на короткой, фиксированной длины Varchar почти так же быстро, как целые числа.

    вопросы

    - Есть ли канонический источник, который поддерживает подход "All-Pk-Dect-Be-surrogate"?

    - есть реляционная модель CODD была заменена более новой реляционной моделью?

Это было полезно?

Решение

"Все PKS суррогаты" не очень звуковая стратегия вообще и наверняка не то, что вам когда-либо может найти «авторитетный» источник для .

Во-первых, подумайте о том, что подразумевается под «первичным ключом» в этом контексте. В реляционной модели нет «первичных» клавиш - означает, что ни один ключ, который принципиально отличается от любого другого ключа того же таблицы. В принципе все клавиши в реляционной базе данных могут и наслаждаться тем же статусом и иметь одинаковые функции и функции, за исключением случаев, когда дизайнер базы данных выбирает иначе. Поэтому выделение любого ключа в таблице с несколькими ключами, по существу, произвольным (это было слово, используемое E.F.CODD), субъективным и чисто психологическим (взгляд на дату Криса, коллеге и сотрудника CODD и Collaborator). Если это не объясняется, какое различие тянутся между «первичным» ключом и любым другим ключевым ключом, поэтому это довольно бессмысленно, и вообще не существует, чтобы утверждать, что такой ключ «должен» или «должен» быть чем-либо.

Во-вторых, аргумент очень мало связан с индексами, которые являются физической функцией хранения. Ключи являются логическим вопросом, не физическим, и нет абсолютных причин предполагать, что соображения хранения «первичного» ключа являются или должны быть любыми различными для других ключей (см. Предыдущий абзац). Мы могли бы рассчитывать, что любые структуры хранения используются, накладные расходы на хранение в некоторых мерах будут Большой с суррогатным ключом, чем без такого ключа, а как всегда лучший ответ здесь «это зависит». Решения для хранения должны быть выполнены на вспомогательной основе и правила одеяла очень мало помощи.

В-третьих, от логической точки Абсолютное требование суррогатного ключа делает очень мало смысла. Требование к естественному ключу точно так же с или без суррогата. Необходимость информации быть идентифицируемым в домене дискурса (то есть с естественным ключом AKA «Бизнес ключ», «Доменой ключ») одинаково. Да, ключевые ключи могут быть обновлены, но иногда это природа вещей иногда. Добавление суррогата само по себе не обязательно делает ключ обновления легче обрабатывать, а иногда это может сделать их сложнее.

Другие советы

Основные и зарубежные ключевые ключи не должны быть читаемыми. Их цель - поддерживать внутреннюю реляционную структуру базы данных, чтобы не читать человеком.

Естественно, если есть подходящий натуральный ключ, который будет никогда не изменять (я претендую на это столь же редко, как зубы зубов или четырехлистных клеветов, но ...), вы можете использовать это, И некоторые клиенты сделают это одним из их требований.

Но зачем добавлять дополнительную сложность в систему базы данных, для небольшого заметного выгоды? Основные суррогатные ключи, генерируемые системой, гарантированно уникальны, гарантированно никогда не изменяются и являются одинаковыми типами данных для всех таблиц. Они будут иметь такое же надежное поведение при любых обстоятельствах.

Если вы ищете канонический ресурс, который поддерживает эту практику, вы не найдете ни одного. есть столько дизайнеров на другой стороне прохода, который будет оскорблен их использование природных, композитных ключей с кластерными показателями в качестве первичных ключей, и все канонические ресурсы говорят, что это выбор дизайнера.

<Сильные> см. Также
http://en.wikipedia.org/wiki/surrogate_key_/a>

Лицензировано под: CC-BY-SA с атрибуция
scroll top