Раздел: CronosPRO Дата редакции: 26.12.2012 id статьи: 1332

Типы идентификации в «CronosPRO»

Тип идентификации определяет правила сопоставления вводимой и хранимой в базе информации, а также дальнейшее поведение системы при обнаружении идентичных записей.
Этот параметр определяется в окне «Свойства базы» (ПроектированиеСтруктуры банка данных), во вкладке «Идентификация» (рис. 1).
Проектирование структуры банка данных. свойства выбранной базы. Вкладка идетификация
Рис. 1. Проектирование структуры банка данных. Свойства выбранной базы. Вкладка «Идентификация»

Первый тип: Без идентификации (установлен по-умолчанию)

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

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

Обратите внимание
  • Данный тип идентификации работает только при загрузке сообщений из входного банка в основной.
При выборе этого типа идентификации система будет загружать в основной банк только уникальные записи. Если запись входного банка не является уникальной (то есть совпадает с какой-либо записью основного банка), она будет отстранена от загрузки с выдачей информации об ошибке (рис. 2)
Загрузка сообщений (цепочек записей) из входного банка в основной. Сообщение об ошибке
Рис. 2. Загрузка сообщений (цепочек записей) из входного банка в основной. Оповещение об ошибке
В протокол загрузки будет записано следующее:
СООБЩЕНИЕ № 1
	Отстранена запись № 1 базы: “<ИМЯ_БАЗЫ>”
	при идентификации 2 типа по 0 набору с записью № 30722 основного банка.
	Значения полей в наборе у записей совпали,
----------------------------------------------------------------------------------
Обратите внимание
  • Информация во входном банке организована в виде сообщений. Каждое сообщение представляет собой набор взаимосвязанных записей, объединённых одной корневой записью. Если хотя бы одна из записей сообщения отстранена от загрузки, всё сообщение не будет загружено в основной банк.
  • Отстранённые от загрузки сообщения остаются во входном банке и после необходимой коррекции могут быть повторно загружены в основной банк данных.

Третий тип: Слияние при совпадении ключа

При сохранении/загрузке записи в банк, система проверяет наличие значений у полей, входящих в первый (№ «0») идентифицирующий набор. Если значения имеются у всех полей, входящих в идентифицирующий набор, система ищет в базе идентичные записи и пытается их объединить с сохраняемой/загружаемой записью.
Если значения имеются не у всех полей первого набора, система проверяет второй набор (№ 1). Если и в нём заполнены не все поля, то проверяется третий набор, и так далее (всего может быть до 10 наборов)
Обратите внимание
  • Если поле сохраняемой/загружаемой записи, входящее в идентифицирующий набор, имеет значение, одноимённое поле записи базы должно иметь такое же значение.
  • Если ни один из идентифицирующих наборов не будет заполнен, идентификация не будет запущена. Запись будет сохранена в базе под новым системным номером.

Четвертый тип: Слияние при совпадении с неполным ключом

В отличие от третьего типа идентификации, в базе с этим типом поля, входящие в идентифицирующий набор, могут быть пустыми.
Обратите внимание. Для слияния записей необходимо выполнение следующих условий:
  • Если поле сохраняемой/загружаемой записи, входящее в идентифицирующий набор, имеет значение, одноимённое поле записи базы должно иметь такое же значение.
  • Если поле сохраняемой/загружаемой записи, входящее в идентифицирующий набор, не имеет значения (пусто), одноимённое поле записи базы также должно быть пустым.
Если первый идентифицирующий набор не подошёл, система переходит к проверке на возможность слияния следующего набора. Система проверяет второй набор (№ 1). Если второй набор не подошёл, проверяется третий набор и так далее (всего может быть до 10 наборов).
Как это работает?
ПРИМЕР 1: Рассмотрим применение 3-го и 4-го типов идентификации для Базы А (рис. 3).
База А (корневая) 3-ий или 4-ый тип идентификации
База Б (подчинённая) 1-ый тип идентификации (Без идентификации)
Пример работы 3-го и 4-го типов идентификации для корневой базы (Базы А) в CronosPRO
Рис. 3. Пример работы 3-го и 4-го типов идентификации для корневой базы (Базы А) в «CronosPRO»
Обратите внимание
  • В подчинённой базе (Базе Б) две одинаковые записи остались. Это произошло потому, что идентификация проводится только для записей той базы, где она установлена! В данном случае, только для Базы А (рис. 3).
ПРИМЕР 2: Рассмотрим применение 3-го и 4-го типов идентификации для Базы Б (рис. 4).
База А (корневая) 1-ый тип идентификации (Без идентификации)
База Б (подчинённая) 3-ий или 4-ый тип идентификации
Пример работы 3-го и 4-го типов идентификации для подчинённой базы (Базы Б) в CronosPRO
Рис. 4. Пример работы 3-го и 4-го типов идентификации для подчинённой базы (Базы Б) в «CronosPRO»
ПРИМЕР 3: Рассмотрим применение 3-го и 4-го типов идентификации при создании новой записи в Базе Б (рис. 5).
База А (корневая) 1-ый тип идентификации (Без идентификации)
База Б (подчинённая) 3-ий или 4-ый тип идентификации
Пример работы 3-го и 4-го типов идентификации для подчинённой базы (Базы Б) при создании в ней новой записи в CronosPRO
Рис. 5. Пример работы 3-го и 4-го типов идентификации для подчинённой базы (Базы Б) при создании в ней новой записи
Обратите внимание
  • Две записи корневой базы (Базы А) связались с одной записью из подчинённой базы (Базы Б), т. к. новая запись в Базе Б полностью повторяет уже существующую запись (№ 1443). В таком случае записи будут объединены, а связи записей корневой базы перестроятся автоматически (рис. 5).

