Обработка запросов к объектному представлению реляционной базы данных (начало)
Нужен дешевый хостинг в Украине? Выбирайте хостинг от Абрис-Ком. Выгодные условия, широкие возможности.
Структура реляционной базы данных (РБД) описывает сущности реального мира из некоторой предметной области и их свойства. Ее сложность зависит от степени детализации этого описания, которая определяется кругом решаемых в информационной системе (ИС) задач и степенью ее развития. В развитых ИС структура РБД сложна для восприятия человеком из-за большого количества таблиц, полей, связей между таблицами, наличия неинформативных полей, а также несоответствия названий таблиц и полей общепринятой терминологии предметной области. Составление SQL-запросов, объединяющих несколько таблиц, приводит к необходимости выполнения множества действий по поиску связей между таблицами, определяемых первичными и внешними ключами. Эти вспомогательные действия не ведут непосредственно к решению поставленной задачи и потому их выполнение является непроизводительной затратой времени при составлении запросов к РБД прикладными программистами.
Для сокращения времени на составление запросов путем предоставления актуальной справочной информации по структуре РБД в удобной для прикладного программиста форме предлагается использовать объектное представление РБД, имеющее иерархический вид, поддерживающее связи между объектами и таблицами, скрывающее несущественную информацию и использующую понятные названия для объектов и их атрибутов из предметной области, соответствующей РБД. Информация, описывающая объектное представление, размещается в объектном словаре данных (ОСД), а модификация исходной РБД не требуется.
Объектное представление содержит всю необходимую информацию для того, чтобы прикладной программист мог не только получить доступ к структуре РБД, но и оперировать данными, представленными в виде объектов, поэтому целесообразной является разработка методики и средств, позволяющих использовать объектное представление для выполнения запросов к РБД.
Специализированный язык запросов. Доступ к данным может быть организован с помощью специализированного языка запросов, учитывающего особенности объектного представления РБД. Задача разработки нового языка запросов осложняется необходимостью построения математической базы в качестве его основы и значительными временными затратами на обучение программистов новому языку. Однако, существование соответствия между объектами и таблицам, атрибутами и полям таблиц позволяет выполнять обработку данных, представленных в виде объектов, в рамках реляционной алгебры, поэтому для оперирования данными предлагается использовать язык запросов, близкий к SQL, но модифицированный с учетом особенностей объектного представления. Сходство такого языка с SQL минимизирует затраты времени прикладных программистов, хорошо знакомым с SQL, на ознакомление с ним.
Применение объектного представления РБД вносит следующие особенности в оформление запросов, сохраняя их общий синтаксис:
- в SQL-запросе указываются названия полей таблиц, а в запросе к объектному представлению — названия атрибутов объектов, которые формируются следующим образом: 1) атрибут, принадлежащий объекту на верхнем уровне иерархии объектов (т.е. основному объекту), идентифицируется сочетанием названия объекта и названия атрибута (например, Личность.имя); 2) атрибут, принадлежащий объекту на более глубоком уровне иерархии (т.е. вспомогательному объекту), идентифицируется сочетанием названий всех объектов на пути от объекта верхнего уровня иерархии к объекту, которому он непосредственно принадлежит, и названием атрибута (например, Лич-ность.Работа.Должность.код);
- в SQL-запросе типа SELECT, объединяющем несколько таблиц с условием объединения по равенству первичных и внешних ключей, требуется указывать это условие в разделе WHERE, а список соответствующих таблиц в разделе FROM, а в соответствующем ему запросе, объединяющем несколько объектов, данное условие и раздел FROM не указываются, т.к. условие объединения хранится в ОСД и будет добавлено к существующему разделу WHERE, а список таблиц в разделе FROM будет сформирован автоматически на этапе обработки запроса.
Из четырех основных типов SQL-запросов, оперирующих данными в таблицах РБД (запросы типа SELECT, INSERT, UPDATE и DELETE — выборка, вставка, обновление и удаление данных соответственно), наибольший интерес представляет запрос типа SELECT, т.к. он имеет наибольшее количество различных способов использования и в прикладных задачах встречается чаще всего. Кроме того, его различные формы могут присутствовать в качестве подзапросов в запросах других типов, поэтому методика обработки запроса к объектному представлению, позволяющая выполнять его в обычной СУБД, будет рассмотрена на примере запроса типа SELECT.