Функции языковых средств субд. Языковые средства субд

БД – сов-ть взаимсвяз. и структуриров. данных на машиночитаемых носителях. Обращение с информацией в БД производится при помощи ЭВМ.

Различают фактографические и документальные базы данных. Фак­тографическая БД хранит множество сведений об объектах предметной области, их свойствах, связях между ними. Документальная БД позволяет не только накапливать и обрабатывать произвольные текстовые докумен­ты, но и осуществлять их быстрый поиск благодаря структурированности и взаимосвязанности представления информации в базе.

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

Поиск необходимых данных в электронной базе происходит в счи­танные секунды, причем в случае использования компьютерных сетей нет принципиальной разницы, находится ли пользователь рядом с ЭВМ, хра­нящей информацию, или удален от нее на сотни или тысячи километров. При этом одними и теми же данными могут одновременно (в отличие от обычной библиотеки) пользоваться многие клиенты.

Главная ценность БД заключается в обеспечении возможности тема­тического поиска, при котором пользователь по заданным ключевым сло­вам узнает количество первоисточников в базе, сужает проблему, читает названия статей и, возможно, их рефераты. Если в базе есть полные тек­сты, он может распечатать для себя наиболее интересные выдержки из них. Весь сеанс диалога с БД длится 20 - 40 мин, причем большая часть времени уходит на реакцию пользователя.

Все процессы внутри базы реализует система управления базой данных (СУБД). СУБД - совокупность языковых и программных средств, предна­значенных для описания БД, ее создания, ведения и использования многими пользователями.

Осн. Функции СУБД:

1) создание баз данных на компьютере

2) ввод, накопление, просмотр и модифик. Данных

3) ответы на запросы по данным

4) составление отчетов,

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

описывается или моделируется с помощью БД и ее приложений. В пред­метной области выделяются информационные объекты - идентифици­руемые объекты реального мира, процессы, системы, понятия и т. д., све­дения о которых хранятся в БД.

Этапам реализации баз данных соответствуют уровни описания предметной области: реальность в том виде, как она существует; концеп­туальное описание реальности; представление описания в виде формаль­ного текста и физическая реализация БД на машинных носителях.

Для ввода в базу описание предметной области должно быть пред­ставлено в терминах специального языка описания данных (ЯОД), кото­рый входит в комплекс средств СУБД. ЯОД разделяет данные на типы.


Типы данных.

Для ввода в базу описание предметной области должно быть пред­ставлено в терминах специального языка описания данных (ЯОД), кото­рый входит в комплекс средств СУБД. ЯОД разделяет данные на сле­дующие типы.

Простое (элементарное) данное - это наименьшая семантически значимая поименованная единица данных (например, название судна, наименование судовладельца, порт приписки и т.д.). Значения простого данного описывают представленную им характеристику объекта для ка­ждого его экземпляра. Имена простых данных хранятся в описании БД, в то время как их значения запоминаются в самой БД.

Совокупность простых данных можно объединить в составное дан­ное двумя способами. Во-первых, можно соединить не­сколько разнотипных данных. По этому принципу образуется структур­ное данное, или данное типа «структура». Описание структуры состоит из перечисления ее составных частей, значение - из значений состав­ляющих ее данных. Во-вторых, составное данное может объеди­нять совокупность однотипных данных (список сотрудников, послуж­ной список сотрудника и т.п.). Составное данное этого типа называется массивом. В описании $массива достаточно указать описание одного элемента. Значение массива представляется однородным списком зна­чений его элементов.

Составные типы м.б. объединены в многоуровневое данное. Представление предметной области в виде структуры данных с иерархич. связями – иерархич. модель данных.


5.Реляционные базы данных.

РТ – БД, в кот. все данные, доступные пользователю, организованы в виде связ. Таблиц, а все операции над данными сводятся к операциям над этими таблицами.

Опр-ся 12 правилами Кодда.

правило 0: Основное правило (Foundation Rule): Реляционная СУБД должна быть способна полностью управлять базой данных, используя связи между данными.:

Чтобы быть реляционной системой управления базами данных (СУБД), система должна использовать исключительно свои реляционные возможности для управления базой данных.

правило 1: Явное представление данных (The Information Rule):

Информация должна быть представлена в виде данных, хранящихся в ячейках. Данные, хранящиеся в ячейках, должны быть атомарны. Порядок строк в реляционной таблице не должен влиять на смысл данных.

правило 2: Гарантированный доступ к данным (Guaranteed Access Rule):

Доступ к данным должен быть свободен от двусмысленности. К каждому элементу данных должен быть гарантирован доступ с помощью комбинации имени таблицы, первичного ключастроки и имени столбца.

правило 3: Полная обработка неизвестных значений (Systematic Treatment of Null Values):

Неизвестные значения NULL, отличные от любого известного значения, должны поддерживаться для всех типов данных при выполнении любых операций. Например, для числовых данных неизвестные значения не должны рассматриваться как нули, а для символьных данных - как пустые строки.

правило 4: Доступ к словарю данных в терминах реляционной модели (Active On-Line Catalog Based on the Relational Model):

Словарь данных должен сохраняться в форме реляционных таблиц, и СУБД должна поддерживать доступ к нему при помощи стандартных языковых средств, тех же самых, которые используются для работы с реляционными таблицами, содержащими пользовательские данные.

правило 5: Полнота подмножества языка (Comprehensive Data Sublanguage Rule):

Система управления реляционными базами данных должна поддерживать хотя бы один реляционный язык, который

(а) имеет линейный синтаксис,

(б) может использоваться как интерактивно, так и в прикладных программах,

(в) поддерживает операции определения данных, определения представлений, манипулирования данными (интерактивные и программные), ограничители целостности, управления доступом и операции управления транзакциями (begin, commit и rollback).

правило 6: Возможность модификации представлений (View Updating Rule):

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

правило 7: Наличие высокоуровневых операций управления данными (High-Level Insert, Update, and Delete):

Операции вставки, модификации и удаления данных должны поддерживаться не только по отношению к одной строке реляционной таблицы, но по отношению к любому множеству строк.

правило 8: Физическая независимость данных (Physical Data Independence):

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

правило 9: Логическая независимость данных (Logical Data Independence):

Представление данных в приложении не должно зависеть от структуры реляционных таблиц. Если в процессе нормализации одна реляционная таблица разделяется на две, представление должно обеспечить объединение этих данных, чтобы изменение структуры реляционных таблиц не сказывалось на работе приложений.

правило 10: Независимость контроля целостности (Integrity Independence):

Вся информация, необходимая для поддержания целостности, должна находиться в словаре данных. Язык для работы с данными должен выполнять проверку входных данных и автоматически поддерживать целостность данных.

правило 11: Дистрибутивная независимость (Distribution Independence):

База данных может быть распределённой, может находиться на нескольких компьютерах, и это не должно оказывать влияние на приложения. Перенос базы данных на другой компьютер не должен оказывать влияния на приложения.

правило 12: Согласование языковых уровней (The Nonsubversion Rule):

Если используется низкоуровневый язык доступа к данным, он не должен игнорировать правила безопасности и правила целостности, которые поддерживаются языком более высокого уровня.


6. SQL - стандартный язык для работы с базами данных

Для обработки и чтения данных, содержащихся в компьютерной базе данных испол. SQL - это сокращенное название структурированного языка запросов (Structured Query Language). По историческим причинам аббревиатура SQL читается обычно как «сиквел», но исп-ся и альтернативное произнош. – «эскюэл»

Как следует из названия SQL является языком программирования, который применяется для организа­ции взаимодействия пользователя с БД. На самом деле, SQL работает только с базами данных одного определенного типа, а именно - с реляционными.

На рис. 2.3 изображена схема работы SQL. Согласно этой схеме. в вычислительной системе имеется база данных, в которой хранится оп­ределенною рода информация. Если вычислительная система относится к сфере бизнеса, то в базе хранятся данные о материальных ценностях, о выпускаемой продукции, об объемах продаж и о зарплате. В базе данных на персональном компьютере может храниться информация о выписан­ных чеках, телефонах и адресах или информация, извлеченная из более крупной вычислительной системы. Отдельно на рисунке обозначена (СУБД).

запрашивания данных и получения результат называется -запросом к БД, отсюда и название – сшруктуриров. Язык запросов. Однако это название не совсем соответствует действительности. Во-первых, сего­дня SQL - представляет собой нечто гораздо большее, чем простой инструмент создания запросов, хотя именно для этого он и был изначально предназначен. Несмотря на то, что чтение данных по-прежнему остается одной из наиболее важных функций SQL - сейчас этот язык используемся для реализации всех функциональных возможностей, которые СУБД пре­доставляет пользователю. К ним относятся следующие:

Организация данных. SQL дает пользователю возможность изме­нять структуру представления данных, а также устанавливать отношения между элементами базы данных.

Чтение данных. SQL даст пользователю или приложению возмож­ность читать содержащиеся в базе данные и пользоваться ими.

Обработка данных. С помощью SQL можно изменять содержимое базы данных, т.е. добавлять а нее новые, а также удалять или обновлять уже имеющиеся данные.

Управление доступом. При помощи SQL администратор базы мо­жет, ограничить возможности пользователя по чтению и изменению дан­ных и защитить их от несанкционированного доступа.

Совместное использование данных. SQL координирует совместное использование данных пользователями, работающими параллельно, что­бы они не мешали друг другу.

Целостность ванных. SQL позволяет обеспечить целостность базы данных, защищая ее от разрушения из-за несогласованных изменений или отказа системы

На сегодняшний день SQL является единственным стандартным языком для работы с реляционными базами данных.


7. Система ACCESS.

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

Access- мощное приложение Windows; впервые производительность СУБД органично сочетается с теми удобствами, которые имеются в распоряжении пользователей Microsoft Windows. Поскольку оба эти продукта- детища компании Microsoft, они прекрасно взаимодействуют между собой. Система Access работает под управлением Windows 95 или Windows NT, так что при работе с ней пользователю доступны все преимущества Windows. Можно вырезать, копировать и вставлять данные из любого приложения Windows в Access и наоборот; можно создать проект формы в Access и вставить его в конструктор форм.

