Вопрос №3 Принципы проектирования информационного обеспечения программного комплекса

Вид материалаДокументы

Содержание


Вопрос №16. Уровни отображения данных в СУБД
Вопрос № 17 Языки общения с СУБД (SQL, QBE)
Подобный материал:
1   ...   5   6   7   8   9   10   11   12   ...   28

Вопрос №16. Уровни отображения данных в СУБД


В процессе проектирования информационных систем принято выделять четыре уровня восприятия и отображения информации предметной области:
  • инфологический уровень;
  • концептуальный уровень;
  • внешний уровень;
  • внутренний уровень.

Каждому уровню соответствует модель данных, которая специфицируется с помощью языка описания данного уровня. Модель каждого уровня, представленную на языке описания, принято называть схемой:

В зависимости от уровня представления информации различают следующие типы схем:
  • инфологическая схема, дающая общее информационно-логическое представление о предметной области (общее описание протекания информационных процессов в предметной области);
  • концептуальная схема, описывающая информацию о предметной области в терминах (концептах) конкретной СУБД (общее описание протекания информационных процессов в предметной области, отображенное средствами конкретной СУБД);
  • внешняя схема, представляющая информацию о предметной области для прикладных программ и пользователей системы (частный взгляд пользователя на информационные процессы в предметной области, через концепты конкретной СУБД);
  • внутренняя схема, характеризующая физический уровень представления информации и показывающая каким образом функционируют информационные процессы предметной области на аппаратных средствах конкретной ЭВМ и СУБД.

Таким образом, инфологический уровень предусматривает создание инфологической модели данных предметной области, независящей от каких-либо характеристик СУБД, в которой будет реализован проект. Концептуальный уровень предполагает создание концептуальной модели, в которой из инфологической модели удаляются (или преобразуются) элементы, которые не могут быть реализованы в СУБД, выбранной в качестве целевой. Внешний уровень формирует индивидуальные представления о хранимой информации для пользователей системы с помощью специального языка (обычно это SQL – Structured Query Language или QBE – Query By Example). Внутренний уровень преобразует концептуальную модель в физическую модель, предназначенную для реализации (хранения в виде баз данных и таблиц) в среде конкретной целевой СУБД.

Вопрос № 17 Языки общения с СУБД (SQL, QBE)


SQL

SQL, или язык структурированных запросов, - на сегодняшний день наиболее важный из языков манипулирования реляционными данными. Он рекомендован Американским национальным институтом стандартов (ANSI) в качестве стандартного языка манипулирования реляционными базами данных и используется как язык доступа к данным многими коммерческими СУБД, включая DB2, SQL/DS, Oracle, INGRES, SYBASE, SQL Server, dBase for Windows, Paradox, Microsoft Access и многие другие. Благодаря своей популярности SQL стал стандартным языком для обмена информацией между компьютерами. Поскольку существует версия SQL, которая может работать почти на любом компьютере и операционной системе, компьютерные системы способны обмениваться данными, передавая друг другу запросы и ответы на языке SQL.

Разработка SQL начиналась в середине 70-х годов в исследовательском центре IBM в Сан-Хосе, и изначально язык носил название SEQUEL. В 1980 г. продукт был переименован в SQL. С тех пор, помимо IBM, многие производители присоединились к разработке программных продуктов для SQL. Институт ANSI взял на себя работу по поддержке SQL и периодически публикует обновленные версии стандарта SQL (например, SQL89, SQL92, SQL3).

Конструкции и выражения в конкретной реализации SQL (например, в Oracle или SQL Server) могут немного отличаться от ANSI-стандарта. Частично это обусловлено тем, что многие коммерческие СУБД были разработаны до того, как появилось соглашение о стандарте, а также тем, что производители закладывали в свои продукты дополнительные возможности с целью получить преимущество в конкурентной борьбе.

Команды языка SQL могут использоваться интерактивно как язык запросов, а также могут быть встроены в прикладные программы. Таким образом, SQL не является языком программирования (как, например, COBOL); он скорее представляет собой подъязык данных (data sublanguage) или язык доступа к данным (data access language), встраиваемый в другие языки.

SQL – это язык, ориентированный на преобразования, который принимает на вход одно или несколько отношений и выдает на выходе одно отношение. Результат каждого SQL-запроса представляет собой отношение; даже, если результатом является отдельное число, это число считается отношением, у которого одна строка и один столбец. Таким образом, подобно реляционной алгебре, язык SQL является замкнутым.

QBE


Язык QBE позволяет задавать сложные запросы к БД путем заполнения предлагаемой СУБД запросной формы. Такой способ задания запросов обеспечивает высокую наглядность и не требует указания алгоритма выполнения операции — достаточно описать образец ожидаемого результата. В каждой из современных реляционных СУБД имеется свой вариант языка QBE.

С помощью языка QBE можно задавать запросы однотабличные и многотабличные (выбирающие или обрабатывающие данные из нескольких связанных таблиц).

При задании запросов с помощью языка QBE допустимы следующие операции: выборка, вычисление и модификация данных; вставка и удаление записей. Результатом выполнения запроса может быть новая таблица или обновленная исходная таблица. Выборка, вставка, удаление и модификация данных и записей могут выполняться с использованием условий, задаваемых с помощью логических выражений. Вычисления над данными задаются с помощью арифметических выражений и порождают в ответных таблицах новые — вычисляемые поля.

QBE был разработан Цлуфом M.M. в научно-исследовательской лаборато­рии фирмы IBM. QBE похож на SQL тем, что в своем первоначальном ва­рианте обеспечивал только средства для запроса, тогда как в последующие версии были включены операции запоминания и многие другие возможности. Общий уровень языка сходен с уровнем языка SQL, хотя, существуют некоторые операции запроса, возможные в QBE, но не имеющие аналога в SQL или в каком-либо другом языке. Более очевидное различие между языками SQL и QBE в том, что последний разработан главным образом для работы с терминала (дисплея). Всякая операция в QBE специфицируется с помощью одной или нескольких таблиц; каждая такая таблица строится на экране дисплея ча­стично системой, частично пользователем. Поскольку операции задаются в табличной форме, мы говорим, что QBE имеет двумерный синтаксис. Большинство традиционных языков, наоборот, имеют линейный синтаксис.

Стоит отметить предоставляемую пользователю языком QBE свободу построения запроса тем способом, кото­рый кажется пользователю наиболее естественным. Действительно, запрос может быть построен в том порядке, который нравится пользователю: поря­док строк в таблице запроса совершенно безразличен. Более того, порядок, в котором пользователь заносит записи, составляющие эти строки, также со­вершенно произволен. Например, возьмем запрос: «Получить имена по­ставщиков, поставляющих детали красного цвета». Пользователь может пред­ставлять себе этот запрос в виде: «Выделить красные детали, затем выделить номера поставщиков, поставляющих эти детали, и затем выделить их имена». Или же пользователь может представить себе этот же запрос как «Выделить имена тех поставщиков, таких, что поставляемая ими деталь имеет красный цвет». В любом варианте это один и тот же запрос. Другими словами, QBE является в высо­кой степени непроцедурным языком, который обеспечивает возможность пред­ставления некоторой задачи различными способами.