Пятый тип: Слияние подчиненных объектов

Этот тип идентификации устанавливается для связанных (подчинённых) баз. Подчинёнными называют базы, имеющие сложное поле «обратная ссылка».
При слиянии (или создании новых) записей в подчинённой базе система будет обращать внимание, с какими записями они связаны в корневой базе.
Обратите внимание
  • Для 5-го типа идентификации не требуется ни один идентифицирующий набор. Помеченные в идентифицирующих наборах поля будут игнорироваться системой.
  • Слияние записей по 5-ому типу произойдёт, если все поля записей будут идентичны вплоть до символа.
Как это работает?
ПРИМЕР 4: Рассмотрим применение 5-го типа идентификации при создании новой записи в Базе Б (рис. 6).
База А (корневая) 1-ый тип идентификации (Без идентификации)
База Б (подчинённая) 5-ый тип идентификации
Пример создания новой записи в подчинённой базе при 5-ом типе идентификации
Рис. 6. Пример создания новой записи в подчинённой базе при 5-ом типе идентификации
Обратите внимание
  • В отличие от 3-го или 4-го типов идентификации (ПРИМЕР 3), новая запись не была объединена с существующей (не смотря на то, что информация в них одинакова), т. к. новая и существующая записи связаны с разными записями в Базе А.
ПРИМЕР 5: Рассмотрим применение 5-го типа идентификации в случае, когда пользователь пытается создать две одинаковые записи в Базе Б, связанные с одной записью в Базе А (рис. 7).
База А (корневая) 1-ый тип идентификации (Без идентификации)
База Б (подчинённая) 5-ый тип идентификации
Пример создания 2-х одинаковых записей в подчинённой базе при 5-ом типе идентификации
Рис. 7. Пример создания 2-х одинаковых записей в подчинённой базе при 5-ом типе идентификации
Обратите внимание
  • Две записи в Базе Б (новая и существующая) считаются одинаковыми, т. к. информация в них идентична (с точностью до символа) и обе записи имеют связь с одной записью из базы А. Такие записи будут объединены в одну.

Шестой тип: Слияние связанных объектов (доступен с версии 6.3)

Предназначен для использования в массовых операциях (обмен/импорт). Слияние записей происходит при совпадении полей не только в корневой записи, но и в связанной записи (если поля связанной записи входят в идентифицирующий набор). В общем случае этот тип можно считать расширенным вариантом третьего типа идентификации (слияние при совпадении ключа). Различие между ними заключается в следующем: при совпадении идентифицирующих наборов выполняется слияние записей в каждой из баз, включённых в идентифицирующий набор (а не только записей корневой базы набора).
Обратите внимание
  • Если в идентифицирующий набор входят поля только одной базы, то сопоставление и слияние записей по шестому типу идентификации выполняются точно так же, как при использовании третьего типа идентификации.
  • Базы, связанные с корневой базой набора, могут иметь любой тип идентификации. Это не оказывает влияния на возможность включения их полей в идентифицирующий набор (наборы) корневой базы.
  • В ходе идентификации система сначала сопоставляет входную запись корневой базы набора с соответствующей записью банка данных. Если записи идентичны (значения полей, входящих в идентифицирующий набор, совпадают), система приступает к сопоставлению записей подчиненных баз. Сопоставление записей подчиненных баз выполняется по тем же правилам, что и записей корневой базы набора. Если в каждой подчиненной базе установлена идентичность хотя бы одной записи, идентификация считается успешной и система переходит к слиянию записей.
ПРИМЕР 6: Рассмотрим использование шестого типа идентификации на следующем примере. Пусть в структуру банка данных входят две связанные базы: «Лицо» и «Документ» (рис. 7).
Шестой тип идентификации. Пример структуры банка
Рис. 7. Шестой тип идентификации. Пример структуры банка
База «Лицо» имеет шестой тип идентификации и, соответственно, является корневой базой идентифицирующего набора. База «Документ» в наборе является подчинённой. В идентифицирующий набор входят следующие поля (см. таб.1).
База Поле
Лицо Фамилия
Имя
Отчество
Документ Вид документа
Серия и номер
Таблица. 1. Структура банка. Поля входящие в идентифицирующий набор
На рис. 8 проиллюстрирован процесс идентификации по шестому типу двух записей базы «Лицо», с каждой из которых связано по две записи базы «Документ». Для наглядности поля, входящие в идентифицирующий набор, выделены красным цветом.
Идентификация по шестому типу с последующим слиянием записей
Рис. 8. Идентификация по шестому типу с последующим слиянием записей


Одновременная идентификация в двух базах

ПРИМЕР 7: Рассмотрим пример одновременной идентификации в двух базах.
База А (корневая) 3-ий или 4-ый тип идентификации
База Б (подчинённая) 5-ый тип идентификации
Предположим, что в результате изменения полей записи № 11, в Базе А появились две абсолютно одинаковые записи (№ 11 и № 131). При слиянии записей в корневой базе (Базе А) система выполнит попытку слияния связанных записей в подчинённой базе (рис. 10).
Пример одновременной идентификации в 2-х базах
Рис. 10. Пример одновременной идентификации в двух базах