Статья об идентификации

Введение

Идентификация является одним из важных элементов информационных систем, поскольку большая часть запросов к системам баз данных относится не к выборке некоторого набора  данных, ограниченного критериями, а на получение информации о конкретном объекте или экземпляре своего класса.

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

Идентификацией называется сопоставление(matching) внутреннего представления (информации) об объекте на основании внешних свойств объекта или представлений о нём. Объект может быть как материальным, так и нематериальным.

Также под идентификацией часто понимается назначение объектам уникального кода или идентификатора для целей последующего сопоставления.

Задача идентификации – наиболее быстро, однозначно и дешево сопоставить внешний объект с описанием объекта внутри информационной системы.
Соответственно, автоматическая идентификация объектов направлена на улучшение основных показателей задачи идентификации, а именно, на сокращение времени идентификации, на улучшение вероятности правильной идентификации и, как следствие, на удешевление идентификации за счет увеличения скорости идентификации и отказа от накладных расходов, которые приходятся на процесс идентификации.

В настоящий момент для автоматизированной идентификации физических объектов широко используются технологии штрихового кодирования, RFID-меток, пластиковых карт с магнитной полосой и распознавание текста (например, автомобильных номеров).

Описание процедуры идентификации

Процедура идентификации – это одна из составляющих единого процесса, который также включает:

—          Получение или регистрацию данных об объекте (фиксацию данных об объекте),

—          Получение идентификационных данных об объекте (распознание объекта),

—          Извлечение собственных данных об объекте либо получение данных из внешних систем по идентификационным данным.

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

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

Составляющей процедурой идентификации является доидентификация. В случае, если при поиске во внутренней базе по идентифицирующим свойствам присутствует несколько записей, в этом случае должно быть проведено выявление различий в свойствах найденных объектов. Соответственно, по различиям в свойствах объект должен быть доидентифицирован, то есть, получен один уникальный объект во внутренней базе по значениям уточненных свойств объекта. Таким образом, количество идентифицирующих свойств может быть увеличено новым идентифицирующим свойством или свойствами, которые позволяют получить уникальный объект при процедуре идентификации.

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

Регистрация данных об объекте

Процедура идентификации предполагает, что надо выделить один объект из некоторого однородного множества по его свойствам. Раз мы говорим про однородное множество, то в терминах информационных систем мы должны иметь ввиду хранение сериализованных данных, т.е. множества данных с одной и той же структурой свойств.

Реляционная модель (и, соответственно, реляционные базы данных) предлагают идеальное решение для этой задачи.

Структура данных реляционной модели предполагает соответствие описания объекта одной из нормальных форм. Применительно к процессу идентификации рассмотрим нормальные формы.

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

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

Третья нормальная форма говорит об отсутствии в таблице (сущности) производных полей от ключевых полей и не соотносится с процессом идентификации.

Нормальная форма Бойса-Кодда разделяет регистрацию идентификаторов для различных классов, т.е. определяет, что различные классы объектов могут соответствовать только определенному значению свойств идентификатора (первичного ключа).

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

Пятая нормальная форма предполагает определенность (непротиворечивость) в значении свойств объекта.

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

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

Свойства, которые не должны быть идентифицирующими

— назначенные, но не переданные объекту свойства (например, признак налогового резидента или нерезидента страны, вычисленные по количеству дней пребывания – сам объект может не знать, является ли он или не является налоговым резидентом),

— агрегирующие расчетные свойства, например, сумма выплат зарплаты за прошлый год не должны идентифицировать сотрудника (однако могут использоваться при выверках).

Использование внешних идентификаторов и назначение собственных идентификаторов

Суррогатный ключ – наилучший вариант для идентификации объекта, однако в этом случае сформированные значение суррогатного ключа должно быть передано объекту, и при идентификации объекта мы должны получить от него (от объекта) это значение. Это требование является существенным ограничением для использований суррогатных ключей. Однако назначение суррогатного ключа – это зачастую единственно возможное решение в случае, если объекты являются промышленно производимыми объектами с одинаковыми свойствами.

Альтернативным решением может быть использование уже назначенного общепринятого суррогатного ключа. Например, для автомобилей – это может быть государственный номер. При использовании внешнего идентификатора-суррогатного ключа его требуется тестировать на уникальность.

При назначении идентификаторов (суррогатных ключей) обычно применяются целые числа как счетчики либо случайные код с минимальной возможностью повторения (статистически уникальный – 3,4×10^38), например, GUID. Тем не менее, GUID, позволяя не отслеживать счетчик объектов, содержит достаточно большой код – 32 символа.

Классификация и идентификация

Зачастую задача идентификации сопутствует задаче классификации, когда уникальный код объекта включает в себя код класса объекта.

Процесс идентификации объекта состоит из нескольких шагов:

1)      Определение типа (класса) объекта по свойствам, определяющим класс (например, легковой автомобиль)

2)      Определение экземпляра объекта  по идентифицирующим свойствам

Часто через идентифицирующие свойства можно определить тип объекта (например, черные номера на машине означают военную машину), но (!) не наоборот (т.е. если у объекта есть vin, то это транспортное средство, но не у каждого автомобиля есть vin, например, если это индивидуальный экземпляр автомобиля).

Однако чаще идентифицирующие свойства привязываются к определенному типу объектов.

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

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

Упрощение

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

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

Де-идентификация

Существуют ситуации и условия, при которых объекты де-идентифицируются, другими словами, производится отказ от сопоставления объектов с внутренними записями.

В частности, такая ситуация происходит при учете запасов в компаниях на основе партионных методов учета. Компания закупает и получает запасы, одновременно с этим компания продает и отгружает эти же запасы. При поступлении запасы образуют партии запасов. На основе этих партий рассчитывается их себестоимость по моделям FIFO, LIFO или средневзвешенной стоимости. При учете по модели FIFO (первый поступил – первый убыл) с точки зрения себестоимости считается, что в первую очередь продаются товары из первой поступившей партии. Однако с точки зрения физического или складского учета компания может отгружать товары из любых партий.

Аналогичная ситуация бывает при учете основных средств в гостинице, где в каждом из, например, 200 номеров есть стол, стул, холодильник, телевизор и пр. Учет всех 200 стульев и столов ведется как единое основное средство, поскольку нет никакого смысла вести учет каждого стола и стула. В случае списания какого-либо стула, пропорциональная стоимость списывается с группового основного средства.

Анонимизация как намеренный отказ от идентификации может использоваться в этических целях, например, анонимные медицинские анализы, а также в случаях, когда идентификация не дает никакой пользы, например, нет смысла идентифицировать покупателей при мелких продажах.

© Александр Горбачев, 2013