Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Отслеживание свободного места




На страницы PFS (Page Free Space) записывается состояние размещения каждой страницы, информация о том, была ли отдельная страница использована или нет, а также количество свободного места на каждой странице. В PFS на каждую страницу приходится по одному байту, хранящему информацию о том, была ли страница использована или нет, а если была — то пустая она, или ее заполнение находится в промежутке от 1 до 50 процентов, от 51 до 80 процентов, от 81 до 95 процентов или от 96 до 100 процентов.

После размещения объекта в экстенте компонент Database Engine использует PFS-страницы для записи информации о том, какие страницы в экстенте использованы, а какие свободны. Эти сведения используются компонентом Database Engine при выборе новой страницы для размещения объектов. Количеством свободного места на странице можно управлять только в случае кучи и страниц с типами данных «Текст» и «Примечание». Это используется при поиске страницы, обладающей свободным местом, достаточным для сохранения в ней новой добавляемой строки. Для индексов не требуется, чтобы отслеживалось свободное место на странице, так как место, в которое будет вставляться новая строка, назначается значениями ключа индекса.

PFS-страница является первой страницей после страницы заголовка файла в файле данных (страница номер 1). Потом следует GAM-страница (страница номер 2), а затем SGAM-страница (страница номер 3). После первой PFS-страницы находится PFS-страница размером примерно 8 000 страниц. После первой GAM-страницы на странице 2 находится другая GAM-страница с 64 000 экстентов и другая SGAM-страница с 64 000 экстентов находится после первой SGAM-страницы на странице номер 3. На рис. 10.5. показана последовательность страниц, используемая компонентом Database Engine, для размещения и управления экстентами.

 

Рис.10.5. Страницы файла, используемые для размещения и управления экстентами.

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

 

Более подробно с материалами данной лекции можно ознакомиться в [1-3]


Контрольные тесты

 

Задача 1. Общие представления об архитектуре базы данных Microsoft SQL Server.

 

Вариант 1.

Какие уровни описания данных различают в СУБД Microsoft SQL Server?

 

ð концептуальный

ð внешний

ð+ логический

ð+ физический

ð+ внутренний

 

 

Вариант 2.

Какие уровни описания данных не представлены в СУБД Microsoft SQL Server?

ð+ концептуальный

ð+ внешний

ð логический

ð физический

ð внутренний

 

Вариант 3.

Из какого уровня в какой и кто осуществляет отображение в СУБД Microsoft SQL Server?

ð из внешнего во внутренний, пользователь

ð из внешнего во внутренний, СУБД

ð из логического в физический, пользователь

ð+ из логического в физический, СУБД

ð+ из логического во внутренний, СУБД

ð из логического во внутренний, пользователь

 

Задача 2. Как определяется логический уровень представления данных в СУБД Microsoft SQL Server?

 

 

Вариант 1.

Какие понятия являются понятиями логического уровня СУБД Microsoft SQL Server?

ð файлы

ð группы файлов

ð+ таблицы

ð страницы

ð+ представления

 

 

Вариант 2.

Какие понятия не являются понятиями логического уровня СУБД Microsoft SQL Server?

ð+ файлы

ð группы файлов

ð таблицы

ð+ страницы

ð представления

ð+ экстенты

ð ограничения целостности

ð типы данных

 

 

Вариант 3.

Какие понятия логического уровня используются для обеспечения целостности базы данных?

 

ð страницы

ð представления

ð индексы

ð+ ограничения

ð+ триггеры

ð экстенты

ð+ правила

 

 

Задача 3. Как определяется физический уровень представления данных в СУБД Microsoft SQL Server?

 

 

Вариант 1.

Какие понятия являются понятиями физического уровня СУБД Microsoft SQL Server?

 

ð+ файлы

ð+ группы файлов

ð таблицы

ð+ страницы

ð представления

 

 

Вариант 2.

Какие понятия не являются понятиями физического уровня СУБД Microsoft SQL Server?

ð файлы

ð группы файлов

ð+ таблицы

ð страницы

ð+ представления

ð экстенты

ð+ ограничения целостности

ð+ типы данных

 

 

Вариант 3.

Какое понятие используется в качестве минимальной физической составляющей файла при обменах между оперативной и внешней памятью?