Для работы с базами данных используются специальные языки, в целом называемые языками баз данных . В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка - язык определения схемы БД (DDL - Data Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). DDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные.

В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language), сочетающий средства DDL и DML.


ГЛАВА 2. ТИПОВАЯ ОРГАНИЗАЦИЯ СОВРЕМЕННОЙ СУБД

Естественно, организация типичной СУБД и состав ее компонентов соответствует рассмотренному набору функций.

Логически в современной реляционной СУБД можно выделить наиболее внутреннюю часть - ядро СУБД (часто его называют Data Base Engine), компилятор языка БД (обычно SQL), подсистему поддержки времени выполнения, набор утилит. В некоторых системах эти части выделяются явно, в других - нет, но логически такое разделение можно провести во всех СУБД. (Рис. 1)

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

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



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

Наконец, в отдельные утилиты БД обычно выделяют такие процедуры, которые слишком накладно выполнять с использованием языка БД, например, загрузка и выгрузка БД, сбор статистики, глобальная проверка целостности БД и т.д. Утилиты программируются с использованием интерфейса ядра СУБД, а иногда даже с проникновением внутрь ядра.

Рис. 1.Связь программ и данных при использовании СУБД

Классификация пользователей СУБД

Пользователей СУБД можно разделить на 3 большие группы.

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

Вторая -конечные пользователи, которые работают с системами баз данных непосредственно через рабочую станцию или терминал. Конечный пользователь может получить доступ к базе данных, используя одно из оперативных приложений, упомянутых выше, или же воспользоваться интегрированным интерфейсом программного обеспечения самой системы баз данных. Такой интерфейс также поддерживается оперативным приложением, но это приложение не создается пользователем, оно являетсявстроенным в систему баз данных. В большинстве систем есть, по крайней мере, одно такое встроенное приложение, а именно:процессор языка запросов, который позволяет пользователю указывать команды или выражения высокого уровня (такие как select или insert) для данной СУБД. Язык SQL, упомянутый выше, - типичный пример языка запросов для базы данных.

Замечание. Общепринятый термин "язык запросов" не совсем точно отражает рассматриваемое понятие, поскольку слово "запрос" подразумевает лишь выборку, в то время как с помощью этого языка выполняются также операции обновления, вставки и удаления (а возможно, и многие другие).

Кроме языка запросов, в большинстве систем также предоставляются дополнительные встроенные интерфейсы, в которых пользователь в явном виде не использует команд, таких как select. Для работы с базой данной пользователь, например, выбирает необходимые команды меню или заполняет поля в формах. Такие интерфейсы, основанные на меню и формах, облегчают работу с базами данных тем, кто не имеет опыта работы с информационными технологиями (ИТ; часто употребляется также сокращение ИС - информационные системы, эти понятия практически эквивалентны). Командныйинтерфейс, т.е. язык запросов, напротив, требует некоторого опыта работы с ИТ (возможно, не очень большого). Однако командный интерфейс обычно более гибок, чем основанный на меню и формах; кроме того, в языках запросов обычно есть определенные функции, которые не поддерживаются интерфейсами, основанными на меню и формах.

Третья группа -администраторы базы данных, илиАБД.

Рассмотрим более подробно концепцию централизованного управления. Предполагается, что при централизованном управлении на предприятии, использующем систему баз данных, есть человек, который несет основную ответственность за данные предприятия. Этоадминистратор данных, или АД, упомянутый ранее в этой главе. В связи с тем, что данные (как отмечено выше) - одна из главных ценностей предприятия, администратор должен разбираться в данных и понимать нужды предприятия по отношению к данным на уровне управления высшего руководства предприятием. Таким образом, в обязанности администратора данных входит: принимать решение, какие данные необходимо вносить в базу данных в первую очередь, а также обеспечивать поддержание порядка при обслуживании данных и использовании их после занесения в базу данных. Например, он должен указывать, кто, при каких условиях, над какими данными и какие операции может выполнять. Другими словами, он должен обеспечивать безопасность данных .

Очень важно, чтобы администратор данных работал как управляющий, а не как специалист по техническим вопросам (хотя он, конечно, должен иметь хорошее представление о возможностях баз данных на техническом уровне). Технический специалист, ответственный за реализацию решений администратора данных, - этоадминистратор базы данных, илиАБД. Итак, администратор базы данных, в отличие от администратора данных, должен быть профессиональным специалистом в области информационных технологий. Работа АБД заключается в создании самих баз данных и техническом контроле, необходимом для осуществления решений администратора данных. АБД также несет ответственность за обеспечение необходимого быстродействия системы и ее технического обслуживания. Обычно у АБД есть штат из системных программистов и технических ассистентов (т.е. на практике функции АБД выполняются командой из нескольких человек, а не одним служащим). Однако для простоты удобно считать, что администратор базы данных - один человек.

РАСПРЕДЕЛЕНИЕ ОБЯЗАННОСТЕЙ В СИСТЕМАХ С БАЗАМИ ДАННЫХ.

Одним из компонентов среды СУБД являются пользователи.

Среди пользователей СУБД можно выделить 4 различные группы: администраторы данных и баз данных, разработчики баз данных, прикладные программисты и конечные пользователи.

Администраторы данных и администраторы баз данных.

База данных и СУБД являются корпоративными ресурсами, которыми следует управлять так же, как и любыми другими ресурсами. Обычно управление данными и базой данных предусматривает управление и контроль СУБД и помещенными в нее данными.

Администратор данных, или АД (Data Administrator - DA), отвечает за управление данными, включая планирование базы данных, разработку и сопровождение стандартов, бизнес-правил и деловых процедур, а также за концептуальное и логическое проектирование базы данных. АД консультирует и дает свои рекомендации руководству высшего звена, контролируя соответствие общего направления развития базы данных установленным корпоративным целям.

Администратор базы данных, или АБД (Database Administrator - DBA), отвечает за физическую реализацию базы данных, включая физическое проектирование и воплощение проекта, за обеспечение безопасности и целостности данных, за сопровождение операционной системы, а также за обеспечение максимальной производительности приложений и пользователей. По сравнению с АД, обязанности АБД носят более технический характер, и для него необходимо знание конкретной СУБД и системного окружения. В одних организациях между этими ролями не делается различий, а в других важность корпоративных ресурсов отражена именно в выделении отдельных групп персонала с указанным кругом обязанностей.

Администрирование данных и администрирование баз данных.

Администратор данных (АД) и администратор базы данных (АБД) отвечают за управление действиями, связанными с корпоративными данными и корпоративной базой данных соответственно. Рассмотрим цели и задачи, входящие в круг обязанностей АД и АБД в некоторой организации. В следующей таблице представлены этапы жизненного цикла приложений баз данных и указан вклад АД и АБД на каждом из них (или исполняемые ими роли (основные или вспомогательные)).

Таблица 1. Этапы жизненного цикла базы данных с указанием роли АД и АБД

Этап Основная роль Вспомога-тельная роль
Планирование разработки базы данных АД АБД
Определение требований к системе АД АБД
Сбор и анализ требований пользователей АД АБД
Концептуальное проекти-рование базы данных АД АБД
Выбор целевой СУБД АБД АД
Логическое проектирование базы данных АД АБД
Разработка приложений АБД АД
Физическое проектирование базы данных АБД АД
Создание прототипов АБД АД
Реализация АБД АД
АБД АД
Квотирование АБД АД
Эксплуатация и сопровождение АБД АД

Администратор Данных принимает более активное участие в работе на ранних стадиях жизненного цикла - от планирования базы данных до этапа ее логического проектирования, тогда как Администратор Базы Данных выполняет более активную роль на поздних стадиях - от проектирования приложений и физического проектирования базы данных до этапа эксплуатации и сопровождения готовой системы.

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. Теоретическая часть

1 . 1 Языковые средства СУБД

Языковые средства предназначены для общения пользователя разных классов с банки данных. Языковые средства служат для описания различных компонентов банка данных, а иногда - и внешних по отношению к банку элементов, находящихся с ним непосредственном взаимодействием, а также для обращения к нужным частям банка данных.

Языки описания данных классифицируется в зависимости от своего назначения. Описания состава и логической организации баз данных на языке описания данных называется схемой, а соответствующий язык - языком описания данных схем. Описания части баз данных, представляющей интерес для определенного пользователя (приложения), называется подсхемой. Для описания подсхемы предназначен соответствующий язык. Среда хранения базы данных и соответствующее отображение схемы в память описываются на языке описания хранимых данных. Иногда этот язык называют языком описания схемы хранения.

Функциональные возможности поддерживаемой средствами СУБД модели данных становятся доступными для конечных пользователей, разработчиков приложений, системного персонала администрирования данными благодаря воплощению ее в виде комплекса языковых средств, которые поддерживает данная СУБД.В существующих СУБД применяются различные способы реализации таких языков. Для квалифицированных пользователей и для разработчиков сложных приложений языковые средства предоставляются, как правило, в их явной синтаксической форме. Синтаксические конструкции таких языков могут быть использованы в прикладных программах, взаимодействующих с СУБД с помощью интерфейсов прикладного программирования. Для конечных пользователей функции указанных языков чаще всего доступны в неявной форме благодаря их реализации по принципу так называемых языков четвертого поколения (4GL) - пользовательского интерфейса, включающего различного рода меню, диалоговые сценарии, заполняемые пользователем экранные формы и другие дружественные средства представления запросов. На основе данных, введенных пользователем с помощью такого интерфейса формируются соответствующие синтаксические конструкции языка интерфейса, и они передаются на исполнение обработчику запросов в СУБД.

Наиболее известными из языков этого типа являются:

* Smalltalking - малый разговорный;

