Интеллектуальный ключ | это... Что такое Интеллектуальный ключ? (original) (raw)
Интеллектуа́льный ключ (англ. — intelligent key) — понятие теории реляционных баз данных, разновидность естественного ключа. Это ключ, который зависит от одного или более полей своей таблицы, и его значение формируется на основе значений этих полей.
Например, мы можем сформировать 3-х символьный интеллектуальный ключ для таблицы персонала из первых букв фамилии, имени и отчества сотрудников.
Ключ | Фамилия | Имя | Отчество |
---|---|---|---|
ТИА | Таранов | Иван | Арнольдович |
БСИ | Бочкарёв | Сергей | Иванович |
Особенности и недостатки
По сути, интеллектуальный ключ является естественным составным ключом (см. первичный ключ) и поэтому ему присущи все недостатки естественного ключа.
Главный недостаток интеллектуального ключа состоит в том, что если изменяются значения полей таблицы, от которых ключ зависит, то сам интеллектуальный ключ либо останется неизменённым, что приведёт к рассогласованности данных, либо также должен быть изменён, как в своей собственной таблице, так и во всех других таблицах, в которых он используется как внешний ключ.
Кроме того, интеллектуальный ключ не всегда может гарантировать уникальность, например, если в вышеприведённую таблицу добавится следующая запись:
Ключ | Фамилия | Имя | Отчество |
---|---|---|---|
ТИА | Тихонов | Игорь | Алексеевич |
Применение
На практике интеллектуальные ключи часто используются в качестве т.н. «магических кодов» — идентификаторов, в которые снесены определённые данные.
Например, идентификатор события «03-40123» в формате «FY-XNNNN», где:
FY = 2 цифры финансового года;
X = 1 цифра, задающая тип события;
NNNN = 4 цифры, задающие порядковый номер события данного типа в этом финансовом году.
Однако применении такого рода идентификаторов далеко не всегда оправдано по следующим причиним:
- Если при вводе данных произошла ошибка, и ключ оказался неверным (например, событие было типа 3, а не 4), то в системе это событие уже известно как «03-40123». Для исправления ситуации необходимы будут каскадные изменения данных.
- В систему вносятся ограничения, основанные на предположениях о максимальных значениях полей:
- Количество событий в году не более 10000
- Типов событий не более 10
- Две цифры для года — вспомним «проблему 2000»
- Такие ключи неудобно реализовывать
Кроме того далеко не всегда существует необходимость узнать значения атрибутов записи непосредственно из её ключа. Хотя последний случай и не исключается, например в случае использования индексов на основе битовых карт (bitmap-индексов, англ. bitmap index).
Один из способов решения вышеперечисленных проблем — использование суррогатных ключей.
Базы данных | |
---|---|
Концепции | Модель данных • Реляционная (модель • алгебра • Нормальная форма • Ссылочная целостность • БД • СУБД) • Иерархическая модель • Сетевая (модель • СУБД) • Объектно-ориентированная (БД • СУБД) • Транзакция • Журнализация • Секционирование |
Объекты | Отношение (таблица) • Представление • Хранимая процедура • Триггер • Курсор • Индекс |
Ключи | Потенциальный • Первичный • Внешний • Естественный • Суррогатный (искусственный) • Суперключ |
SQL | SELECT • INSERT • UPDATE • MERGE • DELETE • TRUNCATE • JOIN • UNION • INTERSECT • EXCEPT • CREATE • ALTER • DROP • GRANT • COMMIT • ROLLBACK |
СУБД | IMS • DB2 • Informix • Oracle Database • Microsoft SQL Server • Adaptive Server Enterprise • Teradata Database • Firebird • PostgreSQL • MySQL • SQLite • Microsoft Access • Visual FoxPro • ЛИНТЕР • CouchDB • MongoDB |
Компоненты | Язык запросов • Оптимизатор запросов • План выполнения запроса • ODBC • ADO • ADO.NET • JDBC |