- •Рецензенты:
- •Введение 12 Глава 1. Проектирование баз данных 14
- •Глава 2. Субд Visual FoxPro 213
- •Глава 3. Субд Access 308
- •Глава 4. Субд Microsoft sql Server 431
- •Глава 5. Субд Oracle 478
- •Глава 6. Обзор субд 506
- •Глава 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. Принципы и этапы проектирования и создания баз данных
- •2.6. Создание er‑диаграмм для отдельных пользователей.
- •3.4. Создание er‑диаграммы глобальной логической модели.
- •4. Создание глобальной логической модели в среде целевой субд.
- •1.5.2. Методы нормализации и денормализации отношений
- •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. Функциональная полнота
- •3. Степень зависимости от субд
- •4. Тип используемой модели
- •1.6. Использование баз данных
- •1.6.1. Защита информации
- •Пользователя в 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.9. Параллельное выполнение транзакций
- •1.9.8. Восстановление после жесткого сбоя
- •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. Перспективы развития субд
- •В опросы для самопроверки и контроля
- •Глава 2. Субд Visual FoxPro
- •2.1. Общепринятые обозначения
- •2.2. Основные ограничения
- •2.3. Компоненты Visual FoxPro
- •2.4. Язык программирования FoxPro
- •2.4.1. Создание, компиляция и выполнение программ, процедур и функций
- •2.4.2. Константы
- •2.4.3. Переменные
- •2.4.4. Массивы
- •2.4.5. Операции
- •2.4.6. Команды управления
- •2.4.6.1. Команда проверки условия (If)
- •2.4.6.2. Команда выбора (Do Case)
- •2.4.7. Организация циклов
- •2.4.7.1. Цикл (Do While)
- •2.4.7.2. Счетный цикл (For)
- •2.4.7.3. Цикл сканирования таблицы (Scan)
- •2.4.8. Создание свободных таблиц
- •2.4.8.1. Создание и изменение структуры таблиц
- •2.4.8.2. Заполнение таблиц
- •2.4.9. Редактирование таблиц в диалоговом режиме (Browse, Edit)
- •2.4.10. Перемещение по таблице (Go, Skip)
- •2.4.11. Просмотр таблиц (Display, List)
- •2.4.12. Удаление записей (Delete, Zap, Pack)
- •2.4.13. Редактирование полей в программном режиме (Replace)
- •2.4.14. Локализация и поиск записей в таблице
- •2.4.14.1. Фильтрация данных (Set Filter)
- •2.4.14.2. Последовательный поиск (Locate)
- •2.4.15. Индексирование и открытие таблиц
- •2.4.16. Прямой поиск
- •2.4.17. Одновременная работа с несколькими таблицами
- •2.4.17.1. Рабочие области
- •2.4.17.2. Команда установки связей между таблицами
- •2.4.18. Обмен данными между массивами и таблицами
- •2.4.19. Ввод‑вывод данных сообщений
- •2.4.19.1. Вывод данных на экран (?, ??, ???)
- •2.4.19.2. Вывод сообщения (Wait)
- •2.4.19.3. Вывод сообщения и кнопок (MessageBox)
- •2.4.20. Организация меню
- •2.4.20.1. Общий порядок создания и использования меню
- •2.4.20.2. Вертикальное Popup-меню
- •2.4.20.3. Горизонтальное Bar-меню
- •2.4.20.4. Двухуровневое Pulldown-меню
- •2.4.20.5. Управление доступом к меню
- •2.4.21. Манипулирование файлам и таблицами
- •2.4.22. Математическая обработка таблиц
- •2.4.23. Язык запросов sql
- •2.5. Настройка среды Visual FoxPro
- •2.6. Объекты и классы
- •2.7. События и методы
- •2.8. Общий порядок работы с Visual FoxPro
- •2.9. Создание проекта
- •2.10. Создание базы данных
- •Р ис. 2.10.2. Окно установки контроля целостности связей
- •2.11. Представления (View)
- •2.11.1. Мастер представлений
- •2.11.2. Конструктор представлений
- •2.11.3. Удаленные представления (Remote Views)
- •2.12. Запросы
- •2.12.1. Мастера запросов
- •2.12.2. Конструктор запросов
- •2.12.3. Функции сквозных запросов
- •2.13. Формы
- •2.13.1. Мастера форм
- •2.13.2. Конструктор форм
- •Р ис. 2.13.2.3. Вид отображаемых таблиц
- •2.14. Отчеты
- •2.14.1. Мастера отчетов
- •2.14.2. Конструктор отчетов
- •2.14.3. Команда вывода отчета
- •2.15. Меню
- •2.16. Управление проектом и создание приложения
- •2.16.1. Свойства проекта
- •2.16.2. Параметры проекта
- •2.16.3. Создание приложения
- •2.16.4. Галерея компонентов
- •2.17. Отладка программ
- •2.18. Хранимые процедуры
- •2.19. Классы
- •2.20. Создание класса панели инструментов
- •Р ис. 2.20.1. Вид формы, построенной на основе класса clFormNavigator
- •2.21. Включение в базу ole‑объектов
- •2.22. Обзор дополнительных возможностей
- •2.23. Среда быстрой разработки приложений ‑ пакет MacroFox
- •2.23.1. Назначение
- •2.23.2. Структура
- •2.23.3. Основные макрооператоры
- •2.23.3.1. Описание входного документа (Forma)
- •2.23.3.2. Описание формы отчета (Ofort)
- •2.23.3.3. Описание меню (Menu)
- •2.23.4. Словари баз, функций, форм, таблиц и условий
- •2.23.5. Управление сценариями
- •2.23.6. Ведение таблиц базы данных
- •2.23.7. Формирование отчетов и запросов‑отчетов
- •2.23.8. Сводная обработка данных
- •2.23.9. Супероболочка
- •2.23.10. Порядок работы
- •В опросы для самопроверки и контроля
- •Глава 3. Субд Access
- •3.1. Последовательность работ при создании новой базы данных
- •3.2. Создание базы данных
- •3.2.1. Запуск Access и открытие базы данных
- •3.2.2. Создание пустой базы данных
- •3.2.3. Рабочая среда Access
- •3.2.4. Работа с таблицами
- •3.2.4.1. Создание таблиц
- •3.2.4.2. Связывание таблиц
- •3.2.4.3. Сортировка, поиск и фильтрация записей
- •3.3. Формирование и использование внешних данных
- •3.4. Запросы
- •3.4.1. Запросы на выборку данных
- •3.4.1.1. Простой запрос
- •Р ис. 3.4.1.1.2. Окно конструктора запросов
- •3.4.1.2. Итоговый запрос
- •Р ис. 3.4.1.2.2. Окно конструктора запросов
- •3.4.1.3. Перекрестный запрос
- •3.4.1.4. Динамический запрос
- •3.4.2. Запросы на обновление данных
- •3.4.3. Параметрические запросы
- •3.4.4. Выражения
- •3.5. Формы
- •3.5.1. Автоформы
- •3.5.2. Мастер форм
- •3.5.3. Конструктор форм
- •3.5.3.1. Основные операции над объектами
- •3.5.3.2. Основные элементы управления
- •3.5.3.3. Создание формы
- •3.5.4. Редактирование данных в режиме формы
- •3.6. Отчеты
- •3.6.1. Автоотчеты
- •3.6.2. Мастер отчетов
- •3.6.3. Конструктор отчетов
- •3.6.3.1. Окно предварительного просмотра отчета
- •Р ис. 3.6.3.2. Окно конструктора отчетов
- •3.6.4. Диаграммы
- •3.6.5. Составные отчеты
- •3.6.6. Дополнительные возможности
- •3.7. Пользовательский интерфейс
- •3.7.1. Панель инструментов
- •3.7.2. Меню и ленты пользователей
- •3.7.3. Контекстные меню
- •3.7.4. Связывание меню и панелей с формами и отчетами
- •3.7.5. Кнопочная форма
- •3.7.6. Настройка параметров среды и запуска приложения
- •3.7.7. Изменение меню и панелей инструментов средствами Visual Basic
- •3.8. Макросы
- •3.9. Web‑страницы
- •3.9.1. Экспорт объектов в формат html
- •3.9.2. Страницы доступа
- •3.10. Интеграция Access с другими компонентами Office
- •3.10.1. Использование Microsoft Excel при работе Access
- •3.10.2. Использование Microsoft Word при работе с Access
- •3.10.3. Добавление ActiveX‑элементов
- •3.10.4. Использование Access в качестве сервера
- •3.11. Совместное использование баз данных в сети
- •3.12. Разработка клиент‑серверных приложений
- •3.12.1. Доступ к базам данных через odbc
- •3.12.2. Доступ к базам данных через ole db, ado
- •3.12.3. Способы работы с внешними данными
- •3.12.3.1. Присоединение таблиц
- •3.12.3.2. Сквозные запросы
- •3.12.3.3. Хранимые процедуры
- •3.12.3.4. Объектная модель dao
- •3.12.4. Проекты Access
- •3.12.4.1. Создание проектов
- •3.12.4.2. Изменение свойств таблиц
- •3.12.4.3. Схемы базы данных
- •3.12.4.4. Конструктор представлений
- •3.12.4.5. Хранимые процедуры
- •3.12.4.6. Сортировка и отбор записей в формах и отчетах
- •3.13. Репликация баз данных
- •3.13.1. Репликация баз данных Access
- •3.13.2. Репликация проектов Access
- •3.14. Администрирование баз данных и проектов
- •3.14.1. Архивирование, сжатие и восстановление
- •3.14.2. Стандартные средства субд защиты базы данных
- •3.14.3. Примеры оригинальных программные средств защиты базы данных
- •3.14.3.1. Защита параметров запуска приложений от изменений
- •3.14.3.2. Регистрация пользователей и установка их полномочий
- •3.14.3.3. Формирование журнала аудита (изменений) базы данных
- •3.15. Перенос базы данных Access на платформу sql Server
- •3.16. Обзор инструментальных средств Office Developer Edition
- •3.17.1. Быстрое отслеживание данных
- •3.17.2. Создание отчетов
- •3.17.3 Обмен с другими пользователями
- •3.17.4. Быстрые способы начала работы
- •3.17.5 Интерфейс пользователя
- •3.17.6 Средства создания объектов
- •3.17.7. Режимы отчета и макета
- •3.17.8 Разделенные формы
- •3.17.9 Внедренные макросы в формах и отчетах
- •3.17.10. Новые типы данных и элементы управления
- •3.17.11. Средства конструирования и анализа
- •3.17.12. Безопасность
- •3.17.13. Интеграция с Службы Windows SharePoint Services
- •3.17.14. Сбор данных с помощь форм InfoPath и Outlook
- •3.17.15. Экспорт в форматы pdf и xps
- •3.17.16. Работа с внешними данными
- •3.17.17. Способы устранения неполадок
- •3.17.18. Средства проверки орфографии
- •3.17.19. Создание ленты пользователя
- •3.18.1. Создание Web-базы данных для публикации в Интернете
- •Подготовка
- •Начало работы с пустой веб-базой данных
- •Создание веб-таблицы.
- •Добавление поля щелчком таблицы.
- •Изменение свойств поля.
- •Добавление вычисляемого поля.
- •Настройка правил проверки данных.
- •Создание правила проверки поля и соответствующего сообщения.
- •Создание правила проверки записи и соответствующего сообщения.
- •Создание веб-формы.
- •Создание веб-отчета
- •Сделайте форму навигации веб-формой, отображаемой по умолчанию.
- •Синхронизация веб-базы данных
- •3.18.2. Настройка ленты пользователя
- •Вопросы для самопроверки и контроля
- •Глава 4. Субд Microsoft sql Server
- •4.1. Характеристика
- •4.2. Старт, остановка и приостановка sql Server
- •4.2.1. Старт sql Server
- •4.2.2. Приостановка sql Server
- •4.2.3. Остановка sql Server
- •4.2.4. Регистрация сервера
- •4.2.4.1. Окно регистрации сервера
- •4.3. Работа с базой данных
- •4.3.1. Организация и создание базы данных
- •4.3.1.1. Физическая организация
- •4.3.1.2. Размещение файлов
- •4.3.1.3. Создание базы данных средствами sql Server Enterprise
- •4.3.2. Создание и настройка таблицы базы данных
- •4.3.3. Создание и настройка диаграмм
- •4.3.4. Заполнение таблиц
- •4.3.5. Создание и настройка представлений
- •4.3.6. Язык запросов Transact‑sql
- •4.3.6.1. Основные элементы
- •4.3.6.2. Операции
- •4.3.6.3. Операторы
- •4.3.6.4. Базы данных
- •4.3.6.5. Таблицы
- •4.3.6.6. Запросы
- •4.3.6.7. Представления
- •4.3.6.8. Индексы
- •4.3.6.9. Статистика
- •4.3.6.10. Фрагментация
- •4.3.6.11. Курсоры
- •4.3.6.12. Транзакции и блокировки
- •4.3.6.13. Системные переменные, функции и хранимые процедуры
- •4.3.7. Хранимые процедуры
- •4.3.8. Создание триггеров
- •4.3.9. Формирование правил контроля вводимых значений
- •4.3.10. Формирование стандартных значений
- •4.4. Администрирование sql Server
- •4.4.1. Настройка параметров
- •4.4.2. Системные базы данных и таблицы
- •4.4.3. Тестирование и сжатие баз данных
- •4.4.4. Обмен данными с внешними системами
- •4.4.5. Создание резервных копий и восстановление баз данных
- •4.4.6. Использование службы выполнения расписаний sql Server Agent
- •4.4.7. Защита данных
- •4.4.8. Репликация данных
- •4.4.9. Взаимодействие sql‑сервера с Excel и Word
- •4.4.10. Перенос приложения Access в среду sql Server
- •В опросы для самопроверки и контроля
- •Глава 5. Субд Oracle
- •5.1. Основные понятия
- •5.1.1. Файлы данных и табличные пространства
- •5.1.2. Таблицы и индексы
- •5.1.3. Кластеры
- •5.1.4. Словарь данных
- •5.1.5. Объекты базы данных
- •5.1.6. Виды
- •5.1.7. Триггеры
- •5.1.12. Журналы транзакций
- •5.1.13. Экземпляр базы данных
- •5.1.14. Типы данных
- •5.1.14.1. Строки
- •5.1.14.2. Числа
- •5.1.14.3. Битовые строки
- •5.1.14.4. Дата и время
- •5.3.1. Таблицы
- •5.3.2. Представления
- •5.3.3. Запросы
- •5.3.4. Средства разграничения доступа
- •5.3.4.1. Создание и удаление пользователя
- •5.3.4.2. Привилегии
- •5.4.1. Правила написания программы
- •5.4.2. Операторы управления
- •5.4.3. Выражения
- •5.4.4. Переменные
- •5.4.4.1. Скалярные переменные
- •5.4.4.2. Объектные переменные
- •5.4.4.3. Записи
- •5.4.4.4. Коллекции
- •5.4.5. Пакеты
- •5.4.6. Процедуры и функции
- •5.4.7. Курсоры
- •5.4.8. Транзакции
- •5.4.9. Обработка исключений
- •5.4.10. Динамический sql‑оператор
- •5.4.11. Внедрение sql, pl/sql в прикладные программы
- •В опросы для самопроверки и контроля
- •Глава 6. Обзор субд
- •6.1. Российская субд линтер
- •Основные характеристики субд линтер
- •Количественные параметры бд линтер
- •6.2. Субд MySql
- •6.3. Субд InterBase
- •6.4. Субд Firebird
- •6.5. Субд db2
- •6.6. Субд progress
- •6.7. Субд PostgreSql
- •6.8. Субд oracle
- •6.9. Субд Microsoft sql Server
- •6.10. Постреляционная субд Cache’
- •6.11. Распределенная файловая система Google File System (gfs)
- •6.12. Berkeley db – движок для субд
- •6.13 Субд – движок sqLite
- •6.14 Субд Visual Clarion
- •Пункт меню «Личные карточки»:
- •Пункт меню «Выбор информации»
- •2.1. Движение кадров.
- •2.1.1. Приказы оПриеме на Работу.
- •Глава 7. Практикум
- •7.1. Язык запросов sql
- •7.1.1. Запросы на чтение данных
- •7.1.2. Запросы на обновление данных
- •7.1.3. Представления
- •7.2. Работа с базами данных
- •7.3. Курсовые работы
- •1. Учет успеваемости студентов.
- •2. Учет обмена валюты.
- •3. Учет объектов строительства.
- •4. Учет выдачи и возврата книг.
- •5. Учет авиапассажиров.
- •6. Учет производства сельскохозяйственных культур.
- •7. Учет выпуска изделий.
- •8. Учет платежей налогов.
- •9. Учет поставок товаров.
- •10. Учет сбросов отравляющих веществ в окружающую среду.
- •11. Учет уволившихся с предприятия.
- •12. Учет призеров Олимпийских игр.
- •14. Учет участников олимпиады.
- •15. Учет проданных товаров.
- •16. Учет малых предприятий.
- •17. Учет больных в больнице.
- •18. Учет движения общественного транспорта.
- •19. Учет дорожно-транспортных происшествий.
- •20. Учет платежных поручений в банке.
- •21. Учет договоров займа.
- •22. Учет проданных ценных бумаг.
- •23. Учет кадров.
- •24. Учет очередников на получение жилья.
- •25. Учет исполнительской дисциплины.
- •26. Учет книг в библиотеке.
- •27. Учет переселенцев.
- •28. Учет успеваемости школьников.
- •29. Учет нарушителей трудовой дисциплины на предприятии.
- •30. Учет семейного бюджета.
- •Приложения Приложение 1. Ответы на вопросы для самопроверки
- •Глава 1. Проектирование баз данных
- •Глава 2. Субд Visual FoxPro
- •Глава 3. Субд Access
- •Глава 4. Субд Microsoft sql Server
- •Глава 5. Субд Oracle
- •Приложение 2. Вопросы для экзаменационных билетов
- •Приложение 3. Встроенные функции субд Visual FoxPro
- •Математические функции
- •Строковые функции
- •Функции работы с датами
- •Функции преобразования типов данных
- •Функции проверки файлов и дисков
- •Функции времени
- •Функции анализа условий, типов и наличия данных
- •Функции подстановки
- •Функции работы с массивами
- •Функции работы с цветом
- •Приложение 4. События, методы и свойства объектов субд Visual FoxPro События
- •Свойства
- •Приложение 5. Встроенные функции pl/sql субд Oracle
- •Символьные функции
- •Функции преобразования
- •Календарные функции
- •Смешанные функции
- •Приложение 6. Оформление курсовой работы с примером Общие положения
- •Организация выполнения курсовой работы. Структура и требования к содержанию курсовой работы
- •Основные требования по оформлению курсовой работы
- •Оформление структурных элементов курсовой работы
- •Использование и оформление рисунков
- •Использование и оформление таблиц
- •Использование и оформление формул
- •Оформление примечаний и ссылок
- •Правила оформления списка использованных источников
- •Правила оформления приложений
- •Оформление содержания
- •Курсовая работа
- •Пример оформления курсовой работы
- •Курсовая работа
- •Содержание
- •Введение 3
- •Введение 12
- •Глава 1. Проектирование баз данных 14
- •Глава 2. Субд Visual FoxPro 213
- •Глава 3. Субд Access 308
- •Глава 4. Субд Microsoft sql Server 431
- •Глава 5. Субд Oracle 478
- •Глава 6. Обзор субд 506
- •Введение
- •1 Постановка задачи
- •2 Входная информация
- •3 Логическая модель базы
- •4 Выходная информация
- •5 Обращение к приложению
- •Заключение
- •Предметный указатель
- •Библиографический список
- •Плещёв Владимир Васильевич Базы данных.
- •С примерами и упражнениями
1.9.13. Метод временных меток
Альтернативный метод сериализации транзакций, хорошо работающий в условиях редких конфликтов транзакций и не требующий построения графа ожидания транзакций, основан на использовании временных меток.
Основная идея метода (у которого существует множество разновидностей) состоит в следующем: если транзакция Т1 началась раньше транзакции Т2, то система обеспечивает такой режим выполнения, как если бы Т1 была целиком выполнена до начала Т2.
Для этого каждой транзакции Т предписывается временная метка t, соответствующая времени начала Т. При выполнении операции над объектом r транзакция Т помечает его своей временной меткой и типом операции (чтение или изменение).
Перед выполнением операции над объектом г транзакция Т1 выполняет следующие действия:
Проверяет, не закончилась ли транзакция Т, пометившая этот объект. Если Т закончилась, Т1 помечает объект г и выполняет свою операцию.
Если транзакция Т не завершилась, то Т1 проверяет конфликтность операций. Если операции неконфликтны, при объекте r остается или проставляется временная метка с меньшим значением, и транзакция Т1 выполняет свою операцию.
Если операции Т1 и Т конфликтуют,,то если t(T) > t(T1) (то есть транзакция Т является более «молодой», чем Т1), производится откат Т и Т1 продолжает работу.
Если же t(T) < t(T1) (Т «старше» Т1), то Т1 получает новую временную метку и начинается заново.
К недостаткам метода временных меток относятся потенциально более частые откаты транзакций, чем в случае использования синхронизационных захватов. Это связано с тем, что конфликтность транзакций определяется более грубо.
Кроме того, в распределенных системах не очень просто вырабатывать глобальные временные метки с отношением полного порядка (это отдельная большая наука).
Но в распределенных системах эти недостатки окупаются тем, что не нужно распознавать тупики, а как мы уже отмечали, построение графа ожидания в распределенных системах стоит очень дорого.
1.10. Встроенный sql
1.10.1. Особенности встроенного sql
При объединении операторов SQL с базовым языком программирования должны соблюдаться следующие принципы (содержание данного пункта скопировано из работы [19]):
Операторы SQL включаются непосредственно в текст программы на исходном языке программирования. Исходная программа поступает на вход препроцессора SQL, который компилирует операторы SQL.
Встроенные операторы SQL могут ссылаться на переменные базового языка программирования.
Встроенные операторы SQL получают результаты SQL-запросов с помощью переменных базового языка программирования.
Для присвоения неопределенных значений (NULL) атрибутам отношений БД используются специальные функции.
Для обеспечения построчной обработки результатов запросов во встроенный SQL добавляются несколько новых операторов, которые отсутствуют в интерактивном SQL.
Операторы манипулирования данными не требуют изменения для их встраивания в программный SQL. Однако оператор поиска (SELECT) потребовал изменений.
Встроенный оператор SELECT должен создавать структуры данных, которые согласуются с базовыми языками программирования. Во встроенном SQL запросы делятся на 2 типа:
Однострочные запросы, где ожидаемые результаты соответствуют одной строке данных. Эта строка может содержать значения нескольких столбцов.
Многострочные запросы, результатом которых является получение целого набора строк. При этом приложение должно иметь возможность проработать все полученные строки. Значит, должен существовать механизм, который поддерживает просмотр и обработку полученного набора строк.
Первый тип запроса – однострочный запрос во встроенном SQL вызвал модификацию оператора SQL, которая выглядит следующим образом:
SELECT [{ALL | DISTINCT}] <список возвращаемых столбцов>
INTO <список переменных базового языка>
FROM <список исходных таблиц>
[WHERE <условия соединения и поиска>]
Во встроенный SELECT добавился новый раздел, содержащий список переменных базового языка. Именно в эти переменные будет помещен результат однострочного запроса, поэтому список переменных базового языка должен быть согласован как по порядку, так и по типу и размеру данных со списком возвращаемых столбцов. По правилам любого языка программирования все базовые переменные предварительно описаны в прикладной программе. Например, если в нашей БД «Библиотека» существует таблица READERS (Читатели), мы можем получить сведения о конкретном читателе.
CREATE TABLE READERS
( READER_ID Small int(4) PRIMARY KEY,
FIRSTJAME char (30) NOT NULL,
LAST_NAME char(30) NOT NULL,
ADRES char(50) , HOME_PHON char(12) ,
WORK_PHON char (12) .
BIRTH_DAY date СНЕCK( DateDiff (year, GetDate(),BIRTH_DAY) >=17 )
);
Для этого опишем базовые переменные. Рассмотрим пример для MS SQL SERVER 7.0, используя язык Transact SQL. При описании локальных переменных в языке Transact SQL используется специальный символ @. Комментарии в Transact SQL заключены в парные символы /* комментарий */.
DECLARE @READER_ID int
DECLARE @FIRS_NAME Char(30). @LAST_NAME Char(30). @ADRES Char(50)
DECLARE @HOME_PHON Char(12) .@WORK_PHON Char(12)
/* зададим уникальный номер читательского билета */
SET @READER_ID = 4
/* теперь выполним запрос и поместим полученные сведения в определенные
ранее переменные */
SELECT READERS.FIRST_NAME. READERS.LAST_NAME. READERS.ADRES.
READERS.HOME_PHON. READERS.WORK_PHON
INTO @FIRS_NAME, @LAST_NAME.
@PADRES. @HOME_PHON.@WORK_PHON
FROM READERS
WHERE READERS.READER_ID = @READER_ID
В этом простом примере мы имена переменных сделали такими же, как и имена столбцов таблицы READERS, но это необязательно. Однако транслятор различает эти объекты, именно поэтому в диалекте Transact SQL принято локальные переменные предварять специальным символом @. В примере мы использовали квалифицированные имена полей, имена полей, предваряемые именем таблицы. В нашем случае это тоже необязательно, потому что запрос выбирает данные только из одной таблицы.
В нашем примере базовые переменные играют разную роль. Локальная переменная PREADER_ID является входной по отношению к запросу. Ей присвоено значение 4, и в запросе это значение используется для фильтрации данных, поэтому эта переменная используется в условии WHERE.
Остальные базовые переменные играют роль выходных переменных, в них СУБД помещает результат выполнения запроса, помещая в них значения соответствующих полей отношения READERS, извлеченные из БД.
Для реализации многострочных запросов вводится понятие – понятие курсора или указателя набора записей. Для работы с курсором добавляется несколько новых операторов SQL.