* QBE (Query By Example-программирование на примере);

* Форт, который находит применение при решении сложных задач имитационного моделирования, в системах искусственного интеллекта в графических системах и т.п. Основной особенностью языка Форт является его открытость, которая позволяет на основе имеющихся определений строить новые функции. При этом программист может вводить новые операции, типы данных или определения. Возможность поддержки средствами Форт многозадачного режима работы придают ему свойства операционной системы. Особое место среди языков программирования занимают функциональные языки, в частности Пролог (PROLOG -PROgram-ming in LOGic - логическое программирование), предложенный А.Калмероэ в 1978 г., являющийся языком логического программирования, относящимся к языкам пятого поколения. Главное назначение языка - разработка интеллектуальных программ и систем. Пролог - это язык программирования, созданный специально для работы с базами знаний, основанными на фактах и правилах (одного из элементов систем искусственного интеллекта). В языке реализован механизм возврата для выполнения обратной цепочки рассуждений, при котором предполагается, что некоторые выводы или заключения истинны, а затем эти предположения проверяются в базе знаний, содержащей факты и правила логического вывода. Если предположение не подтверждается, выполняется возврат и выдвигается новое предположение.

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

Sequel (Structured English QUEry Language) и его усовершенствованный вариант SQL - языки манипулирования данными, основанные на исчислении отношений. Используются в реляционных СУБД в качестве языка запросов к базам данных и языка программирования задач обработки данных.

1.2 Функци и языковых средств СУБД

Языковые средства СУБД используются для выполнения функций описания представления базы данных (язык описания данных), для выполнения операций манипулирования данными (язык манипулирования данными) и предоставления данных пользователям о их запросам (язык запросов).

Функции СУБД

1. Управление данными во внешней памяти;

2 . управление буферами во внешней памяти:

буферизация состоит в том, чтобы сгладить разно скоростную работу между внешней и внутренней памятью.

При работе с БД СУБД может установить большую или меньшую актуальность каких-то данных. Наиболее актуальные данные могут всё время храниться в буфере. Эта функция повышает эффективность обработки данных.

3 . управление транзакциями(transactions):

транзакция - последовательность операций над данными из БД, которая рассматривается СУБД как логическое единое целое. Под логическим единым целым понимается то, что СУБД фиксирует начало набора операций и его конец. Эта функция необходима, чтобы поддерживать целостность и логическую непротиворечивость данных, а также безопасное управление данными. Транзакция должна закончиться либо фиксацией нового состояния(commit), либо восстановлением предыдущего состояния(rollback). Существует возможность параллельного выполнения нескольких транзакций (но иногда это невозможно). Сериальное выполнение транзакций - выполнение в соответствии с так называемым сериальным планом. Сериальный план - план выполнения транзакций, при котором эффект смеси транзакций эквивалентен их последовательному выполнению. Алгоритмы сериализации основаны на сериальных (синхронизационных) захватах. Цель таких захватов: построение сериального плана.

4. журнализация - ведение каких-то журналов:

существует два вида сбоев:

Мягкий, связанный с пропаданием питания, аварийной остановкой работы машины, сбоем ОС;

Жёсткий - характеризуется потерей информации на внешних носителях (авария HD).

При любом виде сбоев необходимо предусматривать восстановление информации. Это подразумевает хранение избыточной дополнительной информации. Такая информация, необходимая для восстановления, хранится в журналах. Журнал - это часть СУБД, которая недоступна пользователю, и которая поддерживается с особой тщательностью. Журнал хранится либо в нескольких копиях, либо на нескольких носителях. Журнал используется, чтобы фиксировать к нём все изменения, которые производятся над данными. С этой точки зрения можно рассмотреть две версии журнала:

Журнал локальных изменений - фиксирует отдельные операции, связанные с изменением страниц внешней памяти;

Журнал глобальных изменений - фиксирует результаты транзакций или транзакционных наборов.

При пользовании журналом используется стратегия упреждающей записи WAL(Write Ahead Log). Смысл этой стратегии состоит в том, чтобы сделать запись об изменениях прежде самих изменений.

При жёстком сбое нужна копия журнала и архивная копия БД, при этом архивная копия и журнал должны быть согласованы - это важная задача БД.

5. поддержка языков данных(Data Language)

существует две задачи информационных систем:

Описание структуры данных;

Манипулирование этими данными.

Раньше эти задачи решались с помощью языковых средств. Т.е. поддерживался язык описания данных SDL(Schema Definition Language) и язык манипулирования данными DML(Data Manipulation Language). В задачу SDL входило предоставление средств для именования объектов БД, типизации отдельных элементов и описания связей между элементами данных. DML поддерживает описание действий по изменению тех объектов, которые описаны на SDL.

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

SQL содержит:

Средства для описания ограничений целостности;

суть состоит в том, что с каждым объектом связывается набор допустимых действий и круг пользователей, обладающих разными полномочиями. Полномочия и действия описываются в разных таблицах. Языковое средство позволяет контролировать это.

По функциональным возможностям выделяют следующие категории языков:

1. Языки, имеющие только возможности запросов. Они обеспечивают вывод требуемых данных на экран или печать в нужном формате. В настоящее время используются редко.

2. Комплексные языки запросов/обновлений. Это более развитые языки; они позволяют формулировать сложные запросы, относящиеся к нескольким взаимосвязанным записям, и обновлять данные так же легко, как и формулировать запросы. Используя их, пользователи могут создавать свои собственные файлы.

3. Генераторы отчетов. Они дают возможность выбирать нужные данные из файлов или баз данных и форматировать их в виде требуемых форм документов.

4. Графические языки. Использование графических средств в настоящее время постоянно расширяется. С их помощью можно выводить данные в виде различных графиков и диаграмм, а также использовать другие изобразительные возможности. Как и генераторы отчетов, графические языки позволяют осуществлять отбор информации из файлов или баз данных по различным критериям, а также выполнять арифметические и логические манипуляции с данными.

5. Инструментальные средства поддержки решений. Языки этого типа предназначены для создания систем принятия решений. Это могут быть системы типа «что-если», системы, выполняющие временной или трендовый анализ, и др. Возможно использование как универсальных, так и проблемно-ориентированных средств.

6. Генераторы приложений. Обеспечивают возможность описания непроцедурным путем требуемой обработки информации и дальнейшей автоматической генерации программ.

7. Машинно-ориентированные языки спецификаций. Фактически являются генераторами приложений, дальнейшим их развитием. В отличие от генераторов приложений языки спецификаций более универсальны и позволяют специфицировать приложения разных типов.

8. Языки очень высокого уровня. В большинстве случаев приложения строятся с помощью непроцедурных языков. Однако некоторые языки являются процедурными (например, NOMAD), но программирование на них значительно короче, чем, например, на Cobol.

9. Параметризированные пакеты прикладных программ (ППП). Эта категория программных средств известна давно, и «4-е поколение» относится к таким ППП, которые допускают легкую модификацию самого пакета, позволяют пользователям генерировать собственные отчеты, запросы к базе данных и т.д.

10. Языки приложений. Многие языки 4-го поколения являются универсальными, другие - спроектированы для специфических приложений. Примерами таких языков являются языки для управления финансами, управления работой станков с программным управлением и т.д.

1.3 Языки описания данных и манипулирования данными

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

Первая из этих функций обеспечивается языком описания данных (ЯОД). Его часто называют также языком определения данных. Описание базы данных средствами ЯОД называется схемой базы данных. Оно включает описание структуры базы данных и налагаемых на нее ограничений целостности данных. Помимо указанных функций, ЯОД некоторых СУБД обеспечивают также возможности задания в схеме ограничений доступа к данным или полномочий пользователей. Схема базы данных представляет интенсиональную модель предметной области в среде системы базы данных. Язык манипулирования данными (ЯМД) позволяет выполнять операции манипулирования данными в базе данных. Характер этих операций зависит от конкретной модели данных. Но в любом случае в таких языках предусматриваются операции вставки новых данных в базу данных, удаление или обновление имеющихся данных. В некоторых моделях данных предусматриваются дополнительно навигационные операции, позволяющие перед выполнением операции позиционироваться на нужном экземпляре данных в базе данных. Этот экземпляр данных становится текущим. Возможны различные побочные эффекты распространение операции по структуре базы данных, автоматическое формирование новых связей между экземплярами данных, вычисление производных данных и т.п. В так называемых графовых моделях данных (иерархической, сетевой) аргументом каждой операции манипулирования данными является единственный экземпляр данных. В то же время операции в реляционной модели имеют множественный характер.

ЯОД и ЯМД не всегда синтаксически оформляются в виде самостоятельных языков. Они могут быть составными частями единого языка данных, сочетающего возможности определения данных и манипулирования данными. Имеются многочисленные примеры языков СУБД, объединяющих возможности описания данных и манипулирования данными в единых синтаксических рамках. Наиболее распространенным среди языков такого рода является язык SQL.

Язык определения данных (ЯОД).

Создание таблицы

Оператор CREATE служит для создания любого типа объектов, из которых состоит база данных, в том числе таблиц.

Синтаксис команды создания таблицы:

CREATE TABLE имя_таблицы(

поле1 тип1 [ограничения],

[поле2 тип2 [ограничения], …]);

Возможные ограничения в таблицах:

* NOT NULL - значение атрибута должно быть определено (опция NOT NULL);

* UNIQUE - значения атрибутов являются уникальными (уникальный ключ);

* PRIMARY KEY - атрибут является первичным ключом (первичный ключ);

* CHECK - определяет условие, которому должны удовлетворять значения атрибута (домен);

* DEFAULT - присвоение значений «по умолчанию» для атрибутов.

Например:

