Интеллектуальный ключ | это... Что такое Интеллектуальный ключ? (original) (raw)

Интеллектуа́льный ключ (англ. — intelligent key) — понятие теории реляционных баз данных, разновидность естественного ключа. Это ключ, который зависит от одного или более полей своей таблицы, и его значение формируется на основе значений этих полей.

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

Ключ Фамилия Имя Отчество
ТИА Таранов Иван Арнольдович
БСИ Бочкарёв Сергей Иванович

Особенности и недостатки

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

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

Кроме того, интеллектуальный ключ не всегда может гарантировать уникальность, например, если в вышеприведённую таблицу добавится следующая запись:

Ключ Фамилия Имя Отчество
ТИА Тихонов Игорь Алексеевич

Применение

На практике интеллектуальные ключи часто используются в качестве т.н. «магических кодов» — идентификаторов, в которые снесены определённые данные.

Например, идентификатор события «03-40123» в формате «FY-XNNNN», где:

FY = 2 цифры финансового года;

X = 1 цифра, задающая тип события;

NNNN = 4 цифры, задающие порядковый номер события данного типа в этом финансовом году.

Однако применении такого рода идентификаторов далеко не всегда оправдано по следующим причиним:

  1. Количество событий в году не более 10000
  2. Типов событий не более 10
  3. Две цифры для года — вспомним «проблему 2000»

Кроме того далеко не всегда существует необходимость узнать значения атрибутов записи непосредственно из её ключа. Хотя последний случай и не исключается, например в случае использования индексов на основе битовых карт (bitmap-индексов, англ. bitmap index).

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

Просмотр этого шаблона Базы данных
Концепции Модель данных • Реляционная (модельалгебраНормальная формаСсылочная целостностьБДСУБД) • Иерархическая модель • Сетевая (модельСУБД) • Объектно-ориентированная (БДСУБД) • ТранзакцияЖурнализацияСекционирование
Объекты Отношение (таблица)ПредставлениеХранимая процедураТриггерКурсорИндекс
Ключи ПотенциальныйПервичныйВнешнийЕстественныйСуррогатный (искусственный) • Суперключ
SQL SELECTINSERTUPDATEMERGEDELETETRUNCATEJOINUNIONINTERSECT • EXCEPT • CREATE • ALTER • DROP • GRANT • COMMITROLLBACK
СУБД IMSDB2InformixOracle DatabaseMicrosoft SQL ServerAdaptive Server EnterpriseTeradata DatabaseFirebirdPostgreSQLMySQLSQLiteMicrosoft AccessVisual FoxProЛИНТЕРCouchDBMongoDB
Компоненты Язык запросовОптимизатор запросовПлан выполнения запросаODBCADOADO.NETJDBC