Перейти на главную страницу
Однако такой подход приводил к «самостийности», уникальности каждой конкретной СУБД и созданной на ее основе автоматизированной информационной системы. В результате для реализации любой функции по вводу, обработке или выводу данных требовались квалифицированные программисты для написания специальных программ на алгоритмических языках высокого уровня (в 70-х годах ФОРТРАН, КОБОЛ и др.), «знающих» особенности структуры и способы размещения данных во внешней и оперативной памяти. В итоге работа с базами данных осуществлялась через посредника в виде квалифицированного программиста, «переводящего» информационные потребности пользователя в машинный код,* что схематично иллюстрируется на рис. 4.1.
* В этом плане примечателен афоризм Чарльза Бахмана, который метко подметил, что «программист— это штурман в море данных». Статью по поводу присуждения ему премии Тьюринга за пионерские работы в области технологий баз данных он так и назвал — «The Programmer As Navigator» (Программист как штурман). [Вацкевич Д. Стратегии клиент/сервер, – К.: Диалектика, 1996. С. 216.]
Рис. 4.1. Схема взаимодействия пользователя с базой данных в ранних СУБД
Такое положение дел приводило к большим накладным расходам при создании и эксплуатации автоматизированных информационных систем и в определенной степени сдерживало распространение вычислительной техники в процессах информационного обеспечения деятельности предприятий и организаций.
Основателем теории реляционных СУБД Е. Коддом было выдвинуто предложение о создании специального языка для общения (взаимодействия) пользователя-непрограммиста с базами данных. Идея такого языка сводилась к набору из нескольких фраз-примитивов английского языка («выбрать», «обновить», «вставить», «удалить»), через которые пользователь-непрограммист ставил бы «вопросы» к СУБД по своим информационным потребностям. В этом случае дополнительной функцией СУБД должна быть интерпретация этих «вопросов» на низкоуровневый язык машинных кодов для непосредственной обработки данных и предоставление результатов пользователю. Так родилась уже упоминавшаяся по структуре СУБД «машина данных». Иначе говоря, машина данных «понимает» язык базы данных и в результате разделяет собственно данные и задачи по их обработке. В таком подходе взаимодействие пользователя с базой данных можно проиллюстрировать схемой, приведенной на рис. 4.2.
Рис. 4.2. Схема взаимодействия пользователя с базой данных через язык баз данных
В практику эти идеи впервые претворились в ходе реализации проекта System R (1975-1979 гг.) с участием еще одного известного специалиста по базам данных Криса Дейта. В ходе проекта System R был создан язык SEQUEL, трансформировавшийся впоследствии в язык структурированных запросов SQL (Structured Query Language).* При этом дополнительно к возможностям формирования «вопросов» к базе данных пользователю также решено было предоставить и возможность описания самой структуры данных, ввода данных и их изменения.
* Добавим также, что примерно в то же время в компании IBM был создан еще один реляционный язык—QBE (Query-By-Example), т. е. язык запросов по образцу, применявшийся впоследствии во многих коммерческих системах обработки табличных данных и послуживший идеологической основой для создания визуальных «конструкторов» запросов в современных СУБД.
Идеи языка SQL оказались настолько плодотворными, что он быстро завоевал популярность и стал широко внедряться в создаваемых в конце 70-х и в 80-х годах реляционных СУБД. Однако плодотворность идей языка SQL в отличие от первоначального замысла проявилась вовсе не в том, что на нем стали «разговаривать» с базами данных пользователи, не являющиеся профессиональными программистами. Язык SQL, в конечном счете, позволил, как уже отмечалось, отделить низкоуровневые функции по организации структуры и обработке данных от высокоуровневых функций, позволяя при создании и эксплуатации банков данных сосредоточиваться на смысловом, а не техническом аспекте работы с данными.
Быстрое и массовое распространение языка SQL в реляционных СУБД к середине 80-х годов привело фактически к принятию его в качестве стандарта по организации и обработке данных. В 1986 г. Американским национальным институтом стандартов (ANSI) и Международной организацией по стандартизации (ISO) язык был стандартизирован де-юре, т. е. признан стандартным языком описания и обработки данных в реляционных СУБД. В 1989 г. ANSI/ISO была принята усовершенствованная версия SQL — SQL2, а в 1992 г. третья версия — SQL3.
Язык SQL состоит из двух частей:
• языка описания (определения) данных — DDL (Data Definition Language);
• языка манипулирования данными — DML (Data Manipulation Language).
• название инструкции (команду);
• предложения, определяющие источники, условия операции;
• предикаты, определяющие способы и режимы отбора записей, задаваемых предложениями;
• выражения, значения которых задают свойства и параметры выполнения инструкции и предложения.
Структуру SQL-инструкций можно разделить на две основные части, схематично представленные на рис. 4.3.*
* Квадратные скобки, как это общепринято, означают необязательность элемента
Рис. 4.3. Структура SQL-инструкций.
Первая часть включает название (команду) SQL-инструкции, предикат (необязательный элемент) и аргументы инструкции, которыми являются перечисляемые через запятую имена полей одной или нескольких таблиц.
Вторая часть состоит из одного или нескольких предложений, аргументы которых могут задавать источники данных (имена таблиц, операции над таблицами), способы, условия и режимы выполнения команды (предикаты сравнения, логические и математические выражения по значениям полей таблиц).
Перечень SQL-инструкций разделяется по частям языка SQL.
В состав языка DDL входят несколько базовых инструкций, обеспечивающих основной набор функций при создании реляционных таблиц и связей между ними.
CREATETABLE... — создать таблицу;
CREATEINDEX... — создать индекс;
ALTERTABLE... — изменить структуру ранее созданной таблицы;
DROP... — удалить существующую таблицу и базы данных.
В структуре инструкций CREATETABLE и ALTERTABLE важную роль играет предложение CONSTRAINT (создать ограничения на значения данных) со следующими установками — NOT NULL (не допускаются нулевые, точнее «пустые» значения по соответствующему полю, иначе говоря, определяется поле с обязательным заполнением), AUTOINC (поле с инкрементальным, т. е. последовательно возрастающим с каждой новой записью, характером значений) и PRIMARY KEY (определение для поля уникального, т. е. без повторов, индекса, что в результате задает режим заполнения данного поля с уникальными неповторяющимися по различным строкам значениями).
В состав языка DML также входят несколько базовых инструкций, охватывающих тем не менее основные операции по вводу, обработке и выводу данных.
SELECT... — выбрать данные из базы данных;
INSERT... — добавить данные в базу данных;
UPDATE... — обновить данные в базе данных;
Важное значение имеют разновидности инструкции SELECT—SELECT... INTO ... (выбрать из одной или нескольких таблиц набор записей, из которого создать новую таблицу) и UNION SELECT, которая в дополнении с исходной инструкцией SELECT (SELECT... UNION SELECT...) реализует операцию объединения таблиц.
Помимо предложения CONSTRAINT в SQL-инструкциях используются следующие предложения:
FROM... — указывает таблицы или запросы, которые содержат поля, перечисленные в инструкции SELECT;
WHERE... — определяет, какие записи из таблиц, перечисленных в предложении FROM, следует включить в результат выполнения инструкции SELECT, UPDAТЕ или DELETE;
GROUP BY... — объединяет записи с одинаковыми значениями в указанном списке полей в одну запись;
НАVING... — определяет, какие сгруппированные записи отображаются при использовании инструкции SELECT с предложением GROUP BY;
IN... — определяет таблицы в любой внешней базе данных, с которой ядро СУБД может установить связь;
ORDERBY... — сортирует записи, полученные в результате запроса, в порядке возрастания или убывания на основе значений указанного поля или полей.
В качестве источника данных по предложению FROM, помимо таблиц и запросов, могут использоваться также результаты операций соединения таблиц в трех разновидностях—INNER JOIN... ON..., LEFT JOIN. ..ON... и RIGHT JOIN...ON... (внутреннее соединение, левое и правое внешнее соединение, соответственно*).
* Особенности разновидностей операций соединения рассматриваются в п. 4.3.2.1.2.
Предикаты используются для задания способов и режимов использования записей, отбираемых на основе условий в инструкции SQL. Такими предикатами являются:
ALL... — отбирает все записи, соответствующие условиям, заданным в инструкции SQL, используется по умолчанию;
DISTINCT... — исключает записи, которые содержат повторяющиеся значения в выбранных полях;
DISTINCTROW... — опускает данные, основанные на целиком повторяющихся записях, а не на отдельных повторяющихся полях;
ТОРп... — возвращает п записей, находящихся в начале или в конце диапазона, описанного с помощью предложения ORDER BY;
Выражениями в инструкциях SQL являются любые комбинации операторов, констант, значений текстовых констант, функций, имен полей, построенные по правилам математических выражений и результатом которых является конкретное, в том числе и логическое значение.
Язык SQL, конечно же, с точки зрения профессиональных программистов построен довольно просто, но, вместе с тем, как уже отмечалось, надежды на то, что на нем станут общаться с базами данных пользователи-непрограммисты, не оправдались. Причина этого, вероятно, заключается в том, что, несмотря на простоту, язык SQL все же является формализованным искусственным языком, осваивание и использование которого в большинстве случаев тяготит конечных пользователей. Исследования основ и способов интерфейса человека с компьютером, эргономических и психологических основ работы с компьютерной информацией, проведенные в конце 70-х и в 80-х годах, показали, что пользователи-специалисты в конкретных предметных областях (а не в области вычислительной техники и программирования) более склонны к диалогово-визуальным формам работы с вычислительными системами и компьютерной информацией.
Поэтому с конца 80-х годов в развитии СУБД наметились две тенденции:
• СУБД для конечных пользователей;
• СУБД для программистов (профессионалов).
В СУБД для конечных пользователей имеется развитый набор диалоговых и визуально-наглядных средств работы с базой данных в виде специальных диалоговых интерфейсов и пошаговых «мастеров», которые «ведут» пользователя по пути выражения им своих потребностей в обработке данных. Например, при создании новой таблицы соответствующий «мастер» последовательно запрашивает у пользователя имя таблицы, имена, типы и другие параметры полей, индексов и т. д. При этом интерфейсная часть СУБД формирует для ядра СУБД (машины данных) соответствующую и порой весьма сложную инструкцию SQL.
В профессиональных СУБД язык базы данных (SQL) дополняется элементами, присущими процедурным языкам программирования — описателями и средствами работы с различного типа переменными, операторами, функциями, процедурами и т. д. В результате формируется специализированный на работу с данными декларативно-процедурный язык высокого уровня, который встроен в СУБД (точнее надстроен над ядром СУБД). Такие языки называют «включающими» (см. рис. 2.1). На основе включающего языка разрабатываются полностью автономные прикладные информационные системы, реализующие более простой и понятный для специалистов в определенной предметной области (скажем, в бухгалтерии) интерфейс работы с информацией.
С учетом этапов в развитии программных средств СУБД такие языки получили название языков четвертого поколения — 4GL (Forth Generation Language). Языки 4GL могут быть непосредственно встроены в сами СУБД, а могут существовать в виде отдельных сред программирования. В последнем случае в таких средах разрабатываются прикладные части информационных систем, реализующие только интерфейс и высокоуровневые функции по обработке данных. За низкоуровневым, как говорят, «сервисом» к данным такие прикладные системы обращаются к SQL-серверам, являющимися отдельными специализированными разновидностями СУБД. «Общение» между прикладными системами и SQL-серверами происходит соответственно на языке SQL.
Свои языки 4GL имеют практически все развитые профессиональные СУБД—Orac/e, SyBase, Informix, Ingres, DB2, отечественная СУБД ЛИНТЕР. Распространенными отдельными средами программирования для создания информационных систем в настоящее время являются системы Visual Basic фирмы Microsoft и Delphi фирмы Borland Intemational. Кроме того, уже упоминавшиеся CASE-средства автоматизированного проектирования — PowerBuilder фирмы PowerSoft, Oracle Designer фирмы Oracle, SQLWindows фирмы Gupta и др., также, как правило, имеют свои встроенные языки 4GL.
В заключение следует отметить, что в последнее время наметилась тенденция встраивания развитых языков уровня 4GL и в СУБД для конечных пользователей. В качестве примера можно привести СУБД Access фирмы Microsoft, имеющей один из наиболее развитых интерфейсов по созданию и работе с базами данных для конечных пользователей, и в то же время оснащенной встроенным языком уровня 4GL — VBA (Visual Basic for Application), являющегося диалектом языка Visual Basic.
Компания ProQuest предоставляет пользователям большой набор разнообразных продуктов (более 200 баз, из их более 70 баз данных по stm). Самый обширный бд proQuest5000, куда входят 2
18 12 2014
1 стр.
Субд данной функции (формат файлов данных, индексирование, хэширование и буферизация) во многом зависит и эффективность функционирования субд в целом
14 12 2014
1 стр.
Бэст-5 необходимо выполнить Upgrade баз данных системы бэст-5 или баз программы бэст-4+. Для этого должны быть установлены права доступа для пользователя
25 09 2014
1 стр.
В excel имеются средства для обработки данных, организованных по принципу баз данных – функции списка, основные операции которых – сортировка данных и поиск определенной информации
14 12 2014
1 стр.
И ее архитектура, системы управления реляционной базой данных (сурбд), ее архитектура, терминологией по реляционной модели, с вопросами разработки и планирования базы данных и осно
15 10 2014
1 стр.
Традиционно базы данных не имеют универсальных языков обработки данных [1], ограничиваясь языками запросов. С другой стороны универсальные языки обработки данных не имеют возможнос
01 10 2014
1 стр.
Компания ebsco publishing Co имеет более 100 баз данных. В рамках проекта eifl direct российские пользователи имеют доступ к 10 базам данных, из которых относятся к stm направлению
15 12 2014
1 стр.
23 09 2014
1 стр.