| Раздел: 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. Пример работы 3-го и 4-го типов идентификации для корневой базы (Базы А) в «CronosPRO»
Обратите внимание
- В подчинённой базе (Базе Б) две одинаковые записи остались. Это произошло потому, что идентификация проводится только для записей той базы, где она установлена! В данном случае, только для Базы А (рис. 3).
ПРИМЕР 2: Рассмотрим применение 3-го и 4-го типов идентификации для Базы Б (рис. 4).
| База А (корневая) | 1-ый тип идентификации (Без идентификации) |
| База Б (подчинённая) | 3-ий или 4-ый тип идентификации |
Рис. 4. Пример работы 3-го и 4-го типов идентификации для подчинённой базы (Базы Б) в «CronosPRO»
ПРИМЕР 3: Рассмотрим применение 3-го и 4-го типов идентификации при создании новой записи в Базе Б (рис. 5).
| База А (корневая) | 1-ый тип идентификации (Без идентификации) |
| База Б (подчинённая) | 3-ий или 4-ый тип идентификации |
Рис. 5. Пример работы 3-го и 4-го типов идентификации для подчинённой базы (Базы Б) при создании в ней новой записи
Обратите внимание
- Две записи корневой базы (Базы А) связались с одной записью из подчинённой базы (Базы Б), т. к. новая запись в Базе Б полностью повторяет уже существующую запись (№ 1443). В таком случае записи будут объединены, а связи записей корневой базы перестроятся автоматически (рис. 5).
Пятый тип: Слияние подчиненных объектов
Этот тип идентификации устанавливается для связанных (подчинённых) баз. Подчинёнными называют базы, имеющие сложное поле «обратная ссылка».
При слиянии (или создании новых) записей в подчинённой базе система будет обращать внимание, с какими записями они связаны в корневой базе.
Обратите внимание
- Для 5-го типа идентификации не требуется ни один идентифицирующий набор. Помеченные в идентифицирующих наборах поля будут игнорироваться системой.
- Слияние записей по 5-ому типу произойдёт, если все поля записей будут идентичны вплоть до символа.
Как это работает?
ПРИМЕР 4: Рассмотрим применение 5-го типа идентификации при создании новой записи в Базе Б (рис. 6).
| База А (корневая) | 1-ый тип идентификации (Без идентификации) |
| База Б (подчинённая) | 5-ый тип идентификации |
Рис. 6. Пример создания новой записи в подчинённой базе при 5-ом типе идентификации
Обратите внимание
- В отличие от 3-го или 4-го типов идентификации (ПРИМЕР 3), новая запись не была объединена с существующей (не смотря на то, что информация в них одинакова), т. к. новая и существующая записи связаны с разными записями в Базе А.
ПРИМЕР 5: Рассмотрим применение 5-го типа идентификации в случае, когда пользователь пытается создать две
одинаковые записи в Базе Б, связанные с одной записью в Базе А (рис. 7).
| База А (корневая) | 1-ый тип идентификации (Без идентификации) |
| База Б (подчинённая) | 5-ый тип идентификации |
Рис. 7. Пример создания 2-х одинаковых записей в подчинённой базе при 5-ом типе идентификации
Обратите внимание
- Две записи в Базе Б (новая и существующая) считаются одинаковыми, т. к. информация в них идентична (с точностью до символа) и обе записи имеют связь с одной записью из базы А. Такие записи будут объединены в одну.
Шестой тип: Слияние связанных объектов (доступен с версии 6.3)
Предназначен для использования в массовых операциях (обмен/импорт). Слияние записей происходит при совпадении полей не только в корневой записи, но и в связанной записи (если поля связанной записи входят в идентифицирующий набор). В общем случае этот тип можно считать расширенным вариантом третьего типа идентификации (слияние при совпадении ключа). Различие между ними заключается в следующем:
при совпадении идентифицирующих наборов выполняется слияние записей в каждой из баз, включённых в идентифицирующий набор (а не только записей корневой базы набора).
Обратите внимание
- Если в идентифицирующий набор входят поля только одной базы, то сопоставление и слияние записей по шестому типу идентификации выполняются точно так же, как при использовании третьего типа идентификации.
- Базы, связанные с корневой базой набора, могут иметь любой тип идентификации. Это не оказывает влияния на возможность включения их полей в идентифицирующий набор (наборы) корневой базы.
- В ходе идентификации система сначала сопоставляет входную запись корневой базы набора с соответствующей записью банка данных. Если записи идентичны (значения полей, входящих в идентифицирующий набор, совпадают), система приступает к сопоставлению записей подчиненных баз. Сопоставление записей подчиненных баз выполняется по тем же правилам, что и записей корневой базы набора. Если в каждой подчиненной базе установлена идентичность хотя бы одной записи, идентификация считается успешной и система переходит к слиянию записей.
ПРИМЕР 6: Рассмотрим использование шестого типа идентификации на следующем примере. Пусть в структуру банка данных входят две связанные базы: «Лицо» и «Документ» (рис. 7).
Рис. 7. Шестой тип идентификации. Пример структуры банка
База «Лицо» имеет шестой тип идентификации и, соответственно, является корневой базой идентифицирующего набора. База «Документ» в наборе является подчинённой. В идентифицирующий набор входят следующие поля (см. таб.1).
| База | Поле |
| Лицо | Фамилия |
| Имя | |
| Отчество | |
| Документ | Вид документа |
| Серия и номер |
Таблица. 1. Структура банка. Поля входящие в идентифицирующий набор
На рис. 8 проиллюстрирован процесс идентификации по шестому типу двух записей базы «Лицо», с каждой из которых связано по две записи базы «Документ». Для наглядности поля, входящие в идентифицирующий набор, выделены красным цветом.
Рис. 8. Идентификация по шестому типу с последующим слиянием записей
Одновременная идентификация в двух базах
ПРИМЕР 7: Рассмотрим пример одновременной идентификации в двух базах.
| База А (корневая) | 3-ий или 4-ый тип идентификации |
| База Б (подчинённая) | 5-ый тип идентификации |
Предположим, что в результате изменения полей записи № 11, в Базе А появились две абсолютно одинаковые записи (№ 11 и № 131).
При слиянии записей в корневой базе (Базе А) система выполнит попытку слияния связанных записей в подчинённой базе (рис. 10).
Рис. 10. Пример одновременной идентификации в двух базах
