
- •Рецензенты:
- •Введение 11 Глава 1. Проектирование баз данных 14
- •Глава 2. Субд Visual FoxPro 114
- •Глава 3. Субд Access 202
- •Глава 4. Субд Microsoft sql Server 313
- •Глава 5. Субд Oracle 360
- •Глава 1. Проектирование баз данных
- •1.1. История развития баз данных и субд
- •1.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.9. Постреляционная модель
- •1.3.10. Многомерная модель
- •1.3.11. Объектно‑ориентированная модель
- •1.4. Модели использования баз данных в сети
- •1.4.1. Сеть
- •1.4.2. Модели использования баз данных
- •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. Защита информации
- •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.8.6. Контроль целостности базы данных
- •1.8.6.1. Определение целостности
- •1.9. Перспективы развития субд
- •В опросы для самопроверки и контроля
- •Глава 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-базы данных для публикации в Интернете
- •Подготовка
- •Начало работы с пустой веб-базой данных
- •Создание веб-таблицы.
- •Добавление поля щелчком таблицы.
- •Изменение свойств поля.
- •Добавление вычисляемого поля.
- •Настройка правил проверки данных.
- •Создание правила проверки поля и соответствующего сообщения.
- •Создание правила проверки записи и соответствующего сообщения.
- •Создание веб-формы.
- •Создание веб-отчета
- •Сделайте форму навигации веб-формой, отображаемой по умолчанию.
- •Синхронизация веб-базы данных
- •Вопросы для самопроверки и контроля
- •Глава 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 в прикладные программы
- •В опросы для самопроверки и контроля
- •Глава 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
- •Символьные функции
- •Функции преобразования
- •Календарные функции
- •Смешанные функции
- •Предметный указатель
- •Библиографический список
- •Плещёв Владимир Васильевич Базы данных.
- •С примерами и упражнениями
1.3.7. Сетевая модель
Сетевая модель представляет собой связанный ориентированный граф, у которого существует хотя бы один подчиненный узел с несколькими исходными узлам (рисунок 1.3.7.1).
Рисунок 1.3.7.1. Пример сетевой структуры
Стандарт сетевой модели впервые был определен в 1975 году организацией CODASYL (Conference of Data System Languages), которая определила базовые понятия модели и формальный язык описания.
Базовыми объектами модели являются следующие.
элемент данных - то же, что и в иерархической модели, то есть минимальная информационная единица, доступная пользователю с использованием СУБД.
Агрегат данных - соответствует следующему уровню обобщения в модели. В модели определены агрегаты двух типов: агрегат типа вектор и агрегат типа повторяющаяся группа
Запись - совокупность агрегатов или элементов данных, моделирующая некоторый класс объектов реального мира. Понятие записи соответствует понятию «сегмент» в иерархической модели. Для записи, так же как и для сегмента, вводятся понятия типа записи и экземпляра записи.
Набор - это двухуровневый граф, связывающий отношением «один (владелец набора) -ко-многим (член набора) » два типа записи.
Набор отражает иерархическую связь между двумя типами записей. Родительский тип записи в данном наборе называется владельцем набора, а дочерний тип записи – членом того же набора.
Для любых двух типов записей может быть задано любое количество наборов, которые их связывают. Фактически наличие подобных возможностей позволяет промоделировать отношение «многие-ко-многим» между двумя объектами реального мира, что выгодно отличает сетевую модель от иерархической. В рамках набора возможен последовательный просмотр экземпляров членов набора, связанных с одним экземпляром владельца набора.
Между двумя типами записей может быть определено любое количество наборов: например, можно построить два взаимосвязанных набора. Существенным ограничением набора является то, что один и тот же тип записи не может быть одновременно владельцем и членом набора.
Операции над записями (узлами) аналогичны операциям в иерархических базах.
Достоинство: универсальность. Недостатки: сложность и жесткость.
Примеры СУБД: IDMS, db‑Vista, Сеть, Сетор, Компас, Банк ОС.
1.3.8. Реляционная модель
Теоретической основой этой модели стала теория отношений, основу которой заложили два логика – американец Чарльз Содерс Пирс (1839-1914) и немец Эрнст Шредер (1841-1902). В руководствах по теории отношений было показано, что множество отношений замкнуто относительно некоторых специальных операций, то есть образует вместе с этими операциями абстрактную алгебру. Это важнейшее свойство отношений было использовано в реляционной модели для разработки языка манипулирования данными, связанного с исходной алгеброй.
А
мериканский
математик Э. Ф. Кодд в 1970 году впервые
сформулировал основные понятия и
ограничения реляционной модели, ограничив
набор операций в ней семью основными и
одной дополнительной операцией.
Основной структурой данных в модели является отношение, именно поэтому модель получила название реляционной (от английского relation – отношение).
N-арным отношением R называют подмножество декартова произведения D,xD2x ... xDn множеств D,, D2, ..., Dn (n > 1), необязательно различных. Исходные множества D1, D2, ..., Dn называют в модели доменами.
Полное декартово произведение (D1xD2x ...xDn) – это набор всевозможных сочетаний из n элементов каждое, где каждый элемент берется из своего домена. Например, имеем три домена: D1 содержит три фамилии, D2 – набор из двух учебных дисциплин и D3 – набор из трех оценок. Допустим, содержимое доменов следующее:
D1 = {Иванов, Крылов, Степанов};
D2 = (Теория автоматов, Базы данных};
D3 = {3, 4, 5}
Отношение имеет простую графическую интерпретацию, оно может быть представлено в виде таблицы, столбцы которой соответствуют вхождениям доменов в отношение, а строки – наборам из n значений, взятых из исходных доменов, которые расположены в строго определенном порядке в соответствии с заголовком.
Фамилия |
Дисциплина |
Оценка |
Иванов |
Теория автоматов |
4 |
Иванов |
Базы данных |
3 |
Крылов |
Теория автоматов |
5 |
Степанов |
Теория автоматов |
5 |
Степанов |
Базы данных |
4 |
Данная таблица обладает рядом специфических свойств:
В таблице нет двух одинаковых строк.
Таблица имеет столбцы, соответствующие атрибутам отношения.
Каждый атрибут в отношении имеет уникальное имя.
Порядок строк в таблице произвольный.
Вхождение домена в отношение принято называть атрибутом. Строки отношения называются кортежами.
Количество атрибутов в отношении называется степенью, или рангом, отношения.
В соответствии со свойствами отношений два отношения, отличающиеся только порядком строк или порядком столбцов, будут интерпретироваться в рамках реляционной модели как одинаковые.
Любое отношение является динамической моделью некоторого реального объекта внешнего мира. Поэтому вводится понятие экземпляра отношения, которое отражает состояние данного объекта в текущий момент времени, и понятие схемы отношения, которая определяет структуру отношения.
Схемой отношения R называется перечень имен атрибутов данного отношения с указанием домена, к которому они относятся:
SR = (А1, А2, …, Аn) Аi принадлежит Di
Если атрибуты принимают значения из одного и того же домена, то они называются Q-сравпимыми, где Q– множество допустимых операций сравнения, заданных для данного домена. Например, если домен содержит числовые данные , то для него допустимы все операции сравнения, тогда Q = {=, <>,>=,<-,<,>}. Однако и для доменов, содержащих символьные данные, могут быть заданы не только операции сравнения по равенству и неравенству значений. Если для данного домена задано лексикографическое упорядочение, то он имеет также полный спектр операций сравнения.
Схемы двух отношений называются эквивалентными, если они имеют одинаковую степень и возможно такое упорядочение имен атрибутов в схемах, что на одинаковых местах будут находиться сравнимые атрибуты, то есть атрибуты, принимающие значения из одного домена.
SR1 = (A1, A2, ..., An) – схема отношения R1.
SR2 = (Bi1, Bi2,..., Bin) – схема отношения R2 после упорядочения имен атрибутов.
Тогда sR1~sR2<=>1. n=m, или 2. Аj, Bij принадлежат Dj
Как уже говорилось ранее, реляционная модель представляет базу данных в виде множества взаимосвязанных отношений. В отличие от иерархических и сетевых моделей в реляционной модели связи между отношениями поддерживаются неявным образом. В этой модели, так же как и в остальных, поддерживаются иерархические связи между отношениями. В каждой связи одно отношение может выступать как основное (родительского), а другое отношение выступает в роли подчиненного (дочернего). Это означает, что один кортеж основного отношения может быть связан с несколькими кортежами подчиненного отношения. Для поддержки этих связей оба отношения должны содержать наборы атрибутов, по которым они связаны. В основном отношении это первичный ключ отношения (PRIMARY KEY), который однозначно определяет кортеж основного отношения. В подчиненном отношении для моделирования связи должен присутствовать набор атрибутов, соответствующий первичному ключу основного отношения. Однако здесь этот набор атрибутов уже является внешним ключом (FOREIGN KEY), то есть он определяет множество кортежей подчиненного отношения, которые связаны с единственным кортежем основного отношения.
Например, рассмотрим ситуацию, когда надо описать сотрудников некоторого подразделения. Тогда мы должны создать два отношения: одно для моделирования подразделений, а другое для моделирования записей о сотрудниках. Тогда первичным ключом отношения Подразделения будет атрибут Код подразделения, который является внешним ключом для отношения Сотрудник.
Теоретико-множественные операции реляционной алгебры
алгеброй - называется множество объектов с заданной на нем совокупностью операции, замкнутых относительно этого множества (результаты принадлежат этому множеству), называемого основным множеством.
Основное множество в реляционной алгебре - это всё возможное множество отношений.
Всего Э. Ф. Коддом было предложено 8 операций для реляционной алгебры. В общем это множество избыточное, так как одни операции могут быть представлены через другие, однако множество операций выбрано из соображений максимального удобства при реализации произвольных запросов к БД. Все множество операций можно разделить на две группы: теоретико-множественные операции и специальные операции. В первую группу входят 4 операции. Три первые теоретико-множественные операции являются бинарными, то есть в них участвуют два отношения и они требуют эквивалентных схем исходных отношений.
Объединение двух отношений - это отношение, содержащее множество кортежей, принадлежащих либо первому, либо второму исходным отношениям, либо обоим отношениям одновременно.
Например, исходными отношениями являются отношения R1 и R2, которые содержат перечни деталей. изготавливаемых соответственно на первом и втором участках цеха. Отношение R3 содержит общин перечень деталей, изготавливаемых в цеху, то есть характеризует общую номенклатуру цеха.
Пересечение отношений в реляционной алгебре - это отношение, которое содержит множество кортежей, принадлежащих одновременно и первому и второму отношениям. R1 и R2:
Пример, отношение R4 содержатся перечень деталей, которые выпускаются одновременно на двух участках цеха.
Разность отношений в реляционной алгебре - это отношение R1 и R2, содержащее множество кортежей, принадлежащих R1 и не принадлежащих
Пример, отношение R5 содержит перечень деталей, изготавливаемых только на участке 1, отношение R6 содержит перечень деталей, изготавливаемых только на участке 2.
Операции, объединение и пересечение, являются коммутативными операциями, то есть результат операции не зависит от порядка аргументов в операции. Операция же разности является принципиально несимметричной операцией, то есть результат операции будет различным для разного порядка аргументов, что и видно из сравнения отношений R5 и R6.
В отличие от навигационных средств манипулирования данными в иерархических и сетевых моделях операции реляционной алгебры позволяют получить сразу иной качественный результат, который является семантически гораздо более ценным и понятным пользователям. Например, сравнение результатов объединения и разности номенклатуры двух участков позволит оценить специфику производства: насколько оно уникально на каждом участке, и, в зависимости от необходимости, принять соответствующее решение по изменению номенклатуры.
Операции объединения, пересечения и разности применимы только к отношениям с эквивалентными схемами.
Расширенное декартово произведение содержит кортежи, полученные сцеплением каждого кортежа отношения R1 с каждым кортежем отношения R2. Операцию декартова произведения с учетом возможности перестановки атрибутов в отношении можно считать симметричной. Очень часто операция расширенного декартова произведения используется для получения некоторого отношения (универсума), которое характеризует все возможные комбинации между элементами отдельных множеств.
Специальные операции реляционной алгебры
Операция горизонтального выбора, или фильтрации, или ограничения отношений. Результатом операции выбора, или фильтрации, заданной на отношении R в виде логического условия, определенного на атрибутах отношения R, называется отношение R[G], включающее те кортежи из исходного отношения, для которых истинно условие выбора или фильтрации.
Операция проектирования. Проекцией отношения R на набор атрибутов В, обозначаемой R[B], называется отношение, содержащее кортежи, получаемые из кортежей исходного отношения R путем удаления из них значений, не принадлежащих атрибутам из набора В.По определению отношений все дублирующие кортежи удаляются из результирующего отношения. Операция проектирования, называемая иногда также операцией вертикального выбора, позволяет получить только требуемые характеристики моделируемого объекта.
Операция условного соединения. Соединением отношений R и Q при условии Р будет подмножество декартова произведения отношений R и Q и связанных по группе атрибутов и кортежи, которого удовлетворяют условию Р.
Операция деления. Поясним эту операцию на примере. Операция деления удобна тогда, когда требуется сравнить некоторое множество характеристик отдельных атрибутов. Например, пусть у нас есть отношение R1, которое содержит номенклатуру всех выпускаемых деталей на нашем предприятии, а в отношении R2 хранятся сведения о том, что и в каких цехах действительно выпускается. Поставим задачу определить перечень цехов (R3), в которых выпускается вся номенклатура деталей.
Тогда решением этой задачи будет операция деления отношения R2 на отношение R1 по набору атрибутов (Шифр детали, Наименование детали).
R3 = R2[Шифр детали, Наименование детали: Шифр детали, Наименование детали] R1
Операция деления достаточно сложна для абстрактного представления. Она может быть заменена последовательностью других операций.
В заключении можно отметить, что данные операции реализованы средствами команды Select языка запросов SQL и не используются в такой математической форме.
Правила Кодда
В 1985 году в двух статьях в журнале Computer World Э.Ф. Кодд сформулировал правила, которым должны соответствовать настоящие реляционные базы данных. Всего правил было 13.
Правило 0 (фундаментальное правило). Реляционная система для управления базами данных должна использовать исключительно реляционные возможности. Данное правило является очень жестким и, к сожалению, нарушается многими СУБД. Можно сказать, что правило 0 требует безусловного исполнения следующих двенадцати правил.
Правило 1 (правило информации). Вся информация в реляционной базе данных (включая имена таблиц и столбцов) представляется в явном виде только на логическом уровне и только в виде значений, хранящихся в таблицах. Отсюда кстати вытекает и условие отсутствия порядка строк и столбцов в таблицах. Информация об объектах более низкого уровня, например, индексах, должна быть исключена из модели данных.
Правило 2 (правило гарантированного доступа). Логический доступ ко всем и каждому элементу данных в реляционной базе данных обеспечивается комбинацией имени таблицы, имени столбца и значением первичного ключа. Это требование предполагает: уникальность имени таблицы в базе данных, имени столбца в таблице, первичного ключа в пределах одной таблицы. В реальных СУБД могут присутствовать дополнительные параметры доступа, например имя пользователя, владельца данной базы, имя базы данных, адрес.
Правило 3 (правило обработки неизвестных значений). В реляционной базе должна быть реализована возможность представлять неизвестные значения. Предполагается, что неизвестные значения отличаются от каких-либо определенных значений и должны быть реализованы для всех типов данных, хранящихся в базе. Данное правило провозглашает существование в реляционных базах данных значения NULL.
Правило 4 (правило доступа к словарю базы данных). Логическая структура словаря базы данных должна быть реляционной, чтобы пользователь, имеющий соответствующие права могли бы управлять структурой базы данных с помощью стандартного реляционного языка. Другими словами структура базы данных должна храниться в обычных реляционных таблицах.
Правило 5 (правило полноты языка управления данными). Должен существовать, по крайней мере, один язык управления реляционными базами данных, который поддерживал бы интерактивное и программное использование, и который должен быть представлен в виде набора команд, каждая из которых может быть представлена в виде одной строки. Такой язык должен поддерживать следующие возможности: определение структуры данных и представлений; модификацию данных; определения условий целостности, правил авторизации (идентификация прав доступа), определение границ транзакций. Важным требованием к языку является то, что команды этого языка должны представляться в виде только одной строки.
Правило 6 (правило обновления представлений). Все представления, которые теоретически можно обновить, должны быть обновляемы.
Правило 7 (правило множественности обновлений). Операции вставки, удаления и обновления должны быть применимы к базовым таблицам, как и чтение данных из таблицы.
Правило 8 (правило независимости на физическом уровне). Какие бы изменения на физическом уровне не происходили с данными или аппаратной частью, это не должно сказаться на функционировании прикладных программ или утилит управления данными. СУБД так должна взаимодействовать с операционной системой и, посредством нее с файловой системой, что изменения на файловом и аппаратном уровне не должны сказаться на функционировании ИС, которая построена на базе данной СУБД.
Правило 9 (правило независимости на логическом уровне). Прикладное программное обеспечение не должно зависеть от изменений, вносимых в структуру базы данных, которые теоретически не должны изменять хранящиеся в базе данные. Например, добавление в таблицу нового столбца не может сказаться на функционировании прикладных программ, так как доступ к данным осуществляется по именам столбцов. Порядок столбцов не может влиять на доступ к данным.
Правило 10 (правило независимости условий целостности). Должна существовать возможность формулировки правил целостности специфических для данной базы данных на языке реляционных баз данных.
Правило 11 (правило независимости распространения). База данных может быть распределенной или переносится на другие компьютеры и это не должно сказаться на функционировании прикладного программного обеспечения.
Правило 12 (правило единственности). Если в реляционной системе имеется низкоуровневый язык, то должна отсутствовать возможность использование его для того, чтобы обойти правила и условия целостности, сформулированные на реляционном языке и хранящиеся в каталоге базы данных.
Таким образом, если коротко, то реляционная база данных представляет собой набор взаимосвязанных двухмерных таблиц (отношений).
Таблица соответствует одному объекту и состоит из фиксированного числа колонок (доменов или полей) и строк (кортежей или записей, которые соответствуют экземплярам объекта). Значения в одной колонке имеют один тип. В реляционной модели можно описывать иерархические и сетевые связи.
Достоинства: простота (вместо файлов самой разной структуры с различным числом полей в записях используются простые двумерные таблицы) и гибкость (она не является жесткой, так как связь между таблицами‑объектами может устанавливаться не до выполнения прикладных программ, а во время их выполнения, т.е. не нужно ждать окончания проектирования логической модели, а разрабатывать прикладные программы одновременно с процессом создания логической модели, и изменение логической модели не влечет за собой необходимости корректировки всех прикладных программ).
Недостаток: более низкая скорость доступа к данным. Но если учесть, что быстродействие компьютеров и дисковых устройств постоянно и очень быстро растет, то этот недостаток не является существенным.
Практически все современные СУБД (Oracle (Oracle), Access, MS SQL Server, Visual FoxPro (Microsoft), Interbase (Borland) и др.) являются реляционными.