Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Гайдамакин Н. А. Автоматизированные информационные системы, базы и банки данных. Вводный курс - файл Гайдамакин_Автоматизированные информационные системы базы и банки данных Вводный курс_2002 .doc


Гайдамакин Н. А. Автоматизированные информационные системы, базы и банки данных. Вводный курс
скачать (3043.3 kb.)

Доступные файлы (1):

Гайдамакин_Автоматизированные информационные системы базы и банки данных Вводный курс_2002 .doc4199kb.30.12.2002 12:56скачать

содержание

Гайдамакин_Автоматизированные информационные системы базы и банки данных Вводный курс_2002 .doc

1   ...   5   6   7   8   9   10   11   12   ...   23
^

4. Ввод, обработка и вывод данных в фактографических АИС


Как уже отмечалось, цикл функционирования автоматизи­рованных информационных систем включает сбор, комплекто­вание данных, поиск и выдачу сведений для удовлетворения информационных потребностей абонентов систем. Если исклю­чить организационно-технологические аспекты сбора, комплек­тования и выдачи информации, технология работы пользовате­лей с базами данных АИС включает ввод (загрузку), обработку и вывод данных.

Предоставление пользователю средств реализации функций ввода, обработки и выдачи данных является одной из ос­новных функций интерфейса автоматизированных информаци­онных систем.
^

4.1. Языки баз данных


Как следует из рассмотрения внутренней схемы баз дан­ных, одной из основных функций систем управления базами данных является создание и поддержание собственной систе­мы размещения и обмена данными между внешней (дисковой) и оперативной памятью. От эффективности реализации в каж­дой конкретной СУБД данной функции (формат файлов дан­ных, индексирование, хэширование и буферизация) во многом зависит и эффективность функционирования СУБД в целом. Поэтому основные усилия создателей первых СУБД в конце 60-х — начале 70-х годов были сосредоточены именно в этом направлении.

Однако такой подход приводил к «самостийности», уни­кальности каждой конкретной СУБД и созданной на ее основе автоматизированной информационной системы. В результате для реализации любой функции по вводу, обработке или выво­ду данных требовались квалифицированные программисты для написания специальных программ на алгоритмических языках высокого уровня (в 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 относится к так называемым декларативным (непроцедурным) языкам программирования. В отличие от про­цедурных языков (С, Паскаль, Фортран, Кобол, Бейсик) на нем формулируются предложения (инструкции) о том, «что сде­лать», но не «как сделать, как получить». Машина данных в СУБД исполняет роль интерпретатора и как раз строит ма­шинный код, реализующий способ получения результата, задаваемого SQL-инструкциями.

Язык SQL состоит из двух частей:

языка описания (определения) данных — DDL (Data Definition Language);

языка манипулирования данными — DML (Data Manipulation Language).

Синтаксис SQL-инструкций включает:

название инструкции (команду);

предложения, определяющие источники, условия опера­ции;

предикаты, определяющие способы и режимы отбора за­писей, задаваемых предложениями;

выражения, значения которых задают свойства и пара­метры выполнения инструкции и предложения.

Структуру 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... — обновить данные в базе данных;

DELETE... — удалить данные;

GRANT... — предоставить привилегии пользова­телю;

REVOKE... — отменить привилегии пользователю;

COMMIT... — зафиксировать текущую транзак­цию;

ROLLBACK... — прервать текущую транзакцию.

Важное значение имеют разновидности инструкции 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.
1   ...   5   6   7   8   9   10   11   12   ...   23



Скачать файл (3043.3 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации