Навигационный подход к манипулированию данными и персональные СУБД
Для пользовательского приложений, взаимодействующих с реляционными базами данных, очень важна обработка не реляционного отношения в целом, как множества неупорядоченных строк, а именно каждой отдельной строки. Для этого служат функции DB_next, DB_prev и прочие, позволяющие перемещаться по строкам. При этом возможен доступ к значениям полей только одной строки, той которая является "текущей". Такой подход к манипулированию данными, при котором пользователь (или его программа) явно различает "предыдущие" и "последующие" строки и может управлять перемещением указателя от одной строки к другой, получил название навигационного (напомним, что навигационный подход типичен для сетевых и иерархических СУБД).
Ясно, что без навигационного подхода при создании клиентского приложения обойтись невозможно, в то же время для взаимодействия с сервером базы данных предлагается язык SQL как более эффективный. Однако, существует ряд СУБД, в которых навигационный подход распространен и на манипулирование хранимыми данными. Такие системы (dBase, FoxPro, Paradox) появились в начале 80-х годов и были предназначены для создания небольших однопользовательских приложений.
Рассмотрим кратко язык xBase, который поддерживается такими СУБД как dBase, FoxPro, Clipper и, возможно, некоторыми другими. Помимо собственно процедурных операторов (цикл, условие и т.п.) он включает операторы создания пользовательского интерфейса (меню, окна, экранные формы,...). Для работы с данными служит следующий набор команд:
- USE <имя_таблицы> - открыть таблицу. При этом одна строка таблицы считается "текущей". К полям "текущей" строки можно обращаться по их именам.
- GO [ TOP | BOTTOM ] - сделать "текущей" первую / последнюю запись таблицы.
- SKIP - сделать текущей следующую запись.
- REPLACE <имя_столбца> WITH <значение> [,<имя_столбца> WITH <значение> ...] - изменить значения полей текущей записи
Существуют также команды экранного редактирования записей (EDIT, BROWSE), поиска данных в таблице (FIND) и другие. Приведем пример небольшой программы на языке xBase, которая распечатывает таблицу authors, а затем добаляет в нее новую строку:
USE AUTHORS /* Открыть таблицу authors */GO TOP /* Перейти на первую запись */DO WHILE .NOT.EOF() /* Выполнять цикл пока не будет достигнут конец таблицы */ PRINT AUTHOR /* Напечатать содержимое поля author */ SKIP /* Перейти на следующую запись */ENDDO /* Конец цикла */ APPEND BLANK /* Добавить пустую запись. Она автоматически становится текущей */REPLACE AU_ID WITH 90, AUTHOR WITH "L.Pinter" /* Изменить значения полей текущей записи */
Данные персональных СУБД хранятся в обычных файлах (как правило, каждая таблица в отдельном файле), средств описания ограничений целостности не существует. Следовательно, описание данных отделено от самих данных (находится в обрабатывающей программе), поэтому не гарантируется единый способ интерпретации данных для всех пользователей.
С развитием компьютерных сетей персональные СУБД стали переходить в разряд многопользовательских. При этом файлы данных размещались на разделяемом сетевом диске. Однако, создание достаточно больших приложений (10-20 одновременно работающих пользователей) показало, что в этом случае резко снижается производительность и возникают проблемы с поддержанием целостности (точнее с изоляцией пользователей, подробнее см. следующий параграф). Поэтому, в настоящее время практически все персональные СУБД дополнены средствами доступа к SQL-серверам (как правило, с использованием ODBC). Теперь они могут служить не только средством для создания небольших локальных приложений, но и для разработки клиентских рабочих мест в архитектуре "клиент-сервер".
Дата добавления: 2015-02-10; просмотров: 643;