ð группа файлов

ð экстент

ð+ страница

ð индекс

ð представление

 

Задача 4. Как выглядит база данных SQL Server на физическом уровне?

 

 

Вариант 1.

Какие типы файлов содержит база данных SQL Server на физическом уровне?

 

ð+ первичный файл

ð+ вторичный файл

ð+ файл журналов транзакций

ð страница

ð секция

 

 

Вариант 2.

Как формируется размер файла?

 

ð+ пользователь задает максимальный размер файла

ð+ пользователь может предоставить файлам возможность автоматически увеличиваться по мере ввода данных

ð пользователь не дает никаких данных

ð пользователь указывает максимально доступное место на диске

 

 

Вариант 3.

Что может входить в состав файловых групп?

 

ð+ первичный файл

ð+ вторичный файл

ð файл журналов транзакций

ð секция

 

Задача 5. Как осуществляется поиск данных в физической базе данных?

 

 

Вариант 1.

Что является идентификатором поиска на уровне дисковой памяти?

 

ð первичный ключ

ð+ идентификатор файла

ð+ идентификатор файла, номер страницы

ð идентификатор файла, номер страницы, номер записи

 

 

Вариант 2.

Что не используется в качестве идентификатора при поиске на уровне дисковой памяти?

 

ð+ первичный ключ

ð идентификатор файла

ð идентификатор файла, номер страницы

ð+ идентификатор файла, номер страницы, номер записи

 

 

Вариант 3.

Как выглядит номер страницы файла?

 

ð порядковый номер

ð+ номер файла, порядковый номер

ð номер файла, номер экстента, порядковый номер

ð номер файла, порядковый номер, значение ключа

 

 

Задача 6. В виде каких структур хранятся таблицы в базе данных SQL Server?

 

 

Вариант 1.

Какие понятия используются при описании представления таблиц в базе данных SQL Server?

 

ð+ секция

ð куча

ð+ коллекция страниц

ð+ сбалансированное дерево

 

 

Вариант 2.

Какие понятия используются при описании представления индексов в базе данных SQL Server?

 

ð секция

ð куча

ð коллекция страниц

ð+ сбалансированное дерево

 

 

Вариант 3.

В каких структурах используются двунаправленные списки?

 

ð секция

ð куча

ð коллекция страниц

ð+ сбалансированное дерево

 

Задача 7. Как осуществляется управление использованием экстентов и свободной памяти?

 

 

Вариант 1.

Какие структуры используются для управления использованием экстентов?

 

ð секции

ð+ глобальная карта распределения

ð+ общая глобальная карта распределения

ð сбалансированное дерево

 

 

Вариант 2.

Какие структуры используются для управления использованием смешанных экстентов?

 

ð секции

ð глобальная карта распределения

ð+ общая глобальная карта распределения

ð сбалансированное дерево

 

 

Вариант 3.

Какие структуры используются для управления использованием однородных экстентов?

 

ð секции

ð+ глобальная карта распределения

ð общая глобальная карта распределения

ð сбалансированное дерево

 

 

Задача 8. Как происходит отслеживание свободного места?

 

 

Вариант 1.

Как происходит отслеживание свободного экстента?

 

ð+ выбирается бит, равный 1 в глобальной карте распределения

ð+ выбирается бит, равный 1 в общей глобальной карте распределения

ð выбирается бит, равный 0 в общей глобальной карте распределения

ð выбирается бит, равный 0 в глобальной карте распределения

ð выбирается бит, равный 1 на странице PFS

ð выбирается бит, равный 0 на странице PFS

 

 

Вариант 2.

Как выбирается свободная страница?

ð выбирается бит, равный 1 в глобальной карте распределения

ð выбирается бит, равный 1 в общей глобальной карте распределения

ð выбирается бит, равный 0 в общей глобальной карте распределения

ð выбирается бит, равный 0 в глобальной карте распределения

ð+ выбирается бит, равный 1 на странице PFS

ð выбирается бит, равный 0 на странице PFS

 

 

Вариант 3.

В каком случае можно добавлять данные в неполностью заполненную страницу?

 

ð+ если она заполнена от 1 до 50%

ð+ если она заполнена от 51 до 80%

