Информационная поддержка планирования и учета учебной работы по балльно-рейтинговой системе, страница 18

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

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

Остановимся на особенностях реализации некоторых типичных реестров.

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

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

Синхронизация реестра пользователей включает два этапа: изменение охватывающей базы по первичным данным и изменение первичного экземпляра реестра по данным в охватывающей базе.

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

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