- •1. Общие понятия ис.
- •Жизненный цикл ис.
- •Пользователи ис делятся на внешних и внутренних.
- •Базы данных.
- •Проектирование бд.
- •Факто-графические системы.
- •2. Ограничения целостности. Виды и реализация.
- •Обеспечение целостности (12 Восстановление данных)
- •3. Сетевая и иерархическая модель данных Сетевая модель
- •Типовые операции с данными:
- •Иерархическая модель.
- •4. Реляционная модель данных
- •Математический аппарат реляционной модели.
- •5. Нормализация отношений
- •6. Инфологическое проектирование
- •7. Даталогическое проектирование (дп)
- •Преобразование в дм для реляционной субд
- •8. Организация диалога
- •9. Функциональное проектирование
- •10. Язык sql
- •11. Защита от несанкционированного доступа
- •13. Организация многопользовательского доступа
- •14. Физическая организация данных
- •15. Методы поиска в бд
- •16. Документальные системы
10. Язык sql
Основы языка разработаны в середине 70-х годов в рамках экспериментальных работ над системой System R. В 80-е годы SQL приобрел современное название, был расширен и реализован в таких промышленных СУБД как Oracle, Ingres, DB2, Informix. Попытка устранить разногласия многочисленных реализаций привела к созданию первого стандарта SQL (1986 – 1989 гг.), зафиксировавшего небольшое количество операторов языка. Следующим шагом стандартизации явился стандарт SQL2 (1992 г.), в котором стандартная часть языка была значительно расширена. Кроме того, стандартизация была распространена на таблицы-каталоги, предназначенные для хранения служебной информации (метаданных). Выход следующего стандарта SQL3 был намечен на 1995 год, но сложность согласования разнородных предложений застопорила работу на предварительном этапе. В настоящее время SQL версии 2 является базой для подавляющего большинства серверных СУБД и входит в ограниченном объеме в языки персональных СУБД.
В составе языка SQL2 можно выделить 5 основных групп операторов и средств:
1. Операторы определения данных.
Сюда относятся такие основные операторы языка, как
CREATE SCHEMA – создание БД,
CREATE DOMAIN – создание домена,
CREATE TABLE – создание таблицы,
CREATE VIEW – создание виртуальной таблицы (представления),
CREATE CURSOR – создание навигационной таблицы (курсора),
а также операторы изменения и уничтожения описаний, операторы работы с описаниями вспомогательных объектов БД.
2. Операторы и средства определения ограничений целостности.
Имеющиеся в языке возможности позволяют задать в описаниях данных свойства обязательности (NOT NULL), уникальности (UNIQUE), значения по умолчанию (DEFAULT), пользовательское предикатное ограничение (CHECK). Ограничения могут задаваться как на уровне поля, так и на уровне таблицы. Для контроля ссылочной целостности могут задаваться первичный и внешний ключи (PRIMARY KEY, FOREIGN KEY), триггеры(ON DELETE, ON UPDATE) со стандартными реакциями (CASCADE, SET NULL, SET DEFAULT, NO ACTION). Имеется возможность задания автономных ограничений (ASSERTION) и отложенности проверки ограничений до конца транзакции.
3. Операторы выборки и модификации данных.
Сюда относятся операторы:
SELECT – выборка данных,
INSERT – добавление данных,
UPDATE – обновление данных,
DELETE – удаления данных.
4. Операторы управления транзакциями.
Основными операторами являются COMMIT – завершение транзакции с фиксацией результатов выполнения транзакции и ROLLBACK – завершение транзакции с отменой результатов выполнения транзакции (откат транзакции). Также возможно задание условий выполнения транзакции (SET TRANSACTION) с выбором стандартного уровня изолированности транзакций.
5. Операторы управления доступом к данным.
Основными операторами являются GRANT - назначения привилегий (прав выполнения операций с данными и программами) и REVOKE - отмены ранее назначенных привилегий.
В целом, язык SQL не является самодостаточным для создания приложений БД и их полномасштабного обслуживания. Поэтому разработчикам приложений предоставляется различные формы соединения языка SQL с другими (внешними) языками.
Основными формами введения возможностей SQL во внешний язык являются:
1. Локальный SQL.
Операторы SQL включаются во внешний язык наравне с прочими операторами и обрабатываются расширенным транслятором внешнего языка как его «родные» операторы. Таким образом, имеет место расширение исходного языка на группу операторов SQL с соответствующим расширением транслятора.
2. Встроенный SQL.
В текст программы на внешнем языке операторы SQL включаются с явным их выделением. Например, встраивание операторов SQL в текст С-программы выполняется в виде:
EXEC SQL
<SQL-оператор>
END SQL
При обработке пакета программы предварительно выполняется программа предтранслятор, которая преобразует SQL-вставки в эквивалентные конструкции внешнего языка, после чего выполняется трансляция с помощью стандартного транслятора внешнего языка. Обмен данными между SQL-вставками и основным кодом программы производится через явно указываемый набор переменных связи.
3. Модульный SQL.
Операторы SQL размещаются в модулях-подпрограммах, обращение к которым осуществляется по стандартным правилам.
4. Динамический SQL.
Операторы SQL определяются не на момент создания пакета программы, а на момент ее исполнения. Таким образом, трансляция SQL-операторов откладывается на время выполнения программы, что позволяет реализовывать заранее непредвиденные запросы.
Наиболее проработанным и идеологически важным оператором языка SQL является оператор выборки SELECT. Основная форма оператора имеет вид:
SELECT <поля выборки>
FROM <таблицы>
WHERE <условия отбора записей>
GROUP BY <поля группирования>
HAVING <условия отбора группы>
Оператор описывает:
- откуда брать данные,
- каким требованиям должна удовлетворять отобранная информация,
- в каком виде представить результаты выборки.
Таким образом, в операторе SELECT определяется, «что должно быть получено», а не «как это получить», что показывает связь оператора SELECT с реляционным исчислением. Способ получения требуемых результатов определяется исполнительной системой. Простейшая схема решения поставленной задачи (без группирования) имеет вид:
1. Объединить таблицы исходных данных (декартово произведение).
2. Отобрать записи объединенной таблицы согласно условиям WHERE (ограничение).
3. Отобрать указанные поля выборки в результирующую таблицу (проекция).
Указанная схема показывает связь оператора SELECT с реляционной алгеброй. Дополнительно оператор SELECT включает нереляционные операции. Опция GROUP BY задает группировку отобранных записей с созданием обобщенных групповых записей. Каждая группа соответствует определенному сочетанию значений полей группирования и заменяется соответствующей обобщенной записью с агрегированными итоговыми данными по группе. Опция HAVING задает аналогично WHERE условия отбора, но не для отдельных записей, а для групп.
Использование оператора SELECT лежит в основе создания виртуальных таблиц (представлений). Общая форма описания представления имеет вид:
CREATE VIEW <имя представления> AS <оператор SELECT>.
Таким образом, в БД хранится не сама табличная информация, а лишь способ ее оперативного получения. Использование представлений позволяет скрыть от пользователя излишние для него детали организации БД, реализовать дополнительные возможности контроля доступа к данным, минимизировать объем передаваемой и обрабатываемой информации.