ð+ если она заполнена от 81 до 95%

ð+ если она заполнена до 96 %


Литература

 

1. http://msdn.microsoft.com

2. Реализация баз данных Microsoft SQL Server 7.0. Учебный курс: официальное пособие Microsoft для самостоятельной подготовки/ Пер с англ. – М.: Издательско-торговый дом «Русская Редакция», 2000.

3. Мамаев Е. Microsoft SQL Server 2000 в подлиннике. СПб.: Изд-во BHV, 2001.


Лекция 11. Программное обеспечение работы
с современными базами данных

В лекции рассматриваются общие принципы организации программного обеспечения работы с реляционными базами данных, включающего

· создание и ведение базы данных;

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

Ключевые слова: программное обеспечение баз данных, средства работы с данными, средства создания интерфейса с базой данных, язык SQL, интерпретируемый язык запросов.

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

 

11.1. Основные задачи программного обеспечения баз данных

При работе с реляционными базами данных можно условно выделить две основные задачи:

· собственно работа с базой данных, включающая создание и ведение базы данных (создание структур таблиц, добавление записи в таблицу, удаление записи, обновление, выборка нужной записи);

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

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

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

Таблица 11.1

Возможные варианты использования программного обеспечения
в СУБД MS SQL Server

Средства ведения баз данных на сервере MS SQL Средства разработки клиентских приложений
Службы SQL-сервер (MS SQL server и др.) Программное обеспечение клиента SQL-сервер (Transact SQL, SQL Server Query Analyzer и др.) MS Access (ODBC) MS Visual Basic MS Visual Studio MS Visual FoxPro Java (JDBC) Borland Delphi Borland C++Builder и др. Библиотеки функций (API, ODBC и др.)

 

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

 

11.2. Проблемы создания и ведения реляционных баз данных

При создании базы данных и организации работы с ней возникают три основные проблемы:

· собственно создание базы данных (создание таблиц, индексов, ограничений целостности);

· обеспечение безопасности и разграничения доступа;

· организация доступа к элементам таблицы (выборка, редактирование, удаление, добавление).

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

Более подробно рассмотрим возможный путь решения третьей проблемы. Организация доступа к базе данных является важнейшей функцией информационной системы. Пользователи постоянно работают с данными. Рассмотрим простой пример. Пусть у нас есть таблица СТУДЕНТ, хранящая информацию следующего рода:

СТУДЕНТ (Код студента, Фамилия, Имя, Отчество, Дата поступления).

Теперь мы хотим выполнить некоторый запрос к базе данных, результатом которого должны стать те строки таблицы СТУДЕНТ, для которых дата поступления окажется больше 01.06.2006. Рассмотрим последовательность действий для реализации данного запроса.

1. Получаем доступ к таблице СТУДЕНТ и устанавливаем указатель текущей строки на первую строку таблицы.

2. Анализируем поле «Дата поступления» в текущей строке.

3. Если значение «Дата поступления» > «01.06.2006», распечатываем на экране данные об абитуриенте.

4. Если таблица не кончилась, перемещаем указатель текущей строки на следующую строку и переходим к шагу 2, иначе заканчиваем работу.

Любой человек, знакомый с программированием, легко представит себе реализацию подобного алгоритма на любом языке программирования высокого уровня. Вот, в частности, пример реализации на Object Pascal:

 

Table.First;

while (not Table.Eof) do

begin

if FieldByName(«Дата поступления»).Value >

«01.06.2006»

then List.Add(FieldByName(«Фамилия»).AsString);

Table.Next;

end;

 

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

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

Кроме того, должен учитываться механизм взаимодействия в рамках архитектуры «клиент – сервер». Пользовательская программа выполняется на компьютере – клиент. Запрос к базе данных реализуется компьютером – сервером. Необходим механизм формирования в пользовательской программе клиента запроса к базе данных сервера. В этом случае навигационный подход неприемлем. В связи с этим, для работы с базами данных разработан и используется другой подход, основанный на использовании так называемых языков запросов, которые задают не последовательность необходимых действий, а условия, которым должен удовлетворять результат (при добавлении столбца, выборке записи, добавлении записи и т. п.). Такой подход решает все три вышеперечисленные проблемы.

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

