па Queue позволяет эффективно управлять последовательностью записей фиксированной длины. Он использует механизмы блокировки и протоколирования, оптимизированные для работы в условиях интенсивного многопользовательского доступа к голове и хвосту очереди.
Метод Recno позволяет обрабатывать данные, хранимые в виде записей фиксированной и переменной длины. Он автоматически генерирует номера записей, начиная с единицы. Имеется возможность задать системе автоматическую перенумерацию записей после добавления или удаления записей с меньшими номерами, что позволяет поддерживать плотный список номеров и вставлять данные между существующими записями.
Таким образом, в современных СУБД используются методы доступа, организованные преимущественно на основе В- или В+-деревьев. Использование деревьев обусловлено предположением равновероятного доступа к любым данным и незначительным ростом высоты дерева при увеличении количества данных. Как известно, в В-деревьях время доступа к данным и сложность их обработки имеют логарифмическую зависимость, что дает им преимущество по сравнению с линейными структурами данных. Однако часто такое предположение неверно. Поэтому в механизмах хранения применяются комбинированные методы до-
ступа, использующие преимущества других структур данных: множеств, последовательностей, хеш-таблиц и т. д. для достижения высокой производительности необходимо явным образом задавать (настраивать) параметры конфигурации. АБД может изменять размеры страниц, файлов данных, буфера (кэша) и др. параметры, специфичные для каждой ФСД. Замена одних структур другими возможна, но она также выполняется человеком. Для этого создается новая ФСД, в которую копируются данные из исходной структуры. После чего исходная структура удаляется.
список литературы
1. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979. 536 с.
2. Кнут Д. Искусство программирования на ЭВМ: сортировка и поиск. Т. 3. М.: Мир, 1978. 844 с.
3. Мартин Дж. Организация баз данных в вычислительных системах. М: Мир, 1980. 662 с.
4. Дрождин В. В. Организация адаптивного индекса // Математика и информатика: Межвузовский сборник. Пенза: ПГПУ, 1996. С. 80-85.
5. Ордынцев В. М. Системы автоматизации экспериментальных научных исследований. М.: Машиностроение, 1984. 328 с.
6. MySQL. Руководство администратора. М.: Издательский дом «Вильямс», 2005. 624 с.
УДК 681.3
модификация системы 8ЦЬ-злпросов при изменении пользовательского объектного представления предметной области
В. В. ДРОЖДИН, Р. Е. ЗИНЧЕНКО Пензенский государственный педагогический университет имени В. Г. Белинского кафедра прикладной математики и информатики
Рассмотрена проблема изменения системы базовых SQL-запросов, поддерживающих объектное представление предметной области, при изменении пользовательских представлений и предложен алгоритм автоматической генерации базовых запросов.
При создании автоматизированных информационных систем (АИС), способных самостоятельно поддерживать внешние (пользовательские) представления предметной области (ПО) необходимо дать системе метод (алгоритм), с помощью которого она сможет автоматически приводить в корректное состояние структуру базы данных (БД) и систему базовых SQL-запросов, отображающих пользовательские представления объектов ПО в БД.
В качестве примера рассмотрим предметную область “Университет”, включающую специальности, которым обучаются в университетах. Предположим, что абитуриент решил поступить на математическую специальность некоторого вуза. Поэтому для данного абитуриента имеет ценность информация о вузах и предлагаемых ими математических специальностях. Внешнее представление пользователя состоит из двух
сложных понятий “вуз” и “специальность”, содержащих элементарные (простые) понятия: название, адрес, ректор, код, квалификация, и выглядит следующим образом:
вуз (название, адрес, ректор)
специальность (вуз, название, код, квалификация)
При этом “название” в объекте “вуз” является название вуза, а “название” в объекте “специальность” -название специальности. Свойство (атрибут) “вуз” в объекте “специальность” является ссылкой на объект “вуз” и указывает, что все свойства объекта “вуз” включаются в объект “специальность”.
Построим информационную модель ПО в форме ЕИ-модели.
Примем соглашения: 1) название первичного ключа отношения должно совпадать с названием
отношения; 2) название внешнего ключа отношения должно совпадать с атрибутом, на который ссылается данный внешний ключ; 3) все атрибу-
ты отношений, имеющие различную семантику, должны иметь уникальные названия на уровне всей схемы.
*Примечание: схема не нормализована.
Чтобы получить информацию о всех математических специальностях всех университетов, необходимо произвести операцию естественного соединения таблиц UNIVERSITY (Университеты) и SPECIALITY (Специальности) и наложить условие на название специальности:
UNIVERSITY JOIN SPECIALITY
AND lower(SPECIALITY.SPCLT_NAME) LIKE
“%матем%”
В результате выполнения данной операции получим таблицу вида:
Таблица1
Университет. Название Университет. Адрес Университет. Ректор специальность. название Специальность. Код специальность. Квалификация
ПГПУ Пенза Казаков «Математика и информатика» 0100253 Учитель математики и информатики
ПГПУ Пенза Казаков «Математическое обеспечение и администрирование локальных сетей» 03297 математик- программист
ПГПУ Пенза Казаков «Математика и физика» 072413 Учитель математики и физики
МГУ Москва Садовничий «Математика и информатика» 0100253 бакалавр
Проанализировав результирующую таблицу, абитуриент видит, что, например, в ПГПУ существует несколько математических специальностей. Поэтому для того, чтобы сделать однозначный выбор специальности для абитуриента недостаточно понятий в существующем пользовательском представлении «университет-специальность». Данное представление перестало являться для абитуриента адекватным
с точки зрения выбора им специальности. Поэтому абитуриент, логично рассудив, что университет состоит из факультетов, а на факультетах производится обучение соответствующим специальностям, меняет собственное представление, добавив к существующим понятиям новое - «факультет». Теперь представление пользователя состоит из трех понятий и выглядит следующим образом:
Университет (название, адрес, ректор) Факультет (университет, название, декан) Специальность (факультет, название, код, квалификация)
Построим информационную модель предметной области.
Чтобы получить информацию обо всех математических специальностях всех университетов, необхо-
димо произвести операции естественного соединения таблиц UNIVERSITY (Университеты), FACULTY (Факультеты) и SPECIALITY (Специальности) и наложить условие на название специальности:
"Примечание: схема не нормализована.
UNIVERSITY JOIN FACULTY AND FACULTY JOIN SPECIALITY AND lower(SPECIALITY.SPCLT_NAME) LIKE “%матем%”
Учитывая принятые выше соглашения, запишем операцию естественного соединения в краткой форме: UNIVERSITY JOIN FACULTY JOIN SPECIALITY AND lower(SPECIALITY.SPCLT_NAME) LIKE “%матем%”
В результате получим таблицу 2.
Таблица 2
Университет. Название Университет. Адрес Университет. Ректор специальность. название Специальность. Код специальность. Квалификация Факультет. Название
ПГПУ Пенза Казаков «Математика и информатика» 010253 Учитель математики и информатики ФМФ
ПГПУ Пенза Казаков «Математическое обеспечение и администрирование локальных сетей» 03297 математик- программист ФЭМИ
ПГПУ Пенза Казаков «Математика и физика» 072413 Учитель математики и физики ФМФ
МГУ Москва Садовничий «Математика и информатика» 010253 бакалавр Физико-мат. фак-т
Проанализировав результирующую таблицу, абитуриент видит, что, например, в ПГПУ обучение математическим специальностям ведется на двух факультетах: ФМФ (две специальности) и ФЭМИ (одна специальность).
Приведенный пример достаточно наглядно демонстрирует основную проблему существующих автоматизированных информационных систем: информационная система в определенный момент времени перестает отвечать требованиям пользователей, поскольку со временем происходит неизбежное изменение реального мира, а вместе с ним и представления пользователей о ПО. Однако в АИС модель ПО жестко заложена в структуру БД. Поэтому для дальнейшего использования АИС необходимо перепроектировать схему БД, изменить систему SQL-запросов и т. д.
С технической точки зрения, ключевыми являются два аспекта:
1) изменение схемы БД в соответствии с новым внешним представлением пользователя;
2) изменение системы SQL-запросов - приведение системы SQL-запросов в соответствие с новой схемой БД.
Создание АИС нового типа, способных самостоятельно решать указанные задачи позволит преодолеть недостатки существующих информационных систем.
Использование операции естественного соединения отношений с учетом приведенных выше соглашений позволяет эффективно переформулировать SQL-запросы при модификации схемы БД.
Например, пусть имеется схема БД:
Для того чтобы выбрать все S с учетом данных из A, необходимо выполнить операцию А JOIN S.
Допустим, схема претерпевает изменение вида:
Тогда чтобы выбрать все S с учетом данных из A, необходимо выполнить операцию
А JOIN К JOIN S.
Допустим, схема БД претерпевает дальнейшие изменения:
T A К D S P
T fch A b-. К Jj>-n D b-1 s P
IJ * T (FK) [ L* A (FK) j L_# К (FK) [ D (FK) [ !--# S (FK)
Тогда,
1) выборка информации о K с учетом данных из Т задается запросом:
T JOIN A JOIN K
2) выборка информации о P с учетом данных из Т задается запросом:
T JOIN A JOIN K JOIN D JOIN S JOIN P И так далее.
На языке SQL данные запросы выглядят следующим образом:
1) Select *
From T, A, K Where T.T = A.T
AND A.A = K.A
2) Select *
From T, A, K, D, S, P Where T.T = A.T AND A.A = K.A AND K.K = D.K AND D.D = S.D AND S.S = P.S
В общем случае получаем следующую схему базового SQL-запроса:
Select *
From X1, X2, X3, ... , Xn Where X1.X1 = X2.X1 AND X2.X2 = X3.X2
AND Xn-1.Xn-1 = Xn.Xn-1 Однако не все системы управления базами данных (СУБД) позволяют задавать имена атрибутов, совпадающие с именами отношений. В этом случае в качестве идентификатора отношения можно использовать атрибут с именем ID, а атрибут, ссылающийся на внешний ключ задавать в виде
ТАБЛИЦА_Ш. При этом базовый SQL-запрос будет иметь вид:
Select *
From X1, X2, X3, ... , Xn Where X1.ID = X2.X1_ID AND X2.ID = X3.X2 ID
AND Xn-1.ID = Xn.Xn-1_ID
Приведенные SQL-запросы на выборку данных допускают рекурсивную форму:
1) SELECT *
FROM T FULL JOIN A ON T.ID = A.T_ID
Обозначим соединение «T FULL JOIN A ON T.ID = A.T_ID» как JOIN#1.
Тогда:
2) SELECT *
FROM JOIN#1 FULL JOIN K ON A.ID = K.A_ID Обозначим соединение «JOIN#1 FULL JOIN K ON A.ID = K.A_ID» как JOIN#2. Тогда:
3) SELECT *
FROM JOIN#2 FULL JOIN D ON K.ID = D.K_ID и так далее.
При изменении пользовательского представления о ПО, кроме изменения запросов на выборку данных, требуются запросы на создание таблиц (отношений) для представления новых объектов в БД. SQL-запросы для создания таблиц задаются следующим образом:
CREATE TABLE T (
ID INTEGER CONSTRAINT TID PRIMARY KEY, )
CREATE TABLE A (
ID INTEGER CONSTRAINT AID PRIMARY
KEY,
T_ID INTEGER CONSTRAINT A_T_ID REFERENCES T,
)
или в общем виде:
CREATE TABLE X1 (
ID INTEGER CONSTRAINT X1ID PRIMARY
KEY,
)
CREATE TABLE X2 (
ID INTEGER CONSTRAINT X2ID PRIMARY
KEY,
X2_ID INTEGER CONSTRAINT X2_X1_ID REFERENCES T,
)
Приведем алгоритм построения системы базовых SQL-запросов для известного пользовательского представления ПО и заданной схемы БД. Исходными данными для алгоритма являются:
- объектное представление ПО;
- схема БД;
- набор таблиц БД для каждого объекта ПО. Алгоритм построения системы базовых SQL-запросов имеет следующий вид:
1) выбрать из множества объектов ПО минимальный сложный объект, которому соответствует сложное понятие, содержащее в своем составе только простые понятия (такой объект хотя бы один обязательно есть в любой ПО);
2) если выбранный объект представляется одной таблицей в БД, то создать базовый SQL-запрос на выборку данных из одной таблицы и перейти к п. 6, иначе перейти к п. 3;
3) среди таблиц, представляющих объект ПО, выбрать таблицу, не содержащую внешних ключей;
4) найти таблицы, ссылающиеся на таблицу из п. 3 и построить для каждой из них соединение типа JOIN#1;
5) найти таблицы, ссылающиеся на таблицы уже вошедшие в базовый SQL-запрос и построить для каждой из них соединение типа JOIN#2. П. 5 выполнять до тех пор, пока все таблицы, представляющие объект ПО, не будут включены в SQL-запрос;
6) выбрать из оставшегося множества объектов ПО минимальный объект, которому соответствует сложное понятие, содержащее в своем составе, как простые понятия, так и понятия с уже построенными базовыми SQL-запросами;
7) для выбранного объекта выполнить п. 2-5 (при выполнении п. 3 считать допустимыми таблицы, имеющими внешние ключи на таблицы уже вошедшие в базовые SQL-запросы);
8) п. 6-7 выполняются до тех пор, пока оставшееся множество объектов ПО не станет пустым.
Приведенный алгоритм формирует систему базовых SQL-запросов для всех объектов пользовательского представления ПО.
Предложенный метод создания отношений БД и модификации системы базовых SQL-запросов при изменении пользовательского представления ПО предоставляет эффективный алгоритм, позволяющий АИС автоматически поддерживать реализацию пользовательских представлений в БД.
УДК 681.3
ЭСКИЗ САМООРГАНИЗУЮЩЕЙСЯ СИСТЕМЫ
М. В. ЖУКОВ
Пензенский государственный педагогический университет имени В. Г. Белинского кафедра прикладной математики и информатики
Система - это совокупность элементов и отношений между ними, образующая единое целое.
В зависимости от стабильности существования во времени системы делятся:
1) статические системы существуют в неизменном состоянии сколь угодно долго;
2) динамические системы изменяют свое состояние в процессе существования, причем переход системы из одного состояния в другое не может совершаться мгновенно, а происходит в результате переходного процесса. Важной особенностью динамических систем является их предсказуемость, базирующаяся на причинно-следственных связях, т.е. зная начальное состояние системы и закон перехода системы из состояния в состояние можно определить в каком состоянии будет находиться система в любой другой момент времени.
Среди динамических высокоорганизованных систем различают адаптивные, обучаемые, самообучае-мые, самоорганизующиеся и развивающиеся системы:
1) адаптивной является система способная приспосабливаться к изменениям внешней среды и внутренней организации путем настройки своих параметров и изменения структуры. Адаптивная система обязательно накапливает информацию в процессе своего существования.
2) обучаемой является система способная получать информацию о закономерностях внешней среды и собственного поведения от внешнего источника (учителя) и использовать ее в дальнейшем функционировании;
3) самообучаемой является система способная самостоятельно выявлять закономерности поведения