Ввод Связанных Данных |
Средство ввода имеет код 14.
«
Под связанными данными понимаются данные, которые хранятся в других (по отношению к основной, т.е. той, которая находится в РЛ) записях. Такие записи (в которых хранятся связанные данные) будем называть Child-записями.
|
Child-записи |
- записи, в которых хранятся связанные данные.
•Child-записи содержат ЕДИНСТВЕННОЕ поле (метка которого не регламентируется);
•единственное поле Child-записи должно иметь следующую структуру данных:
<КЛЮЧ><подполе_1><подполе_2>.....<подполе_n>
где КЛЮЧ - данные, связывающие основную запись и Child-запись и не доступные для корректировки; подполя имеют стандартную структуру:
^X<данные подполя> и не могут повторяться.
•формально Child-записи могут храниться в любых БД, но рекомендуется размещать их в отдельных (специально предназначенных для этого) БД;
•для Child-записи в таблице инвертирования (таблице актуализации) соответствующей БД (т.е. той, в которой хранится Child-запись) должна быть предусмотрена обязательная инверсия КЛЮЧа (без каких-либо префиксов!):
mmm 0 Vmm^*
где mmm - метка поля Child-записи
•Child-записи не предназначены для автономной работы, т.е. формирование и корректировка Child-записей должна выполняться только при работе с основной записью на основе соответствующего режима ввода - ВВОД СВЯЗАННЫХ ДАННЫХ;
•в таблицах инвертирования (таблицах актуализации) основных БД (т.е. тех БД, в которых хранятся основные записи) допустимы обращения к данным Child-записей с помощью соответствующих форматных выходов (&uf('7...), &uf('D...));
•основная запись может быть связана с любым количеством Child-записей: как однородных (имеющих одинаковые метку и структуру данных), так и разнородных.
РЛ полей для основных записей |
ВВОД СВЯЗАННЫХ ДАННЫХ обеспечивает работу с группой однородных Child-записей и
описывается в структуре РЛ полей для основных записей следующим образом
(см. рис.: РЛ полей для ввода Связанных Записей):
МЕТКА = mmm
mmm – метка поля однородных Child-записей
ПОВТОРЯЕМОСТЬ = 0
РЕЖИМ ВВОДА = 99
ДОП.ИНФОРМАЦИЯ = <имя БД Child-записей>,<имя РЛ подполей>, <формат КЛЮЧА>
где:
<имя БД Child-записей> - имя БД, в которой хранятся Child-записи
<имя РЛ подполей> - имя РЛ подполей для ввода связанных данных (может находиться или в той же БД, где Child-записи, или в БД основных записей)
<формат КЛЮЧА> - формат формирования КЛЮЧА (т.е. КЛЮЧ формируется как результат форматирования основной записи по данному формату)
РЛ полей для ввода Связанных Записей.
Форма для ввода повторяющихся полей |
Собственно ввод связанных данных осуществляется с помощью формы, аналогичной табличной форме для ввода повторяющихся полей (см. рис. Форма для ввода Связанных Записей).
Правила: |
При вводе связанных данных необходимо соблюдать следующие правила:•Вводить (первоначально) связанные данные следует ПОСЛЕ ввода данных основной записи, на основе которых формируется КЛЮЧ, связывающий основную запись с Child-записями; •В случае изменения (корректировки) данных основной записи, на основе которых формируется КЛЮЧ, необходимо (хотя бы формально) вызывать на корректировку (т.е. нажимать соответствующую кнопку) связанные данные; •Для предотвращения «разрыва» связи между основной записью и Child-записями – в случае изменения данных, на основе которых формируется КЛЮЧ, - необходимо добавлять соответствующий контроль в ФЛК записи для основной БД.
|
Форма для ввода Связанных Записей.
В заключение следует отметить, что данное средство ввода – ВВОД СВЯЗАННЫХ ДАННЫХ – пока (на уровне 2013.1) не нашло реального применения в технологиях ИРБИС и адресовано на данный момент пользователям, ведущим собственные разработки.
Думается, опытные пользователи поймут причину и смысл появления данной разработки.
Он в том, чтобы «расшить» одно из принципиальных узких мест СУБД ИРБИС: неэффективная (замедленная) работа с записями, имеющими большое количество повторений одних и тех же полей (примеры: 330 и 910 поля в БД ЭК, 40 поле в БД RDR). Данная разработка позволяет хранить подобные данные в Child-записях, что должно существенно повышать эффективность работы с основными записями.
Желающим применить данную разработку самостоятельно могут быть переданы тестовые данные: примеры БД Child-записей, РЛ и ФЛК.
См. также: