- •1 Системы управления базами данных: общая характеристика
- •2 Основные функции субд
- •2.1 Непосредственное управление данными во внешней памяти
- •2.2 Управление буферами оперативной памяти
- •2.3 Управление транзакциями
- •2.4 Журнализация
- •2.5 Поддержка языков бд
- •3 Типовая организация современной субд
- •4.2 Работа с базой данных в командах sql
- •Пример базы данных
- •Список сотрудников (таблица Staff)
- •4.1 Состав языка sql
- •Упражнения с использованием операторов обработки данных sql
- •5 Поддержание сущностной и ссылочной целостности данных
- •Поддержание целостности данных в субд на примере субд Ingres
- •Ограничения
- •Правила
- •Поддержание ссылочной целостности данных в субд на примере субд vfp
- •Возможности реиндексации в бд
- •Особенности объединения бд
- •4 Case-средства для разработки бд. Инструментарий проектирования баз данных
- •Обзор современных субд: Microsoft Access 2000-2003, Microsoft Visual FoxPro 9.0, Microsoft sql Server 2005, Oracle 9, MySql, FireBird sql Server как многоуровневая система клиент/сервер
- •Способы соединения базы данных с интерфейсом (клиентской частью)
- •Прямое соединение
- •Условно прямое соединение
- •Драйвер odbc
- •Импорт, экспорт данных в субд: особенности и потери при выполнении операций
- •Транзакции
- •Проблемы одновременного доступа к данным
- •Программирование транзакций
- •Включение транзакций в программный код
- •Управление транзакциями
- •Управление ролями и разрешениями в ms sql Server
- •Справочная информация Перечень ролей:
- •Программная настройка прав в командах Transact sql
- •Список разрешений для роли securityadmin
- •Библиографический список
2.5 Поддержка языков бд
Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка - язык определения схемы БД (SDL - Schema Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). SDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные.
В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language).
3 Типовая организация современной субд
Логически в современной реляционной СУБД можно выделить наиболее внутреннюю часть - ядро СУБД (часто его называют Data Base Engine), компилятор языка БД (обычно SQL), подсистему поддержки времени выполнения, набор утилит. В некоторых системах эти части выделяются явно, в других - нет, но логически такое разделение можно провести во всех СУБД.
Ядро СУБД отвечает за управление данными во внешней памяти, управление буферами оперативной памяти, управление транзакциями и журнализацию. Соответственно, можно выделить такие компоненты ядра (по крайней мере, логически, хотя в некоторых системах эти компоненты выделяются явно), как менеджер данных, менеджер буферов, менеджер транзакций и менеджер журнала. Как можно было понять из первой части этой лекции, функции этих компонентов взаимосвязаны, и для обеспечения корректной работы СУБД все эти компоненты должны взаимодействовать по тщательно продуманным и проверенным протоколам. Ядро СУБД обладает собственным интерфейсом, не доступным пользователям напрямую и используемым в программах, производимых компилятором SQL (или в подсистеме поддержки выполнения таких программ) и утилитах БД. Ядро СУБД является основной резидентной частью СУБД. При использовании архитектуры "клиент-сервер" ядро является основной составляющей серверной части системы.
Основной функцией компилятора языка БД является компиляция операторов языка БД в некоторую выполняемую программу. Основной проблемой реляционных СУБД является то, что языки этих систем (а это, как правило, SQL) являются непроцедурными, т.е. в операторе такого языка специфицируется некоторое действие над БД, но эта спецификация не является процедурой, а лишь описывает в некоторой форме условия совершения желаемого действия (вспомните примеры из первой лекции). Поэтому компилятор должен решить, каким образом выполнять оператор языка прежде, чем произвести программу. Применяются достаточно сложные методы оптимизации операторов, которые мы подробно рассмотрим в следующих лекциях. Результатом компиляции является выполняемая программа, представляемая в некоторых системах в машинных кодах, но более часто в выполняемом внутреннем машинно-независимом коде. В последнем случае реальное выполнение оператора производится с привлечением подсистемы поддержки времени выполнения, представляющей собой, по сути дела, интерпретатор этого внутреннего языка.
Наконец, в отдельные утилиты БД обычно выделяют такие процедуры, которые слишком накладно выполнять с использованием языка БД, например, загрузка и выгрузка БД, сбор статистики, глобальная проверка целостности БД и т.д. Утилиты программируются с использованием интерфейса ядра СУБД, а иногда даже с проникновением внутрь ядра [2,3].
4 SQL - Международный стандарт общения с базами данных
SQL был создан в Калифорнийском университете г. Беркли в лаборатории Майкла Стоунбрейкера фирмы IBM Research, там же, где и была реализована реляционная модель данных. Поскольку опыт IBM показал возможность практического применения реляционных баз данных, а также возможность использования языка SQL для управления ими, то другие компании начали разработку аналогичных программных продуктов для других, не производимых IBM компьютеров.
Каждая из реализаций SQL немного отличается от другой, это объясняется необходимостью эффективности и преимуществ в конкурентной борьбе и особенностями оборудования или программного обеспечения. Выход из этой ситуации - создание Комитета по стандартизации, он был создан в начале 80-х годов при институте стандартизации.
Язык SQL впервые был стандартизирован в 1985 году. В 1986 году издан стандарт SQL1, в котором определяется основное множество средств, а также синтаксис таких операторов как select. Дальнейшая работа по стандартизации этого языка была осуществлена последовательно в 1986, 1989, 1992, 1996 и т.д.
SQL предназначен для описания и манипулирования данными, организованными в рамках реляционной модели базы данных. Еще его называют комплексным языком запросов - обновлений.
Основные функции реляционных СУБД, реализуемые SQL выглядят следующим образом:
определение структуры поддерживаемых данных и организацию используемых реляционных отношений;
обеспечение доступа к хранимым данным из приложений;
изменение пользователем или прикладной программой содержимого базы данных путем вставки новых данных, удаление или модификация существующих данных;
обеспечение синхронизации обработки базы данных различными прикладными программами
защита данных от несанкционированного доступа;
координация работы конкурирующих пользователей, обеспечение их одновременной работы с базой данных.
Немаловажным является то обстоятельство, что команды SQL могут присутствовать в любой прикладной программе по обработке базы данных, наряду с командами встроенного языка программирования самой СУБД.
