- •Введение
- •Глава 1. Проектирование баз данных
- •1.1. История развития баз данных и субд
- •1.2. Введение в субд
- •1.2.1. Основные термины, понятия и определения
- •1.2.2. Классификация субд
- •1) Сетевые, корпоративные, распределенные, клиент-серверные, полнофункциональные, масштабируемые, “большие” субд.
- •2) Локальные, персональные, настольные, файл-серверные, “малые” субд.
- •1.3. Модели данных
- •1.3.1. Типы связей между объектами
- •1.3.2. Формы записи инфологической (концептуальной) модели
- •1.3.3. Уровни представления и независимости данных
- •1.3.4. Порядок взаимодействия пользователя, субд и ос
- •1.3.5. Поддержка целостности базы данных
- •1.3.6. Иерархическая модель
- •1.3.7. Сетевая модель
- •1.3.8. Реляционная модель
- •1.3.8.1. Отношения
- •1.3.8.2. Теоретико-множественные операции с отношениями
- •1.3.8.3. Правила Кодда
- •1.3.8.4. Индексирование таблиц
- •1.3.8.5. Связывание таблиц
- •1.3.9. Постреляционная модель
- •1.3.10. Многомерная модель
- •1.3.11. Объектно‑ориентированная модель
- •1.4. Модели использования баз данных в сети
- •1.4.1. Сеть
- •1.4.2. Модели использования баз данных
- •1.4.2.1. Локальная однопользовательская модель
- •1.4.2.2. Файл-серверная модель
- •1.4.2.3. Клиент-серверная модель
- •В моделях «клиент–сервер»
- •1.4.2.4. Модель удаленного доступа (rda)
- •1.4.2.5. Модель сервера данных
- •1.4.2.6. Трехзвенная распределенная модель
- •1.4.2.7. Модели серверов баз данных
- •1.4.2.8. Клиент-Интернет
- •1.4.2.9. ИнтерфейсOdbc
- •1.4.3. Мониторы обработки транзакций (tpm)
- •1.4.4. Децентрализованное управление базами данных
- •1.4.5. Таблицы в локальных сетях
- •1.5. Проектирование баз данных
- •1.5.1. Принципы и этапы проектирования и создания баз данных
- •1.4.Определение доменов атрибутов.
- •1.5. Определение первичных и вторичных ключей.
- •1.6. Определение суперклассов и подклассов для типов сущностей.
- •1.7. Создание er‑диаграмм для отдельных пользователей.
- •2.6. Создание er‑диаграмм для отдельных пользователей.
- •3.4. Создание er‑диаграммы глобальной логической модели.
- •4. Создание глобальной логической модели в среде целевой субд.
- •6. Разработка механизма защиты.
- •1.5.3. Правила формирования взаимосвязанных таблиц
- •1.5.4. Модели жизненного цикла и проектирование баз данных
- •1.5.4.1. Модели жизненного цикла
- •1.5.4.2. Обследование, системный анализ и постановка задачи
- •1.5.4.3. Инфологическое проектирование
- •1.5.4.4. Датологическое проектирование
- •1.5.4.5. Проектирование физической модели
- •1.5.4.6. Реализация, интеграция и внедрение
- •1.5.5. Выбор субд
- •1.5.5.1. Сравнение Visual FoxPro, Access, sql Server, Oracle и Excel
- •1.5.5.2. Методика балловой оценки программных средств
- •1.5.6. Case‑средства автоматизации проектирования
- •1. Ориентация на этапы жизненного цикла
- •2. Функциональная полнота
- •Пользователя в ms sql Server 7.0
- •1.6.2. Резервирование информации
- •1.6.3. Варианты разработки приложений
- •1.7. Стандартизация баз данных
- •1.8. ЯзыкSql
- •1.8.1. Введение вSql
- •1.8.2. Типы данныхSql
- •1.8.3. Оператор выбора данныхSelect
- •1.8.3.1. Назначение и синтаксис оператора
- •1.8.3.2. Объединение таблиц
- •1.8.3.3. Вложенные и коррелированные запросы
- •1.8.3.4. Запросы, использующиеExist, any, all
- •1.8.3.5. Стандартные функции
- •1.8.3.6. Запрос с группировкой
- •1.8.4. Операторы обновления базы
- •1.8.4.1. Оператор корректировки данныхUpdate
- •1.8.4.2. Оператор удаления записейDelete
- •1.8.4.3. Оператор включения записей insert
- •1.8.5. Представления
- •1.9. Транзакции
- •1.9.1. Определение транзакций
- •1.9.2. Организация транзакций
- •1.9.3. Журнал транзакций
- •1.9.4. Журнализация и буферизация
- •1.9.5. Индивидуальный откат транзакций
- •1.9.6. Восстановление после мягкого сбоя
- •1.9.7. Физическая согласованность базы данных
- •1.9.8. Восстановление после жесткого сбоя
- •1.9.9. Параллельное выполнение транзакций
- •1.9.10. Уровни изолированности пользователей
- •1.9.11. Гранулированные синхронизационные захваты
- •1.9.12. Предикатные синхронизационные захваты
- •1.9.13. Метод временных меток
- •1.10. ВстроенныйSql
- •1.10.1. Особенности встроенногоSql
- •1.10.2. Определение курсора
- •1.10.3. Открытие курсора
- •1.10.4. Чтение очередной строки курсора
- •1.10.5. Закрытие курсора
- •1.10.6. Удаление и обновление данных
- •1.10.7. Хранимые процедуры
- •Хранимой процедуры на сервере
- •1.10.8. Триггеры
- •1.10.9. ДинамическийSql
- •1.11. Архитектура субд и оптимизация запросов
- •1.12. Перспективы развития субд
- •Вопросы для самопроверки и контроля
- •1Оглавление
1.3.4. Порядок взаимодействия пользователя, субд и ос
Приведем порядок взаимодействия пользователя, СУБД и ОС при обработке запроса на получение данных (рисунок 1.3.4.1, содержание данного пункта скопировано из работы [19]).
Рисунок 1.3.4.1. Схема взаимодействия пользователя, СУБД и ОС
Пользователь посылает СУБД запрос на получение данных из БД.
Анализ прав пользователя и внешней модели данных, соответствующей данному пользователю, подтверждает или запрещает доступ данного пользователя к запрошенным данным.
В случае запрета на доступ к данным СУБД сообщает пользователю об этом и прекращает дальнейший процесс обработки данных, в противном случае СУБД определяет часть концептуальной модели, которая затрагивается запросом пользователя.
СУБД получает информацию о запрошенной части концептуальной модели.
СУБД запрашивает информацию о местоположении данных на физическом уровне (файлы или физические адреса).
В СУБД возвращается информация о местоположении данных в терминах операционной системы.
СУБД просит операционную систему предоставить необходимые данные, используя средства операционной системы.
Операционная система осуществляет перекачку информации из устройств хранения и пересылает ее в системный буфер.
Операционная система оповещает СУБД об окончании пересылки.
СУБД выбирает из доставленной информации, находящейся в системном буфере, только то, что нужно пользователю, и пересылает эти данные в рабочую область пользователя.
В процессе взаимодействия используется база метаданных с информацией (БМД) об используемых структурах данных, логической организации данных, правах доступа пользователей и физическом расположении данных. Для управления БМД существует специальное программное обеспечение администрирования баз данных.
Если пользователь повторно обратится к СУБД с новым запросом, то для него уже не будут проверяться внешняя модель и права доступа, а если дальнейший анализ запроса покажет, что данные могут находиться в системном буфере, то СУБД осуществит только 11 и 12 шаги в обработке запроса.
1.3.5. Поддержка целостности базы данных
Выделяют четыре вида поддержки целостности базы данных (содержание данного пункта скопировано из работы [19]).
1. Поддержка структурной целостности, которая трактуется как то, что реляционная СУБД (системы управления реляционными базами данных, представляющих совокупность взаимосвязанных двумерных таблиц) должна допускать работу только с однородными структурами данных типа «реляционное отношение» (п.1.3.8.1) или двумерная таблица.
В дополнение к структурной целостности необходимо рассмотреть проблему неопределенных Null значений. Неопределенное значение интерпретируется в реляционной модели как значение, неизвестное на данный момент времени. Это значение при появлении дополнительной информации в любой момент времени может быть заменено на некоторое конкретное значение. При сравнении неопределенных значений не действуют стандартные правила сравнения: одно неопределенное значение никогда не считается равным другому неопределенному значению. Для выявления равенства значения некоторого атрибута неопределенному применяют специальные стандартные предикаты:
<имя атрибута>IS NULL и <имя атрибута> IS NOT NULL.
Если в данном кортеже (в данной строке) указанный атрибут имеет неопределенное значение, то предикат IS NULL принимает значение TRUE (Истина), а предикат IS NOT NULL – FALSE (Ложь), в противном случае предикат IS NULL принимает значение FALSE, а предикат IS NOT NULL принимает значение TRUE.
В стандарте SQL2 появилась возможность сравнивать не только конкретные значения атрибутов с неопределенным значением, но и результаты логических выражений сравнивать с неопределенным значением, для этого введена специальная логическая константа UNKNOWN. В этом случае операция сравнения выглядит как:
Логическое выражение> IS {TRUE | FALSE | UNKNOWN}
2. Поддержка языковой целостности, которая состоит в том, что реляционная СУБД должна обеспечивать языки описания и манипулирования данными не ниже стандарта SQL. He должны быть доступны иные низкоуровневые средства манипулирования данными, не соответствующие стандарту. Именно поэтому доступ к информации, хранимой в базе данных, и любые изменения этой информации могут быть выполнены только с использованием операторов языка SQL.
3. Поддержка ссылочной целостности (Declarative Referential Integrity, DRI). Ссылочная целостность обеспечивает поддержку непротиворечивого состояния БД в процессе модификации данных при выполнении операций добавления или удаления.
Контроль целостности связей осуществляется автоматически СУБД согласно восьми правилам, которые устанавливаются при проектировании БД – по одному правилу для операций добавления, изменения и удаления записей таблицы.
Ввод новых записей. Если добавляется новая запись в дочерний объект, для которого отсутствует запись из родительского объекта, то такой ввод может быть заблокирован (правило контроля целостности), иначе (правило игнорирования контроля целостности) – запись добавляется в любом случае.
Пример.Блокировка ввода записи дочернего объекта “СОТРУДНИК”, если указывается значение атрибута “Код подразделения”, отсутствующего в родительском объекте “ПОДРАЗДЕЛЕНИЕ”.
Корректировка записи. Если корректируется значение первичного ключа родительского объекта, то автоматически меняются значение внешнего ключа соответствующих записей дочернего объекта (правило каскадного обновления), или значение внешнего ключа не изменяется (правило игнорирования контроля целостности) или обновление блокируется, если есть соответствующие подчиненные записи в дочерней таблице (правило блокировки каскадного обновления записей).
Пример.После изменения в родительском объекте “ПОДРАЗДЕЛЕНИЕ” значения атрибута “Код подразделения” с 2 на 202 автоматически изменятся в дочернем объекте “СОТРУДНИК” все записи со значением атрибута “Код подразделения”, равным 2, на новое значение 202 (все сотрудники из подразделения с кодом 2 переведутся в подразделение с новым кодом 202). Если такой перевод не может быть реальным, то можно установить правило блокировки корректировки, что не позволит изменить код подразделения в объекте “ПОДРАЗДЕЛЕНИЕ” на новое значение, если есть сотрудники в данном подразделении.
Удаление записей. Если удаляется запись родительского объекта, то автоматически удаляются все соответствующие записи дочернего объекта (правило каскадного удаления), или удаление нужно заблокировать, если есть подчиненные записи в дочерней таблице (правило блокировки каскадного удаления) или удалить запись родительской таблицы, подчиненные записи таблицы дочерней не удаляются.
Пример.После удаления в родительском объекте “ПОДРАЗДЕЛЕНИЕ” записи со значением атрибута “Код подразделения”, равным 201, автоматически удаляются в дочернем объекте “СОТРУДНИК” все записи со значением атрибута “Код подразделения”, равным 201 (все сотрудники из подразделения с кодом 201 увольняются). Если такого расформирования подразделения не может быть, то устанавливают правило блокировки каскадного удаления записей. Это не позволит удалить запись с кодом подразделения в объекте “ПОДРАЗДЕЛЕНИЕ”, равным значению 201 (сначала нужно удалить все записи из объекта “СОТРУДНИК” со значением атрибута “Код подразделения”, равным 201, а затем удалить запись в родительском объекте “ПОДРАЗДЕЛЕНИЕ” со значением атрибута “Код подразделения”, равным 201).
При создании базы данных для каждой связи указываются нужные правила контроля целостности, обычно, каскадное обновление, блокировка каскадного удаления и контроля целостности при включении новой записи.
4. Поддержка семантической целостности, соблюдение различных ограничений, вызванных конкретными условиями задачи.
Семантическая поддержка может быть обеспечена двумя путями: декларативным и процедурным путем.
Декларативный путь связан с наличием механизмов в рамках СУБД, обеспечивающих проверку и выполнение ряда декларативно заданных правил-ограничений, называемых чаще всего «бизнес-правилами» (Business Rules) или декларативными ограничениями целостности.
Выделяются следующие виды декларативных ограничений целостности.
Ограничения целостности атрибута: значение по умолчанию, задание обязательности или необязательности значений (Null), задание условий на значения атрибутов. Задание значения по умолчанию означает, что каждый раз при вводе новой строки в отношение, при отсутствии данных в указанном столбце этому атрибуту присваивается именно значение по умолчанию.
Ограничения целостности, задаваемые на уровне доменов, при поддержке доменной структуры. Эти ограничения удобны, если в базе данных присутствуют несколько столбцов разных отношений, которые принимают значения из одного и того же множества допустимых значений.
Ограничения целостности, задаваемые на уровне отношения.
Декларативные ограничения целостности относятся к ограничениям, которые являются немедленно проверяемыми. Есть ограничения целостности, которые являются откладываемыми до завершения транзакций.
Процедурный путь предполагает написание оригинальных процедур контроля целостности, например использование триггеров.