Язык SQL (Structured Query Language – структурированный язык запросов) применяется для общения пользователя с реляционной базой данных и состоит из трех частей [2]:

· DDL (Data Definition Language) – язык определения данных. Предназначен для создания базы данных (таблиц, индексов и т.д.) и редактирования ее схемы.

· DCL (Data Control Language) – язык управления данными. Содержит операторы для разграничения доступа пользователей к объектам базы данных.

· DML (Data Manipulation Language) – язык обработки данных. Содержит операторы для внесения изменений в содержимое таблиц базы данных.

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

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

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

SELECT Фамилия

FROM Студент

WHERE Дата поступления > «01.06.2006»

 

Может сложиться ложное впечатление, что появление языка SQL является альтернативой языков программирования высокого уровня. Это не соответствует действительности. Выполнение запроса средствами SQL все равно сводится к работе с отдельными записями, и от этого никуда не уйти. Важно понимать, что появление языка SQL дало, по крайней мере, две новые возможности.

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

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

 

11.3. Понятие языка SQL и его основные части

11.3.1. История возникновения и стандарты языка SQL

История возникновения языка SQL восходит к 1970 году [1], когда доктор Е.Ф. Кодд предложил реляционную модель в качестве новой модели базы данных. Для доказательства жизнеспособности новой модели данных внутри компании IBM был создан мощный исследовательский проект, получивший название System/R. Проект включал разработку собственно реляционной СУБД и специального языка запросов к базе данных. Так в начале 70-х годов появился первый исследовательский прототип реляционной СУБД. Для этого прототипа разрабатывались и опробовались разные языки запросов, один из которых получил название SEQUEL (Structured English Query Language). С момента создания и до наших дней этот язык претерпел массу изменений, но идеология осталась неизменной

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

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

· ANSI (American National Standards Institute) – Американский национальный институт стандартов;

· ISO (International Standards Organization) – Международную организацию по стандартизации.

Работа над официальным стандартом языка SQL началась в 1982 году [8] в рамках комитета ANSI. В 1986 году (обратите внимание, сколько времени ушло на разработку стандарта и согласование деталей!) был утвержден первый вариант стандарта ANSI, а в 1987 году этот стандарт был утвержден и ISO. В 1989 году стандарт претерпел незначительные изменения, но именно этот вариант получил название SQL-1 или SQL-89. В чем особенность SQL-89? За время разработки стандарта (1982–1989 гг.) были созданы, представлены на рынке и активно использовались несколько различных СУБД, в которых в том или ином виде был реализован некоторый диалект языка SQL. С учетом того, что разработкой стандартов занимались те же люди, кто внедрял SQL в СУБД, стандарт SQL-89 представлял собой плод множества компромиссов, приведших к наличию в нем большого количества «белых пятен», т.е. мест, которые не были описаны, а отданы на усмотрение разработчиков диалекта. В результате чуть ли не все имеющиеся диалекты стали совместимыми со стандартом, но особой пользы это не принесло.

Следующая реализация стандарта была призвана решить эту проблему. В результате длительных обсуждений и согласований в 1992 году был принят новый стандарт ANSI SQL-2 или SQL-92. SQL-92, который заполнил многие «белые пятна», впервые добавив в стандарт возможности, еще не реализованные в существующих коммерческих СУБД.

Работа над стандартизацией продолжается и далее. Появились стандарты SQL-1999, SQL-2003. Тем не менее, все эти стандарты не решили всех проблем, связанных с наличием нескольких диалектов языка. Как правило, разработчики как игнорировали, так и игнорируют некоторые положения стандарта, с одной стороны, отказываясь реализовывать некоторые его части и, с другой стороны, реализуя то, что отсутствует в стандарте. Несмотря на имеющиеся отличия, все коммерческие СУБД поддерживают некоторое ядро языка, описанное в стандарте, одинаково. Отличий не очень много, они не носят слишком принципиального характера. Хотя каждая СУБД по-прежнему поддерживает свой диалект языка.

В систему управления базами данных Microsoft SQL Server входит язык Transact-SQL, разработанный на основе одного из стандартов SQL..

 

11.3.2. Достоинства языка SQL

Для ознакомления с достоинствами языка обратимся к соответствующей литературе [1]. Вот некоторые из них:

· межплатформенная переносимость;

· наличие стандартов;

· одобрение и поддержка компанией IBM (СУБД DB2);

· поддержка со стороны компании Microsoft (СУБД SQL Server, протокол ODBC и технология ADO);

· реляционная основа;

· высокоуровневая структура;

· возможность выполнения специальных интерактивных запросов;

· обеспечение программного доступа к базам данных;

· возможность различного представления данных;

· полноценность как языка, предназначенного для работы с базами данных;

· возможность динамического определения данных;

· поддержка архитектуры клиент/сервер;

· поддержка корпоративных приложений;

· расширяемость и поддержка объектно-ориентированных технологий;

· возможность доступа к данным в Интернете;

· интеграция с языком Java (протокол JDBC);

· промышленная инфраструктура.

 

11.3.2. Общая характеристика SQL

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

 

Терминология

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

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

 

Разновидности SQL

Как отмечалось выше, в отличие от «обычных» языков программирования в SQL отсутствует возможность объявления переменных, нет инструкции IF, нет цикла FOR и т.д. Собственно программирование (разработка прикладных программ) на подобном языке практически невозможно. Поэтому к настоящему моменту используются следующие технологии (режимы) работы с базой данных на языке SQL (в некоторых источниках эти технологии называют разновидностями языка SQL):

· формирование непосредственно пользователем запроса на языке SQL в интерактивном режиме (интерактивный SQL);

· формирование запроса на языке SQL в прикладной программме (программный или встроенный SQL:

- статическое формирование запроса (статический SQL);

- динамическое формирование запроса (динамический SQL);

- формирование запроса с помощью библиотек (API – интерфейсы вызова подпрограмм).

В интерактивном режиме работы с базой данных: пользователь работает с базой данных в прямом диалоге: вводит запрос на языке SQL – получает результат, вводит другой запрос – получает другой результат и т.д.

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

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

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

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

В настоящем пособии для всех указанных технологий (разновидностей SQL) будут приведены основные идеи и рассмотрены ключевые концепции. Интерактивный SQL будет рассмотрен более подробно, чем программный. Детальное рассмотрение статического, динамического SQL и различных API-интерфейсов (ODBC, JDBC, DB Library и др.) выходит за рамки нашего курса.

Краткие итоги: В лекции рассматриваются общие принципы организации программного обеспечения работы с реляционными базами данных, включающего

· создание и ведение базы данных;

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

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

 

По языку SQL написано достаточно много литературы. Для более подробного знакомства можно указать, в частности [1-6].


Контрольные тесты

 

Задача 1. Какие основные направления использования программного обеспечения
клиент-серверных СУБД?

 

Вариант 1.

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

ð+ создание базы данных

ð+ организация работы с базой данных

ð+ создание пользовательского интерфейса

ð разработка программ СУБД

ð разработка вычислительных процедур

 

 

Вариант 2.

Что можно создавать с помощью программного обеспечения компьютера-сервера?

ð прикладную программу

ð интерфейс пользователя

ð+ базу данных

ð+ запросы к базе данных

 

 

Вариант 3.

Что можно делать с помощью программного обеспечения компьютера-сервера и компьютера-клиента?

ð+ Прикладную программу

ð+ Интерфейс пользователя

ð Базу данных

ð+ Запросы к базе данных

 

Задача 2.

Вариант 1.

Какие средства программирования могут быть использованы для ведения баз данных на сервере SQL-Server?

ð+ MS SQL-Server

ð библиотеки функций

ð+ Transact SQL

ð MS Acces

ð MS Visual Basic

 

Вариант 2.

Какие средства программирования могут быть использованы для разработки клиентской части?

ð+ библиотеки функций

ð+ Transact SQL

ð+ MS Acces

ð+ MS Visual Basic

ð+ MS Visual Studio

 

 

Вариант 3.

Операторы каких средств программирования могут быть использованы как в серверной так и в клиентской части?

 

ð библиотеки функций

ð+ Transact SQL

ð MS Acces

ð MS Visual Basic

ð MS Visual Studio

 

 

Задача 3. В чем состоит отличие процедурного языка программирования от языка
запросов при работе с таблицами?

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...