CREATE TABLE Dealers1(

Name VARCHAR2(30),

Procent NUMBER(4,2),

Comments VARCHAR2(50) DEFAULT `no comments");

Язык определения данных (DDL - Data Definition Language) предоставляет пользователям средства указания типа данных и их структуры, а также средства задания ограничений для информации, хранимой в базе данных.

Операторы: CREATE, ALTER(cм 14), DROP.

1 . 4 Классификация БнД

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

Языковые средства СУБД являются важнейшим компонентом банков данных, так как, в конечном счете, они обеспечивают интерфейс пользователей разных категорий с банком данных. Набор используемых языковых средств широк и разнообразен. Языковые средства, используемые в БнД, можно классифицировать по разным признакам (рис. 1).

Языковые средства большинства современных СУБД относятся к языкам 4-го поколения (к 1-му поколению языков относят машинные языки, ко 2-му - символические языки ассемблера, к 3-му - алгоритмические языки типа PL, Cobol и т.п., которые в 1960-е гг. назывались языками высокого уровня, но уровень, которых гораздо ниже, чем у языков 4-го поколения. Имеются еще и языки 5-го поколения, к которым относят языки систем искусственного интеллекта, например Prolog).

Рис. 1 Классификация языковых средств БнД

Языки 4-го поколения создавались по принципу: «люди стоят дороже, чем машины». При их проектировании использовались следующие принципы.

1. Принцип минимума работы: язык должен обеспечить минимум усилий, чтобы «заставить» машину работать.

2. Принцип минимума мастерства: работа должна быть так проста, как только это возможно; она не должна быть уделом избранных и быть понятной лишь посвященным.

3. Принцип естественности языка, упразднения «инородного» синтаксиса и мнемоники. Язык не должен требовать от пользователей значительных усилий в изучении синтаксиса или содержать много мнемонических или иных обозначений, которые быстро забываются.

4. Принцип минимума времени. Язык должен позволять без существенной задержки реализовывать возникающие потребности в доступе к информации и ее обработке.

5. Принцип минимума ошибок. Технология должна быть спроектирована таким образом, чтобы минимизировать ошибки человека, а уж если они возникли, то, по возможности, «выловить» их автоматически.

6. Принцип минимума поддержки. Механизм языка должен позволять легко вносить изменения в имеющиеся приложения.

7. Принцип максимума результата. Язык предоставляет пользователям мощный инструмент для решения разнообразных задач.

На рис. 1.1 приведены компоненты языка 4-го поколения. Как видим, здесь представлены все основные «генераторы», наличие которых уже стало традиционным для СУБД разных классов.

Рис. 1.1 Компоненты языка 4-го поколения

Можно выделить две концепции развития языковых средств: концепцию разделения и концепцию интеграции. При использовании концепции разделения различают языки описания данных (ЯОД) и языки манипулирования данными (ЯМД). Назначение каждого из этих подклассов ясно из их названия.

Иногда в особую группу выделяют языки запросов (ЯЗ). Первоначально под языками запросов понимали языки высокого уровня, ориентированные на конечного пользователя, предназначенные для формирования запросов к БД (в такой трактовке их можно считать одной из разновидностей ЯМД). Однако сейчас ЯЗ понимается шире (см. главу 3); многие ЯЗ включают в себя еще и возможности описания данных и корректировки БД. В составе языков описания данных в зависимости от особенностей СУБД поддерживаются все или некоторые из следующих языков: язык описания схем (ЯОС), язык описания подсхем (ЯОПС), язык описания хранимых данных (ЯОХД), языки описания внешних данных (входных, выходных). В некоторых СУБД и сами эти разновидности языков, и создаваемые с их помощью элементы ИС являются самостоятельными компонентами, в других - некоторые из них могут быть объединены.

Совокупность типов технических средств, на которых реализуются БнД, не отличается от всех иных автоматизированных ИС (рис. 1.2). Это ЭВМ, периферийные средства для ввода информации в базу данных, средства хранения данных и средства отображения выводимой информации. Если банк данных реализуется в сети, то необходимы соответствующие технические средства (показано пунктиром) для обеспечения ее работы. Но банки данных предъявляют свои требования к используемым техническим средствам.

Рис. 1.2. Технические средства БнД

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

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

По форме представления различают аналитические, табличные и графические языковые средства. Классификация языковых средств по этому признаку относится как к языкам описания данных, так и к языкам манипулирования данными. Так, описание таблицы с использованием команды CREATETABLE языка SQL является примером аналитической формы ЯОД, а описание такой же таблицы в Access и большинстве других настольных СУБД - примером табличной формы описания данных. В качестве примеров табличной и аналитической форм задания запросов можно привести языки и SQL соответственно.

Достаточно часто бывает, что в рамках одной СУБД для одних и тех же целей могут использоваться языки разных типов. Так, например, во многих СУБД (dBase, FoxPro и др.) для манипулирования данными могут использоваться:

· табличный язык запросов типа QBE;

· язык SQL - аналитический язык запросов, относящийся к классу языков исчисления кортежей;

· процедурный язык программирования (для указанных выше систем dBase, FoxPro -- это язык xBase, часть операторов которого реализует операции реляционной алгебры, а другая часть, более значительная по количеству операторов и функций, выполняет нереляционные операции, обеспечивающие позаписную обработку файлов, организацию циклической и условной обработки, ввод-вывод данных, корректировку, возможность работы с переменными памяти и другие возможности).

Описание данных в этих системах может быть представлено в табличном виде либо, если определение данных выполняется средствами SQL или с использованием операторов языка xBase, в аналитическом виде.

Кроме упомянутых языковых средств эти системы включают в себя генераторы экранных форм, отчетов и приложений, а также язык разветвленной иерархической системы «меню», позволяющей пользователю выбрать те действия, которые он желает выполнить.

1.4 Языки запросов

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

Некоторые СУБД располагают такими языками, которые не только реализуют функции определения данных и манипулирования данными, но и обладают управляющими структурами и другими средствами, свойственными традиционным языкам программирования. Благодаря этому они могут использоваться как функционально полное инструментальное средство для создания приложений систем баз данных. Такие языки называют автономными. В качестве примера приведем упоминавшийся ранее язык dBase, построенный в стиле языков структурного программирования, или язык PL/SQL Oracle.

В случаях, когда СУБД не располагает автономным языком, она обычно обладает интерфейсами прикладного программирования для создания и использования приложений. Благодаря этому приложения могут разрабатываться с помощью расширения традиционных языков программирования операторами (командами, функциями, процедурами и т.п.), исполнение которых может запрашиваться через API. Таким образом будет восполняться функциональная неполнота языков СУБД. Язык программирования выступает при этом в роли включающего языка по отношению к языкам СУБД, и прикладные системы реализуются на таком расширенном языке. Интерфейсы прикладного программирования предусмотрены во многих СУБД.

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

Для решения проблемы несоответствия импеданса приходится дополнять реализуемую модель данных неестественными для нее объектами и операциями над ними с тем, чтобы синхронизировать обработку данных в прикладной программе и механизмы управления данными в СУБД. Следствием ее часто бывает и недостаточно высокая производительность всего комплекса системы базы данных, не поддающегося оптимизации именно в силу его неоднородности.

2 . Практическая часть

2 .1 Язык запросов SQL

Часто СУБД обеспечивают автоматическое преобразование «текстов» с одного языка на другой. Так, например, многие СУБД, такие, как Access, FoxPro и др., используют языки запросов табличного типа не только для непосредственной реализации запросов, но и как средство для более простого описания запроса и последующего автоматического преобразования его на язык SQL.

Язык SQL-ЛИНТЕР реализует международный стандарт языка SQL - ANSI/ISO SQL-92 . В SQL-ЛИНТЕР пользователь найдет такие мощные языковые средства, как предложение UNION, полный набор операций соединения - JOIN, все описанные в указанном стандарте возможности по реализации ограничений целостности и пр. Для совместимости с некоторыми СУБД других производителей (Oracle, DB2, Informix, Microsoft SQL Server и др.) в язык запросов ЛИНТЕР введены специальные встроенные функции, языковая работа по управлению контролем доступа к информации, иерархические запросы к таблицам, последовательности и т.д. Для удобства пользователей в SQL-ЛИНТЕР включены так же следующие расширения указанного стандарта:

· Языковая работа с BLOB-столбцами.

· Языковая работа с событиями в ЛИНТЕР.

· Разрешено использование нескольких таблиц во FROM в операциях UPDATE и DELETE.

Например:

· DELETE FROM таблица JOIN список _ таблиц WHERE ...

· UPDATE таблица JOIN список _ таблиц WHERE ...

Разрешена конструкция INTO в SELECT-операторе для совместимости с некоторыми диалектами языка SQL.

Например: SELECT список_выражений INTO список_параметров FROM ...

Разрешена конструкция CAST NULL AS тип. Введены следующие предложения для установки режимов работы каналов:

SET TRANSACTION READ ONLY - перевод канала в режим read-only;

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED - перевод канала в режим грязного чтения.

Введены предложения для работы с правилами репликации: CREATE REPLICATION RULE правило FOR таблицa TO таблица ON NODE имя_узла USER пользователь PASSWORD "пароль" ;

ALTER REPLICATION RULE правило [ PASSWORD "пароль"] ;

DROP REPLICATION RULE правило;

Разнообразные возможности ALTER TABLE по модификации структуры таблицы - от изменения имен (таблицы, её столбцов) до изменений важнейших характеристик самой таблицы и её столбцов (например, размеров, числа файлов, места их расположения, а для столбцов - длины данных, значений по умолчанию и т.д.).

Ещё один немаловажный штрих - возможность поиска отдельных слов и словосочетаний в больших текстовых значениях, что очень важно при организации больших полнотекстовых информационных баз.

Язык хранимых процедур СУБД ЛИНТЕР

Наличие механизма хранимых процедур в СУБД ЛИНТЕР позволяет существенно расширить возможности языка SQL, организуя процедурную обработку данных на сервере согласно алгоритму пользователя. По функциональной мощности хранимые процедуры ЛИНТЕР в некоторых аспектах даже превышают стандарт ANSI/ISO SQL-92/PSM (Persistent Stored Modules). Есть множество важных моментов, не отраженных в стандарте.

Например: Использование оттранслированных запросов и запросов с параметрами (динамически изменяемых запросов), управление транзакциями. Хранимые процедуры ЛИНТЕР могут использовать как обычные, так и оттранслированные запросы с параметрами и без параметров, кроме того процедуры имеют возможность возвращать курсор, что очень удобно для программирования. Язык хранимых процедур предоставляет мощный синтаксис выражений включающий все необходимые операции с переменными и значениями каждого типа данных, вызовы разнообразных стандартных функций (таких, как преобразование типов, работа со строчными данными и т.д.) операцию присваивания (тот факт, что присваивание является операцией, а не отдельным оператором, позволяет строить, например, такие конструкции: a:= b:= c:= 0;).

Язык хранимых процедур позволяет работать со всеми стандартными типами данных ЛИНТЕР (Integer, Smallint, Char, Byte, Numeric, Real, Double, Date), а также дополнительным типом BOOL (логический). Тип CHAR рассматривается как строки с заданной максимальной длиной, и для него определены удобные в использовании строковые константы и операции конкатенации. Все операции со всеми типами данных реализуют трехзначную логику, то есть поддерживается значение NULL для любого типа данных, которое означает состояние « значение не определено».

Последовательность операторов позволяет закодировать линейный алгоритм. Для организации ветвящихся алгоритмов может использоваться оператор типа IF..ELSEIF...ELSEIF...ELSE..ENDIF, оператор выбора CASE, оператор перехода на метку GOTO. Циклические алгоритмы организуются при помощи оператора цикла WHILE. Для вызова из одной процедуры других используется оператор CALL. Допустимы рекурсивные вызовы процедур. Процедуры могут получать входные параметры и возвращать результат работы через механизм возвращаемого значения (оператор RETURN) и/или выходные параметры. Результатом работы процедуры может являться не только скалярное значение, но и курсор (выборка). Для обработки результатов SELECT-запросов в процедурах используются курсоры (CURSOR), тип которых объявляется в соответствии со структурой ответа. Цикл работы с курсором может включать его открытие оператором OPEN (как результат запроса или выполнения другой процедуры), выборку данных оператором FETCH (в любом направлении) и закрытие (CLOSE) или, если процедура возвращает курсор, возврат (RETURN).

Процедуры могут работать со столбцами типа BLOB. Для этого используются стандартные функции чтения/записи в BLOB, который ассоциируется с текущей строкой курсора. Понятие «курсор» используется исключительно для выборки данных. Для выполнения любых DML и DDL запросов (запросов отличных от SELECT-запроса) используется оператор EXECUTE.

Все операции процедур по модификации данных входят в пользовательскую транзакцию. Завершением транзакции управляет пользователь, однако, процедура также может зафиксировать или откатить изменения, сделанные в ее теле (и теле ее дочерних процедур) операторами COMMIT и ROLLBACK.

Для упрощения обработки ошибок в языке хранимых процедур предусмотрен механизм работы с исключительными ситуациями, в качестве которых могут рассматриваться ошибки выполнения SQL-запросов, ошибки времени исполнения (вызов несуществующей процедуры, деление на ноль и т.д.) или пользовательские исключения. В момент возникновения исключения управление сразу автоматически передается на соответствующую ветку блока обработки исключений (EXCEPTIONS), что избавляет от необходимости «засорения» кода процедуры многочисленными условными операторами, проверяющими результат завершения каждого оператора. Процедура может обработать исключение, либо завершиться и передать исключение на верхний уровень (оператор RESIGNAL).

Для организации работы с хранимыми процедурами и триггерами СУБД ЛИНТЕР содержит транслятор хранимых процедур, преобразовывающий исходный текст процедуры/триггера в оттранслированный код, позволяющий быстро выполнять процедуру в исполняющей подсистеме. Этот код хранится в специальной системной таблице $$$PROC, описания входных/выходных параметров процедур хранятся в таблице параметров $$$PRCD. Обе эти таблицы должны быть созданы перед началом работы с процедурами/триггерами (для триггеров так же необходимо наличие таблицы $$$TRIG).

В поле типа BLOB таблицы $$$PROC сохраняются оттранслированный код и исходный текст процедуры или триггера (последнее позволяет пользователю получать исходный текст в целях редактирования). Процедуры и триггеры создаются с помощью соответствующих запросов SQL типа CREATE/ALTER PROCEDURE, CREATE TRIGGER. В случае ошибки в тексте процедуры/триггера возвращается специальный код ошибки ЛИНТЕР и интерактивные утилиты выдают подробную расшифровку в какой строке и какая ошибка произошла. В этом случае в таблице $$$PROC создается только одна запись, содержащая исходный текст, что в последствии позволяет пользователю получить его и исправить ошибки. Возможно использование хранимых процедур как функций, расширяющих язык SQL.

Для запуска процедур используется запрос

EXECUTE <процедура> (<параметры>)

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

Триггеры: связь событий и хранимых процедур

Хранимые процедуры очень удобны, когда пользователь хочет реализовать некоторый достаточно сложный алгоритм обработки данных и запустить его в нужный момент. Однако в приложениях часто требуется выполнить какие-либо действия при условии возникновения определенной ситуации. Триггеры обеспечивают целостность, выполняя комплексную межтабличную проверку допустимости данных вне контекста справочной целостности и ограничений проверки. Наиболее важное назначение триггеров - определение глобального делового правила. Например, триггер может использоваться для обеспечения того, чтобы менеджеру службы продаж посылалось сообщение о недостаточном количестве товара на складе и необходимости пополнения запаса, если общее количество товара на складе стало меньше чем зарезервированное. Другой пример - при добавлении новых строк в одну таблицу в целях обеспечения целостности данных может потребоваться соответствующим образом добавлять или изменять строки других, связанных, таблиц. Итак, триггер - это хранимая процедура, которая автоматически вызывается при выполнении того или иного действия с конкретной таблицей, направленного на изменение данных. Явно триггер вызываться не может. При создании триггера указывается, к какой таблице и к какому действию (UPDATE, INSERT или DELETE) он привязывается. Триггер может вызываться один раз при выполнении всего запроса, либо каждый раз, когда необходимо обновить, удалить или вставить очередную строку в таблице (триггер FOR EACH ROW). Причем можно указать, когда должен вызываться триггер: до операции (триггер BEFORE) или после (триггер AFTER). Основной частью триггера является его тело, которое определяется точно так же, как тело хранимой процедуры и содержит алгоритм реакции триггера на вызвавшее его действие. В теле триггера допустимы любые SQL-запросы, вызовы хранимых процедур и т.д. Для триггеров на каждую строку внутри тела можно использовать значения полей записи, которые были до операции изменения и значения, которые должны быть установлены после операции. Эти значения доступны через поля предопределенных переменных-курсоров OLD и NEW, структура которых соответствует структуре таблицы. В триггере BEFORE можно присвоить полям переменной NEW новые значения, и при выполнении операции INSERT или UPDATE они будут использованы вместо старых. Единственным значением, которое может вернуть триггер, является логическое значение, при чем, если триггер BEFORE возвращает «ложно», соответствующая операция отменяется для данной строки или всего SQL-оператора, в зависимости от вида триггера. Отладка хранимых процедур ЛИНТЕР

Для упрощения процесса разработки хранимых процедур и триггеров ядро ЛИНТЕР содержит встроенный механизм отладки хранимых процедур. Пользователь отлаживает процедуру (триггер) при помощи специальной утилиты - отладчика, который обменивается с ядром специальными управляющими командами. Наличие встроенного в ядро механизма отладки позволяет отлаживать процедуры (триггеры) в реальных рабочих условиях (на сервере), в среде запросов и действий конкретного реального приложения. Для того, чтобы начать отладку, пользователь открывает так называемую «отладочную сессию» для процедуры, после чего ядро работает с данной процедурой (триггером) в режиме отладки, реагируя на команды отладчика и передавая ему всю необходимую информацию. Можно отлаживать лишь те процедуры (триггеры), которые оттранслированы с отладочной информацией. На необходимость включения отладочной информации указывает ключевая фраза FOR DEBUG в заголовке процедуры или триггера, как в приведенных выше примерах. Для начала отладки конкретной исполняемой процедуры (триггера) необходимо либо запустить процедуру из-под отладчика, либо ждать, пока какое-нибудь приложение не вызовет эту процедуру или какой-нибудь запрос не запустит триггер (для триггеров это единственный способ).

Второй вариант предоставляет мощную возможность по отладке процедур и триггеров в рамках их «родной» среды, когда они запущены в штатном порядке. Отладчик позволяет просматривать исходный текст процедуры (триггера), выделяя строку с текущим исполняемым оператором.

Процесс отладки включает возможность пошагового выполнения процедур (триггеров), установки разнообразных точек останова и выполнения до одной из них, выполнения с заходом внутрь вызываемых дочерних процедур, наблюдения за значениями локальных переменных и конкретных выражений, стеком вызова. Кроме обычных точек останова (останов каждый раз при выполнении конкретного оператора) поддерживаются так же условные точки (останов только в случае выполнения конкретного условия, например, i >10) и точки останова на изменение значений. Отладчик также помогает разобраться в причине возникновения исключений, приостанавливая выполнение процедур и указывая место, где произошло исключение.

Заключение

база данных языковый средство

В данном курсовом работе являлось изучение языковых средств систем управления баз данных. В теоретической части были описаны, что означает языковые средства систем управления баз данных, и также были изучены функции и классификация языковых средств. В практической части я привела пример языковых средств, то есть язык запросов SQL. Языковые средства предназначаются для пользователей разных категорий: конечных пользователей, системных аналитиков, профессиональных программистов. Повышение уровня языковых средств, их дружелюбности приводит к тому, что все большее число функций выполняется пользователями-непрограммистами самостоятельно, без посредников.

В результате выполнения данного курсовой работы было недостаточно информации. Были рассмотрены, предназначены для общения пользователя разных классов с банками данных. И главное назначение языка - разработка интеллектуальных программ и систем. В данной работе были учтены все требования, выдвинутые в выполнения курсовой работе.

Список использованной литературы

1. Ревунков, Г.И. Базы и банки данных и знаний/ Г.И. Ревунков, Э.Н. Самохвалов, М. Чистов. - М.: Высшая школа, 2005. - 392 с.

2. Шаймарданов, Р.Б. Моделирование и автоматизация проектирования структур баз данных / Р.Б. Шаймарданов. - М.: Радио и связь, 2004. - 120 с.

3. Озкархан, Э. Машины баз данных и управление базами данных/ Э. Озкархан. - М.: Мир, 2006. - 695 с

4. Цехановский, В.В., Яковлев А. Автоматизированные банки данных/ В.В. Цехановский., А. Яковлев. - Л.: ЛЭТИ, 2006. - 63с.

5. Диго С.М. Проектирование баз данных: Учебник /.М.: Финансы и статистика -1988,-212с.

Размещено на Allbest.ru

Подобные документы

    Работа с хранящейся в базах данных информацией. Язык описания данных и язык манипулирования данными. Распространение стандартизованных языков. Структурированный язык запросов SQL. Язык запросов по образцу QBE. Применение основных операторов языка.

    презентация , добавлен 14.10.2013

    Рассмотрение совокупности программ и языковых средств (специальных языков описания и манипулирования данными), предназначенных для создания, ведения и использования баз данных. Определение языков общения. Исследование принципов построения банка данных.

    реферат , добавлен 07.08.2017

    Внутренний язык СУБД для работы с данными. Результат компиляции DDL-операторов. Описание DML-языка, содержащего набор операторов для поддержки основных операций манипулирования содержащимися в базе данными. Организация данных и управление доступом в SQL.

    лекция , добавлен 19.08.2013

    Особенности управления информацией в экономике. Понятие и функции системы управления базами данных, использование стандартного реляционного языка запросов. Средства организации баз данных и работа с ними. Системы управления базами данных в экономике.

    контрольная работа , добавлен 16.11.2010

    Система управления базами данных как составная часть автоматизированного банка данных. Структура и функции системы управления базами данных. Классификация СУБД по способу доступа к базе данных. Язык SQL в системах управления базами данных, СУБД Microsoft.

    реферат , добавлен 01.11.2009

    Тенденция развития систем управления базами данных. Иерархические и сетевые модели СУБД. Основные требования к распределенной базе данных. Обработка распределенных запросов, межоперабельность. Технология тиражирования данных и многозвенная архитектура.

    реферат , добавлен 29.11.2010

    Основные понятия базы данных и систем управления базами данных. Типы данных, с которыми работают базы Microsoft Access. Классификация СУБД и их основные характеристики. Постреляционные базы данных. Тенденции в мире современных информационных систем.

    курсовая работа , добавлен 28.01.2014

    Программные продукты компании Microsoft: Access, Visual FoxPro7.0, dBASE. Возможности интеграции, совместной работы и использования данных. Системы управления базами данных (СУБД), их основные функции и компоненты. Работа с данными в режиме таблицы.

    курсовая работа , добавлен 15.12.2010

    Классификация баз данных. Использование пакета прикладных программ. Основные функции всех систем управления базами данных. Настольная система управления базами данных реляционного типа Microsoft Access. Хранение и извлечение электронных данных.

    курсовая работа , добавлен 23.04.2013

    Теоретические сведения и основные понятия баз данных. Системы управления базами данных: состав, структура, безопасность, режимы работы, объекты. Работа с базами данных в OpenOffice.Org BASE: создание таблиц, связей, запросов с помощью мастера запросов.


Лекции доступны на сайте В разделе сайта: Профессиональная переподготовка Рабочие программы



Языки определения данных и манипулирования данными Для работы с базами данных используются специальные языки, в целом называемые подъязыками данных, поскольку они включают подмножество операторов, связанное с объектами и операциями баз данных, но не содержат конструкции для выполнения всех вычислительных операций языков программирования высокого уровня. Многие СУБД поддерживают возможность внедрения операторов подъязыков данных в языки высокого уровня, таких, например, как COBOL, Fortran, Pascal, Ada, С. Как уже отмечалось, в этом случае язык высокого уровня считается базовым, а подъязык данных внедренным. В СУБД поддерживается несколько специализированных по своим функциям подъязыков. Их можно разбить на две категории: - Язык определения данных - описательный язык, с помощью которого описывается предметная область: именуются объекты, определяются их свойства и связи между объектами. Он используется главным образом для определения логической структуры БД, его нельзя исполь¬зовать для управления данными. Результатом компиляции ЯОД операторов является набор таблиц, хранимый в системном каталоге, в котором содержатся метаданные - Языки манипулирования данными содержит набор операторов манипулирования данными, т. е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные. Языки манипулирования данными делятся на два типа: процедурный ЯМД, декларативный (непроцедурный) ЯМД.


Работая с процедурным ЯМД, пользователь должен четко представлять себе то, что он должен получить, и как он может это сделать с помощью средств ЯМД. Эти средства представляют собой операторы над данными, которые необходимо выполнить в определенном порядке для получения требуемой информации. Обычно такой процедурный язык позволяет извлечь запись, обработать ее и, в зависимости от полученных результатов, извлечь другую запись, которая должна быть подвергнута аналогичной обработке, и т. д. К ним относят языки ЯМД сетевых и иерар¬хических СУБД, языки, поддерживающие операции реляционной алгебры. Декларативные языки ЯМД предоставляют пользователю средства, позволяющие указать лишь то, какие данные требуются. Решение вопроса о том, как их следует извлекать, берет на себя процессор данного языка, работающий с целыми наборами записей. Непроцедурные языки ЯМД позволяют определить весь набор требуемых дан¬ных с помощью одного оператора извлечения или обновления. СУБД транслирует выражение на языке ЯМД в процедуру (или набор процедур), которая обеспечивает манипулирование затребованным набором записей. Данный подход освобождает пользователя от необходимости знать детали внутренней реализации структур данных и особен¬ности алгоритмов, используемых для извлечения и возможного преобразования данных. Непроцедурные языки обыч-но проще понять и использовать, чем процедурные языки. Реляционные СУБД обычно включают поддержку непроцедурных языков манипулирования данными чаще всего это бывает язык структурированных запросов SQL или язык запросов по образцу QBE. Часть непроцедурного языка ЯМД, которая отвечает за извлечение данных, называется языком запросов. Язык запросов можно определить как высокоуров- невый узкоспециализированный язык, предназначенный для удовлетворения различных требований по выборке информации из базы данных. Анализируя тенденции в развитии языков обработки данных, можно предположить, что и в дальнейшем оно пойдет, скорее всего, по направлению развития непроцедурных языков с использованием компонентов высокого уровня, которые часто называют «инструментами четвертого поколения».


SQL (Structured Query Language) SQL (обычно произносимый как "СИКВЭЛ" или "ЭСКЮЭЛЬ") символизирует собой Структурированный Язык Запросов. Это - язык, который дает Вам возможность создавать и работать в реляционных базах данных, являющихся наборами связанной информации, сохраняемой в таблицах.


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


Из истории появления SQL Появление теории реляционных баз данных и предложенного Коддом языка запросов "ALPHA", основанного на реляционном исчислении, инициировало разработку ряда языков запросов, которые можно отнести к двум классам: 1.Алгебраические языки, позволяющие выражать запросы средствами специализированных операторов, применяемых к отношениям (JOIN - соединить, INTERSECT - пересечь, SUBTRACT - вычесть и т.д.). 2.Языки исчисления предикатов, которые представляют собой набор правил для записи выражения, определяющего новое отношение из заданной совокупности существующих отношений. Другими словами исчисление предикатов есть метод определения того отношения, которое нам желательно получить (как ответ на запроc) из отношений, уже имеющихся в базе данных.


Разработка, в основном, шла в отделениях фирмы IBM (языки ISBL, SQL, QBE) и университетах США (PIQUE, QUEL). Последний создавался для СУБД INGRES (Interactive Graphics and Retrieval System), которая была разработана в начале 70-х годов в Университете шт. Калифорния и сегодня входит в пятерку лучших профессиональных СУБД. Сегодня из всех этих языков полностью сохранились и развиваются QBE (Query-By- Example - запрос по образцу) и SQL, а из остальных взяты в расширение внутренних языков СУБД только наиболее интересные конструкции.


В начале 80-х годов SQL "победил" другие языки запросов и стал фактическим стандартом таких языков для профессиональных реляционных СУБД. В 1987 году он стал международным стандартом языка баз данных и начал внедряться во все распространенные СУБД персональных компьютеров.


Почему SQL? 1.Непрерывный рост быстродействия, а также снижение энергопотребления, размеров и стоимости компьютеров привели к резкому расширению возможных рынков их сбыта, круга пользователей, разнообразия типов и цен. Естественно, что расширился спрос на разнообразное программное обеспечение. 2.Фирмы, производящие программное обеспечение, стали выпускать на рынок все более и более интеллектуальные и, следовательно, объемные программные комплексы. Приобретая (желая приобрести) такие комплексы, многие организации и отдельные пользователи часто не могли разместить их на собственных ЭВМ, однако не хотели и отказываться от нового сервиса. Для обмена информацией и ее обобществления были созданы сети ЭВМ, где обобществляемые программы и данные стали размещать на специальных обслуживающих устройствах - файловых серверах. 3.СУБД, работающие с файловыми серверами, позволяют множеству пользователей разных ЭВМ (иногда расположенных достаточно далеко друг от друга) получать доступ к одним и тем же базам данных. При этом упрощается разработка различных автоматизированных систем управления организациями, учебных комплексов, информационных и других систем, где множество сотрудников (учащихся) должны использовать общие данные и обмениваться создаваемыми в процессе работы (обучения). Однако при такой идеологии вся обработка запросов из программ или с терминалов пользовательских ЭВМ выполняется на этих же ЭВМ. Поэтому для реализации даже простого запроса ЭВМ часто должна считывать из файлового сервера и (или) записывать на сервер целые файлы, что ведет к конфликтным ситуациям и перегрузке сети.


4.Для исключения указанных и некоторых других недостатков была предложена технология "Клиент-Сервер", по которой запросы пользовательских ЭВМ (Клиент) обрабатываются на специальных серверах баз данных (Сервер), а на ЭВМ возвращаются лишь результаты обработки запроса. При этом, естественно, нужен единый язык общения с Сервером и в качестве такого языка выбран SQL. Поэтому все современные версии профессиональных реляционных СУБД (DB2, Oracle, Ingres, Informix, Sybase, Progress, Rdb) и даже нереляционных СУБД (например, Adabas) используют технологию "Клиент-Сервер" и язык SQL. К тому же приходят разработчики СУБД персональных ЭВМ, многие из которых уже сегодня снабжены языком SQL. 5.Реализация в SQL концепции операций, ориентированных на табличное представление данных, позволило создать компактный язык с небольшим (менее 30) набором предложений. SQL может использоваться как ИНТЕРАКТИВНЫЙ (для выполнения запросов) и как ВСТРОЕННЫЙ (для построения прикладных программ).


Состав языка SQL Язык SQL предназначен для манипулирования данными в реляционных базах данных, определения структуры баз данных и для управления правами доступа к данным в многопользовательской среде. Поэтому, в язык SQL в качестве составных частей входят: язык манипулирования данными (Data Manipulation Language, DML) язык определения данных (Data Definition Language, DDL) язык управления данными (Data Control Language, DCL). Подчеркнем, что это не отдельные языки, а различные команды одного языка. Такое деление проведено только лишь с точки зрения различного функционального назначения этих команд.




Язык определения данных используется для создания и изменения структуры базы данных и ее составных частей - таблиц, индексов, представлений (виртуальных таблиц), а также триггеров и сохраненных процедур. Основными его командами являются: CREATE DATABASE(создать базу данных) CREATE TABLE(создать таблицу) CREATE VIEW(создать виртуальную таблицу) CREATE INDEX(создать индекс) CREATE TRIGGER(создать триггер) CREATE PROCEDURE(создать сохраненную процедуру) ALTER DATABASE(модифицировать базу данных) ALTER TABLE(модифицировать таблицу) ALTER VIEW(модифицировать виртуальную таблицу) ALTER INDEX(модифицировать индекс) ALTER TRIGGER(модифицировать триггер) ALTER PROCEDURE(модифицировать сохраненную процедуру) DROP DATABASE(удалить базу данных) DROP TABLE(удалить таблицу) DROP VIEW(удалить виртуальную таблицу) DROP INDEX(удалить индекс) DROP TRIGGER(удалить триггер) DROP PROCEDURE(удалить сохраненную процедуру)


Язык управления данными используется для управления правами доступа к данным и выполнением процедур в многопользовательской среде. Более точно его можно назвать "язык управления доступом". Он состоит из двух основных команд: GRANT(дать права) REVOKE(забрать права)


С точки зрения прикладного интерфейса существуют две разновидности команд SQL: интерактивный SQL встроенный SQL. Интерактивный SQL используется в специальных утилитах (типа WISQL или DBD), позволяющих в интерактивном режиме вводить запросы с использованием команд SQL, посылать их для выполнения на сервер и получать результаты в предназначенном для этого окне. Встроенный SQL используется в прикладных программах, позволяя им посылать запросы к серверу и обрабатывать полученные результаты, в том числе комбинируя set-ориентированный и record-ориентированный подходы.


SQL включает: 1.предложения определения данных (определение баз данных, а также определение и уничтожение таблиц и индексов); 2.запросы на выбор данных (предложение SELECT); 3.предложения модификации данных (добавление, удаление и изменение данных); 4.предложения управления данными (предоставление и отмена привилегий на доступ к данным, управление транзакциями и другие). Кроме того, он предоставляет возможность выполнять в этих предложениях: арифметические вычисления (включая разнообразные функциональные преобразования), обработку текстовых строк и выполнение операций сравнения значений арифметических выражений и текстов; упорядочение строк и (или) столбцов при выводе содержимого таблиц на печать или экран дисплея; создание представлений (виртуальных таблиц), позволяющих пользователям иметь свой взгляд на данные без увеличения их объема в базе данных; запоминание выводимого по запросу содержимого таблицы, нескольких таблиц или представления в другой таблице (реляционная операция присваивания). агрегатирование данных: группирование данных и применение к этим группам таких операций, как среднее, сумма, максимум, минимум, число элементов и т.п.


Основные типы данных SQL 1.INTEGER - целое число (обычно до 10 значащих цифр и знак); 2.SMALLINT - "короткое целое" (обычно до 5 значащих цифр и знак); 3.DECIMAL(p,q) - десятичное число, имеющее p цифр (0 0 и разное в разных СУБД, но не меньше 4096); 7.DATE - дата в формате, определяемом специальной командой (по умолчанию mm/dd/yy); поля даты могут содержать только реальные даты, начинающиеся за несколько тысячелетий до н.э. и ограниченные пятым-десятым тысячелетием н.э.; 8.TIME - время в формате, определяемом специальной командой, (по умолчанию hh.mm.ss); 9.DATETIME - комбинация даты и времени; 10.MONEY - деньги в формате, определяющем символ денежной единицы ($, руб,...) и его расположение (суффикс или префикс), точность дробной части и условие для показа денежного значения. 0 и разное в разных СУБД, но не меньше 4096); 7.DATE - дата в формате, определяемом специальной командой (по умолчанию mm/dd/yy); поля даты могут содержать только реальные даты, начинающиеся за несколько тысячелетий до н.э. и ограниченные пятым-десятым тысячелетием н.э.; 8.TIME - время в формате, определяемом специальной командой, (по умолчанию hh.mm.ss); 9.DATETIME - комбинация даты и времени; 10.MONEY - деньги в формате, определяющем символ денежной единицы ($, руб,...) и его расположение (суффикс или префикс), точность дробной части и условие для показа денежного значения.">


Ориентированный на работу с таблицами SQL не имеет достаточных средств для создания сложных прикладных программ. Поэтому в разных СУБД он либо используется вместе с языками программирования высокого уровня (например, такими как Си или Паскаль), либо включен в состав команд специально разработанного языка СУБД (язык систем dBASE, R:BASE и т.п.). Унификация полных языков современных профессиональных СУБД достигается за счет внедрения объектно-ориентированного языка четвертого поколения 4GL. Последний позволяет организовывать циклы, условные предложения, меню, экранные формы, сложные запросы к базам данных с интерфейсом, ориентированным как на алфавитно- цифровые терминалы, так и на оконный графический интерфейс (X- Windows, MS-Windows).




Представления Одна из основных задач, которую позволяют решать представления, - обеспечение независимости пользовательских программ от изменения логической структуры базы данных при ее расширении и (или) изменении размещения столбцов, возникающего, например, при расщеплении таблиц. В последнем случае можно создать ПРЕДСТАВЛЕНИЕ - соединение с именем и структурой расщепленной таблицы, позволяющее сохранить программы, существовавшие до изменения структуры базы данных. Кроме того, представления дают возможность различным пользователям по-разному видеть одни и те же данные, возможно, даже в одно и то же время. Это особенно ценно при работе различных категорий пользователей с единой интегрированной базой данных. Пользователям предоставляют только интересующие их данные в наиболее удобной для них форме (окно в таблицу или в любое соединение любых таблиц). Наконец, от определенных пользователей могут быть скрыты некоторые данные, невидимые через предложенное им представление. Таким образом, принуждение пользователя осуществлять доступ к базе данных через представления является простым, но эффективным механизмом для управления санкционированием доступа.


Курсоры Основная проблема "встраивания" предложения SELECT в программу заключается в том, что SELECT, как правило, порождает таблицу с множеством строк и столбцов, а включающий язык не обладает хорошими средствами, позволяющими оперировать одновременно более чем одной записью (строкой). По этим причинам необходимо обеспечить своего рода мост между уровнем множеств языка SQL и уровнем записей включающего языка. Такой мост обеспечивают курсоры. Курсор состоит, по существу, из некоторого рода указателя, который может использоваться для просмотра множества записей. Поочередно указывая каждую запись в данном множестве, он обеспечивает возможность обращения к этим записям по одной одновременно.


Создание базовых таблиц Базовые таблицы описываются в SQL с помощью предложения CREATE TABLE (создать таблицу), синтаксис которого имеет небольшие различия в различных СУБД. Однако все они поддерживают следующую минимальную форму: CREATE TABLE базовая_таблица (столбец тип_данных [,столбец тип_данных ]...); где ТИП_ДАННЫХ должен принадлежать к одному из типов данных, поддерживаемых СУБД






Логическая концептуальная схема БД «Поставщики-Детали» Код_рег Имя_ре г Код_Поста вщ Имя_Поста вщ Код_города Код_Поста вщ Код_Детал и Количеств о Код_Детал и Название_ дет Код_цвета Код_горо да Имя_горо да Код_реги она Код_Цвета Наимен_цвета Регион Город Поставка Поставщик Детали Цвета


























Удаление базовой таблицы Существующую базовую таблицу можно в любой момент уничтожить с помощью предложения DROP TABLE (уничтожить таблицу): DROP TABLE базовая_таблица; по которому удаляется описание таблицы, ее данные, связанные с ней представления и индексы, построенные для столбцов таблицы








О предложении SELECT Все запросы на получение практически любого количества данных из одной или нескольких таблиц выполняются с помощью единственного предложения SELECT. В общем случае результатом реализации предложения SELECT является другая таблица. К этой новой (рабочей) таблице может быть снова применена операция SELECT и т.д., т.е. такие операции могут быть вложены друг в друга. Представляет исторический интерес тот факт, что именно возможность включения одного предложения SELECT внутрь другого послужила мотивировкой использования прилагательного "структуризированный" в названии языка SQL.


Предложение SELECT может использоваться как: 1.самостоятельная команда на получение и вывод строк таблицы, сформированной из столбцов и строк одной или нескольких таблиц (представлений); 2.элемент WHERE- или HAVING-условия (сокращенный вариант предложения, называемый "вложенный запрос"); 3.фраза выбора в командах CREAT VIEW, DECLARE CURSOR или INSERT; 4.средство присвоения глобальным переменным значений из строк сформированной таблицы (INTO- фраза).


SELECT (выбрать) данные из указанных столбцов и (если необходимо) выполнить перед выводом их преобразование в соответствии с указанными выражениями и (или) функциями FROM (из) перечисленных таблиц, в которых расположены эти столбцы WHERE (где) строки из указанных таблиц должны удовлетворять указанному перечню условий отбора строк GROUP BY (группируя по) указанному перечню столбцов с тем, чтобы получить для каждой группы единственное агрегированное значение, используя во фразе SELECT SQL-функции SUM (сумма), COUNT (количество), MIN (минимальное значение), MAX (максимальное значение) или AVG (среднее значение) HAVING (имея) в результате лишь те группы, которые удовлетворяют указанному перечню условий отбора групп









= (больше или равно), которые могут предваряться оператором NOT, создавая, например," title="Выборка c использованием фразы WHERE (выборка с условием) Для отбора нужных строк таблицы можно использовать операторы сравнения: = (равно), (не равно), (больше), >= (больше или равно), которые могут предваряться оператором NOT, создавая, например," class="link_thumb"> 52 Выборка c использованием фразы WHERE (выборка с условием) Для отбора нужных строк таблицы можно использовать операторы сравнения: = (равно), (не равно), (больше), >= (больше или равно), которые могут предваряться оператором NOT, создавая, например, отношения "не меньше" и "не больше". Возможность использования нескольких условий, соединенных логическими операторами AND, OR, AND NOT и OR NOT, позволяет осуществить более детальный отбор строк. = (больше или равно), которые могут предваряться оператором NOT, создавая, например,"> = (больше или равно), которые могут предваряться оператором NOT, создавая, например, отношения "не меньше" и "не больше". Возможность использования нескольких условий, соединенных логическими операторами AND, OR, AND NOT и OR NOT, позволяет осуществить более детальный отбор строк."> = (больше или равно), которые могут предваряться оператором NOT, создавая, например," title="Выборка c использованием фразы WHERE (выборка с условием) Для отбора нужных строк таблицы можно использовать операторы сравнения: = (равно), (не равно), (больше), >= (больше или равно), которые могут предваряться оператором NOT, создавая, например,"> title="Выборка c использованием фразы WHERE (выборка с условием) Для отбора нужных строк таблицы можно использовать операторы сравнения: = (равно), (не равно), (больше), >= (больше или равно), которые могут предваряться оператором NOT, создавая, например,">


Выбраны детали, произведенные года с кодом цвета 111




Использование LIKE Обычная форма "имя_столбца LIKE текстовая_константа" для столбца текстового типа позволяет отыскать все значения указанного столбца, соответствующие образцу, заданному "текстовой_константой". Символы этой константы интерпретируются следующим образом: символ * (звездочка) – заменяет любую последовательность из N символов (где N может быть нулем), все другие символы означают просто сами себя.



Запрос с параметром Можно использовать LIKE для создания так называемого ЗАПРОСА С ПАРАМЕТРОМ, когда при запуске запроса на выполнение пользователь сам задаст условие отбора: "имя_столбца LIKE [текст для отбора]"



Выборка с упорядочением Простейший вариант этой фразы - упорядочение строк результата по значению одного из столбцов с указанием порядка сортировки по возрастанию ASC (ASCending) или убыванию DESC (DESCending), или без такого указания. (По умолчанию строки будут сортироваться в порядке возрастания значений в указанном столбце - ASC.)




Агрегирование данных SQL существует ряд специальных стандартных функций (SQL-функций). Каждая из этих функций оперирует совокупностью значений столбца некоторой таблицы и создает единственное значение, определяемое так: COUNT - число значений в столбце SUM - сумма значений в столбце AVG - среднее значение в столбце MAX - самое большое значение в столбце MIN - самое малое значение в столбце. Для функций SUM и AVG рассматриваемый столбец должен содержать числовые значения.


Следует отметить, что здесь столбец - это столбец виртуальной таблицы, в которой могут содержаться данные не только из столбца базовой таблицы, но и данные, полученные путем функционального преобразования и (или) связывания символами арифметических операций значений из одного или нескольких столбцов. При этом выражение, определяющее столбец такой таблицы, может быть сколь угодно сложным, но не должно содержать SQL-функций (вложенность SQL-функций не допускается). Однако из SQL-функций можно составлять любые выражения. Аргументу всех функций может предшествовать ключевое слово DISTINCT (различный), указывающее, что избыточные дублирующие значения должны быть исключены перед тем, как будет применяться функция.


Пример агрегирования Подсчитывается суммарное количество деталей с наименованием Гайка (=531) и количество непустых значений в поле Кол_во, соответствующих записями с наименованием детали Гайка (3 таких поля)





Фраза HAVING Фраза HAVING играет такую же роль для групп, что и фраза WHERE для строк: она используется для исключения групп, точно так же, как WHERE используется для исключения строк. Эта фраза включается в предложение лишь при наличии фразы GROUP BY, а выражение в HAVING должно принимать единственное значение для группы. Предложения модификации данных SQL Модификация данных может выполняться с помощью предложений DELETE (удалить), INSERT (вставить) и UPDATE (обновить). Подобно предложению SELECT они могут оперировать как базовыми таблицами, так и представлениями. Однако по ряду причин не все представления являются обновляемыми.




Предложение INSERT имеет один из следующих форматов: INSERT INTO {базовая таблица | представление} [(столбец [,столбец]...)] VALUES ({константа | переменная} [,{константа | переменная}]...); или INSERT INTO {базовая таблица | представление} [(столбец [,столбец]...)] подзапрос; В первом формате в таблицу вставляется строка со значениями полей, указанными в перечне фразы VALUES (значения), причем i-е значение соответствует i-му столбцу в списке столбцов (столбцы, не указанные в списке, заполняются NULL-значениями). Если в списке VALUES фразы указаны все столбцы модифицируемой таблицы и порядок их перечисления соответствует порядку столбцов в описании таблицы, то список столбцов в фразе INTO можно опустить. Во втором формате сначала выполняется подзапрос, т.е. по предложению SELECT в памяти формируется рабочая таблица, а потом строки рабочей таблицы загружаются в модифицируемую таблицу. При этом i-й столбец рабочей таблицы (i-й элемент списка SELECT) соответствует i-му столбцу в списке столбцов модифицируемой таблицы.


Предложение UPDATE имеет следующий формат: UPDATE (базовая таблица | представление} SET столбец = значение [, столбец = значение]... где значение – это столбец | выражение | константа | переменная, и может включать столбцы лишь из обновляемой таблицы, т.е. значение одного из столбцов модифицируемой таблицы может заменяться на значение ее другого столбца или выражения, содержащего значения нескольких ее столбцов, включая изменяемый. При отсутствии WHERE фразы обновляются значения указанных столбцов во всех строках модифицируемой таблицы. WHERE фраза позволяет сократить число обновляемых строк, указывая условия их отбора. В значениях, находящихся в правых частях равенств фразы SET, следует уточнять имена используемых столбцов, предваряя их именем таблицы.

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

Язык описания данных (ЯОД) предназначен для задания схемы базы данных, которая включает описание структуры базы данных и налагаемых на нее ограничений целостности в рамках правил, регламентированных той моделью данных, которая поддерживается рассматриваемой СУБД. Помимо указанных функций, ЯОД обеспечивают также возможности задания ограничений доступа к данным или полномочий пользователей.

Язык манипулирования данными (ЯМД) позволяет запрашивать предусмотренные в системе операции над данными из базы данных. После выполнения оператора, записанного на ЯМД, информационное заполнение базы данных изменяется

Язык запросов (ЯЗ) позволяет выбирать данные из БД, агрегировать и подвергать всевозможной аналитической обработке.

Аналогично языку определения данных ЯМД не обязательно выступает в форме синтаксически самостоятельного языка СУБД. На практике разделение ЯОД и ЯМД играет скорее методическую роль или используется в технологических целях.

ЯОД, ЯМД и ЯЗ не всегда синтаксически оформляется в виде самостоятельных языков. Наоборот, в настоящее время все они вошли в состав единого реляционного язык SQL. С 1986 г. был принят ряд версий международного стандарта SQL. Он используется в большинстве коммерческих реляционных СУБД, в том числе и на персональных компьютерах.

Некоторые СУБД располагают такими языками, которые не только реализуют функции определения данных и манипулирования данными, но и обладают средствами, свойственными универсальным языкам программирования. Благодаря этому они могут использоваться как функционально полное инструментальное средство для создания приложений систем баз данных. В качестве примера приведем языки систем dBase, Clipper, Paradox.

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



Контрольные вопросы по теме.

1.В каких формах могут быть реализованы языковые средства модели данных в СУБД?

2.Какие две основные функции выполняют языковые средства моделей данных?

3.Для каких целей служат языки определения данных в СУБД?

4.Что такое схема базы данных, какая связь существует между схемой и языком определения данных?

5.Средствами каких языков определяются в СУБД междууровневые отображения данных?

6.Какие функции выполняют языки манипулирования данными?

7.Приведите пример языка, который выполняет функции как определения данных, так и манипулирования данными.

8.Каково назначение языков запросов СУБД?

9.Для каких целей разрабатывались языки программирования баз данных?