Теоретическая часть.
Использование SQL в прикладном программировании
Индексы могут быть первичными и вторичными. Например, первичным индексом могут служить поля, отмеченные при создании базы данных как ключевые. А вторичные индексы могут создаваться из других полей как в процессе создания самой базы данных, так и позднее в процессе работы с ней. Вторичным индексам присваиваются имена — Идентификаторы, по которым их можно использовать. Если индекс включает в себя… Читать ещё >
Теоретическая часть. Использование SQL в прикладном программировании (реферат, курсовая, диплом, контрольная)
Основные понятия
База данныхэто прежде всего набор таблиц, хотя, как мы увидим позднее, в базу данных могут входить также процедуры и ряд других объектов.
Таблицу можно представлять себе как обычную двумерную таблицу с характеристиками (атрибутами) какого-то множества объектов. Таблица имеет имя — идентификатор, по которому на нее можно сослаться.
Столбцы таблицы соответствуют тем или иным характеристикам объектов — полям. Каждое поле характеризуется именем и типом хранящихся данных. Имя поля — это идентификатор, который используется в различных программах для манипуляции данными. Это имя записывается латинскими символами. Тип поля характеризует тип хранящихся в поле данных. Это могут быть строки, числа, булевы значения, большие тексты, изображения и т. п.
Каждая строка таблицы соответствует одному из объектов, которые описаны в данной таблице. Она называется записью и содержит значения всех полей, характеризующие данный объект.
При построении таблиц баз данных важно обеспечивать непротиворечивость информации. Обычно это делается введением ключевых полей — обеспечивающих уникальность каждой записи. Ключевым может быть одно или несколько полей.
Значения полей вводятся пользователем и хранятся в базе данных. Кроме таких полей в некоторых системах можно вводить вычисляемые поля. Значения таких полей не вводятся пользователем, а вычисляются автоматически на основе значений других полей записи.
При работе с таблицей пользователь или программа как бы скользит курсором по записям. В каждый момент времени есть некоторая текущая запись, с которой и ведется работа. Записи в таблице базы данных физически могут располагаться без какоголибо порядка, просто в последовательности их ввода в базу. Но когда данные таблицы предъявляются пользователю, они должны быть упорядочены. Для упорядочивания данных используется понятие индекса. Индекс показывает, в какой последовательности желательно просматривать таблицу. Он является как бы посредником между пользователем и таблицей.
Курсор скользит по индексу, а индекс указывает на ту или иную запись таблицы. Для пользователя таблица выглядит упорядоченной, причем он может сменить индекс и последовательность просматриваемых записей изменится. Но в действительности это не связано с какой-то перестройкой самой таблицы и с физическим перемещением в ней записей. Меняется только индекс, т. е. последовательность ссылок на записи.
Индексы могут быть первичными и вторичными. Например, первичным индексом могут служить поля, отмеченные при создании базы данных как ключевые. А вторичные индексы могут создаваться из других полей как в процессе создания самой базы данных, так и позднее в процессе работы с ней. Вторичным индексам присваиваются имена — Идентификаторы, по которым их можно использовать. Если индекс включает в себя несколько полей, то упорядочивание базы данных сначала осуществляется по первому полю, а для записей, имеющих одинаковые значения первого поля — по второму и т. д. Например, базу данных персонала некоторой организации можно индексировать по отделам, а внутри каждого отдела — по алфавиту.
База данных может содержать много различных таблиц. Прикладные программы (приложения) часто работают не с отдельными таблицами, а с некоторой совокупностью таблиц. В этом случае в приложении устанавливается связь нескольких таблиц друг с другом. Обычно одна из них выступает как главная, а другая или несколько других — как вспомогательные, управляемые главной. Главная и вспомогательная таблицы связываются друг с другом ключом. В качестве ключа могут выступать какие-то поля, присутствующие в обеих таблицах. Курсор скользит по индексу главной таблицы и каждой записи в главной таблице ключ ставит в соответствие в общем случае множество записей вспомогательной таблицы.
В общем случае база данных помимо таблиц может содержать также другие объекты:
- -вложенные таблицы — в этом случае значению поля одной таблицы соответствует некоторая другая таблица. Такие вложенные таблицы поддерживает, например, Oracle 8
- -обзоры или просмотры (View) — виртуальные таблицы, содержащие некоторые подмножества записей, отобранные по каким-то критериям
- -триггеры — это подпрограммы, автоматически выполняемые до или после изменения записи в таблице
- -генераторы, создающие уникальные значения, необходимые для ключевых полей
- -хранимые процедуры — подпрограммы, принимающие какие-то параметры и возвращающие результаты заданной обработки данных
Создают базы данных и обрабатывают запросы к ним системы управления базами данных — СУБД. Известно множество СУБД, различающихся своими возможностями или обладающих примерно равными возможностями и конкурирующих друг с другом: Paradox, dBase, Microsoft Access, FoxPro, Oracle, InterBase, Sybase и много других.
Разные СУБД по разному организуют и хранят базы данных. Например, Paradox и dBase используют для каждой таблицы отдельный файл. В этом случае база данных — это каталог, в котором хранятся файлы таблиц. В Microsoft Access и в InterBase несколько таблиц хранится как один файл. В этом случае база данных — это имя файла с путем доступа к нему. Системы типа клиент/сервер, такие, как серверы Sybase или Microsoft SQL, хранят все данные на отдельном компьютере и общаются с клиентом посредством специального языка, называемого SQL.
Поскольку конкретные свойства баз данных очень разнообразны, пользователю было бы весьма затруднительно работать, если бы он должен был указывать в своем приложении все эти каталоги, файлы, серверы и т. п. Да и приложение часто пришлось бы переделывать при смене, например, структуры каталогов или при переходе с одного компьютера на другой. Чтобы решить эту проблему, используют псевдонимы баз данных. Псевдоним (alias) содержит всю информацию, необходимую для обеспечения доступа к базе данных. Эта информация сообщается только один раз при создании псевдонима. А приложение для связи с базой данных использует псевдоним. В этом случае приложению безразлично, где физически расположена та или иная база данных, а часто безразлична и СУБД, создавшая и обслуживающая эту базу данных. При смене системы каталогов, сервера и т. п. ничего в приложении переделывать не надо. Достаточно, чтобы администратор базы данных ввел соответствующую информацию в псевдоним. При работе с базами данных часто используется кэширование всех изменений. Это означает, что все изменения данных, вставка новых записей, удаление существующих записей, т. е. все манипуляции с данными, проводимые пользователем, сначала делаются не в самой базе данных, а запоминаются в памяти во временной, виртуальной таблице. И только по особой команде после всех проверок правильности вносимых в базу данных пользователю предоставляется возможность или зафиксировать все эти изменения в базе данных, или отказаться от этого и вернуться к тому состоянию, которое было до начала редактирования.
Фиксация изменений в базе данных осуществляется с помощью транзакций. Это совокупность команд, изменяющих базу данных. На протяжении транзакции пользователь может что-то изменять в данных, но это только видимость. В действительности все изменения сохраняются в памяти. И пользователю предоставляется возможность завершить транзакцию или внесением всех изменения в реальную базу данных, или отказом от этого с возвратом к тому состоянию, которое было до начала транзакции.
Важная функция транзакции _обеспечение целостности данных. Транзакция может включать в себя ряд запросов, циклы и т. п. Если во время какого-то из этих запросов произошел сбой, то не фиксируются результаты всех запросов данной транзакции. Таким образом, исключаются случаи, когда часть базы данных изменена, часть нет и в результате целостность и непротиворечивость данных нарушена.