- •3.1.3. Ограничения целостности 19
- •3.2.3. Ограничения целостности 21
- •Назначение и основные компоненты системы баз данных
- •Данные и эвм
- •Концепция баз данных
- •Основные функции субд
- •Непосредственное управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Журнализация
- •Управление транзакциями
- •Поддержка языков бд
- •Типовая организация современной субд
- •Классификация пользователей субд
- •Инфологическая модель данных «Сущность-связь»
- •Основные понятия
- •Характеристика связей и язык моделирования
- •Классификация сущностей*
- •Для каждого поставщика продуктов: наименование, адрес, название поставляемого продукта, дата поставки и цена на момент поставки.
- •Ежедневное потребление блюд (расход): блюдо, количество порций, дата.
- •О первичных и внешних ключах
- •Ограничения целостности
- •Ранние подходы к организации бд. Иерархические и сетевые субд.
- •Иерархические системы
- •Иерархические структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Сетевые системы
- •Сетевые структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Достоинства и недостатки
- •Реляционная структура данных. Общие понятия реляционного подхода к организации бд. Основные концепции и термины
- •Базовые понятия реляционных баз данных
- •Тип данных
- •Кортеж, отношение
- •Фундаментальные свойства отношений
- •Отсутствие кортежей-дубликатов
- •Отсутствие упорядоченности кортежей
- •Отсутствие упорядоченности атрибутов
- •Атомарность значений атрибутов
- •Общая характеристика реляционной модели данных
- •Базисные средства манипулирования реляционными данными
- •Реляционная алгебра
- •Общая интерпретация реляционных операций
- •Замкнутость реляционной алгебры и операция переименования
- •Базисные средства манипулирования реляционными данными
- •Особенности теоретико-множественных операций реляционной алгебры
- •Специальные реляционные операции*
- •Реляционное исчисление.
- •Нормализация данных. 1-я, 2-я, 3-я нормальные формы
- •Функциональная зависимость
- •Вторая нормальная форма
- •Третья нормальная форма
- •Нормализация данных. Нормальные формы более высоких порядков
- •Нормальная форма Бойса-Кодда
- •Многозначные зависимости. Четвертая нормальная форма
- •Зависимость соединения. Пятая нормальная форма
- •Манипулирование реляционными данными.
- •Навигационный подход к манипулированию данными и персональные субд
- •Язык sql
- •Из истории sql
- •Подмножества sql
- •Типы данных sql.
- •Язык sql. Средства описания данных
- •Ddl: Операторы создания схемы базы данных.
- •Операторы базы данных
- •Создание и удаление таблиц
- •Создание таблицы:
- •Удаление таблицы:
- •Модификация таблицы:
- •Ddl: Операторы создания индексов
- •Создание индекса:
- •Создание индексов для первичных ключей:
- •Удаление индекса:
- •Ddl: Операторы управления правами доступа
- •Язык sql. Средства манипулирования данными
- •Dml: Команды модификации данных
- •Добавить новую запись в таблицу:
- •Модификация записей:
- •Удаление записей
- •Dml: Выборка данных
- •Dml: Выборка из нескольких таблиц
- •Dml: Вычисления внутри select
- •Dml: Групировка данных
- •Dml: Cортировка данных
- •Dml: Операция объединения
- •Другие возможности sql
- •Использование представлений
- •Другие возможности sql
- •Хранимые процедуры
- •Триггеры
- •Мониторы событий
- •Вопросы практического программирования*
- •Структуры внешней памяти
- •Хранение отношений
- •Индексы
- •Журнальная информация
- •Служебная информация
- •Методы поиска по дереву
- •Методы организации индексов
- •Автоматическое поддержание свойства сбалансированности b-деревьев при выполнении операций занесения и удаления записей *
- •Хэширование
- •Защита бд
- •Обеспечение защиты данных в базе
- •Идентификация пользователя
- •Управление доступом
- •Защита данных при статистической обработке
- •Физическая защита
- •Целостность бд
- •Целостность сущности и ссылок
- •Обеспечение целостности данных
- •Транзакции и целостность баз данных
- •Изолированность пользователей
- •Сериализация транзакций
- •Степень соответствия субд реляционной модели
- •Степень соответствия субд реляционной модели
- •Список литературы по теме курса
- •Дейт, к. Дж. Введение в системы баз данных, 6-е издание: Пер. С англ. – к.; м.; сПб.: Издательский дом «Вильямс», 2000. – 848 с.
- •Мартин Дж. Организация баз данных в вычислительных системах, 2-е издание: Пер. С англ. – м.: Мир, 1980. – 664 с.
- •Это последняя страница документа
Поддержка языков бд
Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка - язык определения схемы БД (DDL - Data Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). DDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные. Мы рассмотрим более подробно языки ранних СУБД в следующей лекции.
В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language), сочетающий средства DDL и DML. В нескольких лекциях этого курса язык SQL будет рассматриваться достаточно подробно.
Типовая организация современной субд
Естественно, организация типичной СУБД и состав ее компонентов соответствует рассмотренному нами набору функций.
Логически в современной реляционной СУБД можно выделить наиболее внутреннюю часть - ядро СУБД (часто его называют Data Base Engine), компилятор языка БД (обычно SQL), подсистему поддержки времени выполнения, набор утилит. В некоторых системах эти части выделяются явно, в других - нет, но логически такое разделение можно провести во всех СУБД.
Ядро СУБД отвечает за управление данными во внешней памяти, управление буферами оперативной памяти, управление транзакциями и журнализацию. Соответственно, можно выделить такие компоненты ядра (по крайней мере, логически, хотя в некоторых системах эти компоненты выделяются явно), как менеджер данных, менеджер буферов, менеджер транзакций и менеджер журнала. Как можно было понять из первой части этой лекции, функции этих компонентов взаимосвязаны, и для обеспечения корректной работы СУБД все эти компоненты должны взаимодействовать по тщательно продуманным и проверенным протоколам. Ядро СУБД обладает собственным интерфейсом, не доступным пользователям напрямую и используемым в программах, производимых компилятором SQL (или в подсистеме поддержки выполнения таких программ) и утилитах БД. Ядро СУБД является основной резидентной частью СУБД. При использовании архитектуры "клиент-сервер" ядро является основной составляющей серверной части системы.
Основной функцией компилятора языка БД является компиляция операторов языка БД в некоторую выполняемую программу. Основной проблемой реляционных СУБД является то, что языки этих систем (а это, как правило, SQL) являются непроцедурными, т.е. в операторе такого языка специфицируется некоторое действие над БД, но эта спецификация не является процедурой, а лишь описывает в некоторой форме условия совершения желаемого действия (вспомните примеры из первой лекции). Поэтому компилятор должен решить, каким образом выполнять оператор языка прежде, чем произвести программу. Применяются достаточно сложные методы оптимизации операторов, которые мы подробно рассмотрим в следующих лекциях. Результатом компиляции является выполняемая программа, представляемая в некоторых системах в машинных кодах, но более часто в выполняемом внутреннем машинно-независимом коде. В последнем случае реальное выполнение оператора производится с привлечением подсистемы поддержки времени выполнения, представляющей собой, по сути дела, интерпретатор этого внутреннего языка.
Наконец, в отдельные утилиты БД обычно выделяют такие процедуры, которые слишком накладно выполнять с использованием языка БД, например, загрузка и выгрузка БД, сбор статистики, глобальная проверка целостности БД и т.д. Утилиты программируются с использованием интерфейса ядра СУБД, а иногда даже с проникновением внутрь ядра.
Рис. 1.1.Связь программ и данных при использовании СУБД
