Журнал Системный Администратор, Февраль 2008

Журнал Системный Администратор

Февраль 2008

Цена: $4.5 US

  Подписаться

Зарегистриванные пользователи, пожалуйста следуйте этой ссылке


Определение первичного ключа вставленной записи

Сергей Супрунов

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

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

Естественные и суррогатные ключи

Использование естественных ключей для работы с таблицами – наиболее прямолинейный и очевидный путь работы с базой данных. Например, в таблице пользователей Интернета в качестве первичного ключа вполне может использоваться имя учётной записи (login) абонента, в базе отдела кадров – табельный номер сотрудника, в телефонном справочнике – номер телефона и т. п. В ряде случаев в качестве первичного можно задать составной ключ, если необходимая уникальность обеспечивается комбинацией нескольких полей.

Одним из недостатков этого подхода является то, что задача ввода, а порой и формирования ключа возлагается на пользователя. А следовательно, возможны ошибки – от банальных опечаток, когда вместо телефона 23456 случайно вводится 23356, до генерации неуникальных значений. Кроме того (и это является главной причиной, почему разработчики избегают естественных ключей), значение любого столбца, которое что-то означает, может измениться – абонент может поменять паспорт или потребовать смены логина, модернизация городской АТС может сопровождаться сменой плана нумерации телефонов, и т. п. Так что подобные ситуации приходится отслеживать, БД либо приложение должны обеспечивать сохранение целостности (а также и логичности) данных в случае модификации такого ключа, и так далее.

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

Подписаться на весь номер

Зарегистриванные пользователи, пожалуйста следуйте по этой ссылке