
- •Содержание
- •Введение
- •1. Основные понятия
- •1.1 Терминология, базовые принципы
- •1.1.1 Понятие базы данных, субд и информационной системы
- •1.1.2 База данных и субд
- •1.1.3 Принципы построения информационных систем
- •1.2 Архитектуры информационных систем
- •1.2.1 Понятие архитектуры информационной системы
- •1.2.2 Архитектура «файл-сервер»
- •1.2.3. Архитектура «клиент-сервер»
- •1.2.4 Многозвенные архитектуры
- •1.2.5. Информационные системы на основе web-архитектуры
- •1.2.6 Информационные системы, функционирующие в терминальном режиме
- •1.3 Модели данных
- •1.3.1 Сравнительная характеристика моделей данных
- •1. Иерархическая модель данных
- •2. Сетевая модель данных
- •3. Реляционная модель данных
- •4. Постреляционная модель данных
- •5. Объектно-ориентированная модель данных
- •1.3.2 Неформальное введение в реляционную модель
- •1. Таблицы и связи
- •2. Первичные, альтернативные и внешние ключи
- •3. Null-значения
- •4. Метаданные. Схема базы данных
- •5. Правила ссылочной целостности
- •2. Реляционная модель
- •2.1 Реляционная модель. Структурная и целостная части
- •2.1.1 Структурная часть
- •2.1.2 Атрибуты и домены. Схема отношения
- •2.1.3 Кортежи. Отношение
- •2.1.4 Потенциальные ключи. Первичный ключ
- •2.1.5 Внешние ключи
- •2.1.6 Целостная часть реляционной модели
- •2.2 Манипуляционная часть реляционной модели
- •2.2.1 Реляционная алгебра
- •2.2.2 Реляционное исчисление
- •3. Проектирование базы данных
- •3.1 Семантический анализ предметной области
- •3.1.1 Трехуровневая модель ansi/sparc
- •3.1.2 Диаграммы «сущность - связь»
- •3.1.3 Case-технологии и case-системы
- •3.1.4 Методология idef1
- •3.2 Нормализация базы данных
- •3.2.1 Определение функциональной зависимости
- •3.2.2 Математические свойства фз, теоремы
- •3.2.3 Процедура нормализации. Декомпозиция отношений
- •3.2.4 Нормальные формы
- •3.3 Денормализация. Хранилища данных
- •3.3.1 Недостатки нормализованной базы данных
- •3.3.2 Oltp и olap-системы. Data Mining
- •3.3.3 Хранилища данных
- •4. Язык sql
- •4.1 Язык ddl. Основные объекты базы данных
- •4.1.1 Общий вид команд ddl
- •4.1.2 Основные объекты бд
- •4.2 Команды ddl для работы с таблицами
- •4.2.1 Создание таблицы
- •Типы даты и времени
- •4.2.2 Удаление таблиц и изменение их структуры
- •4.2.3 Пример создания базы данных
- •4.2.4 Создание таблиц на основе других таблиц
- •4.3 Команды манипулирования данными
- •4.3.1 Команда insert
- •Insert into имя_таблицы [(список_имен_столбцов)]
- •Values (список значений)
- •Insert into имя таблицы [(список столбцов)]
- •4.3.2 Команда delete
- •4.3.3 Команда update
- •4.4 Команда выборки данных (select)
- •4.4.1 Запросы на выборку по одной таблице
- •4.4.2 Соединение таблиц в запросах
- •Декартово произведение
- •Внутреннее (естественное) соединение таблиц
- •4. Самосоединения
- •4.4.3 Вложенные запросы
- •4.4.4 Комбинированные запросы
- •4.5 Представления (view)
- •4.5.1 Понятие представления
- •4.5.2 Создание и удаление представлений
- •4.5.3 Обновление представлений
- •4.5.4 Стандартные представления словаря данных Oracle
- •4.6 Хранимый код. Триггеры
- •4.6.1 Процедурные расширения языка sql
- •1. Оператор присваивания
- •2. Условный оператор
- •3. Операторы цикла
- •4.6.2 Использование команд sql в хранимом коде
- •4.6.3 Хранимые процедуры и функции
- •4.6.4 Триггеры
- •1. Триггер на вставку нового студента
- •2. Триггеры на удаление студента
- •3. Триггер на изменение оценки
- •5. Управление доступом к данным
- •5.1 Система безопасности субд
- •Разграничение доступа пользователей.
- •5.1.1 Разграничение доступа пользователей
- •Identified by пароль
- •5.1.2 Привилегии и роли
- •5.1.3 Аудит действий пользователей
- •5.2 Поддержка транзакций
- •5.2.1 Свойства транзакции
- •5.2.2 Поддержка транзакций в языке sql
- •5.2.3 Механизмы субд для поддержки транзакций
- •5.3 Настройка производительности. Индексы
- •5.3.1 Понятие индекса
- •5.3.2 Обзор индексов Oracle
- •Заключение
- •Библиографический список
4. Метаданные. Схема базы данных
Описание структуры базы данных называется метаданными (данные о данных). Метаданные должны храниться в базе данных, как и все прочие значения, а не в прикладной программе (правило Кодда №4).
Для наглядного представления структуры базы данных, удобного для пользователей, используется ее графическое изображение, которое называется схемой. Изобразим логическую схему базы данных Сведения о клиентах, воспользовавшись международным стандартом IDEF1X (рис.1.12).
Рис. 1.12 – Логическая схема базы данных Сведения о клиентах
Как видно из схемы, главная и подчиненная таблицы неразрывно связаны друг с другом и эта связь имеет логический характер, не зависящий от физического способа реализации таблиц.
5. Правила ссылочной целостности
Внешний ключ подчиненной таблицы можно рассматривать как ссылку на строку главной таблицы с таким же значением первичного ключа. Отсюда вытекает основное правило ссылочной целостности – все значения внешнего ключа должны быть согласованы с соответствующими значениями первичного ключа. Применительно к нашему примеру это означает, что в таблице контактные телефоны не должно быть кодов клиентов, которых нет в основной таблице клиенты.
Ссылочная целостность должна жестко контролироваться при выполнении любых операций с данными таблиц (правило Кодда №12).
Правило Кодда №7 устанавливает 4 таких операции – извлечение, вставка новых строк, удаление строк и изменение (обновление) существующих строк (операции select, insert, delete, update). Операция извлечения не может нарушить целостности, т.к. не изменяет данные. Рассмотрим основные стратегии поддержки ссылочной целостности для остальных операций.
Операция вставки критична только для подчиненной таблицы (можно добавить нового клиента, у которого нет телефона, но нельзя добавить телефон несуществующего клиента), поэтому вставка новых строк в подчиненную таблицу должна проверяться на согласованность значений внешнего ключа.
Удаление строк подчиненной таблицы, наоборот, абсолютно безопасно (можно удалить любой телефон, не нарушив ссылочной целостности). Однако, удаление строк главной таблицы при наличии связанных строк в подчиненной таблице непременно приведет к нарушению ссылочной целостности, чего допустить нельзя ни в коем случае. Здесь имеется две основных стратегии удаления
запрет удаления таких строк (ограничение удаления - restrict)
каскадное удаление строки главной таблицы вместе со всеми связанными строками подчиненной таблицы (удаление каскадом - cascade).
В нашем конкретном примере с телефонами разумным решением будет каскадное удаление (при удалении клиента автоматически должны удаляться и все строки с его телефонами). В реальной практике чаще применятся запрет удаления строк при наличии на них хотя бы одной ссылки из других таблиц. Отметим, что ни одна СУБД не позволит удалить всю таблицу целиком, если имеется хотя бы одна другая таблица, которая на нее ссылается.
Изменение (обновление) значений внешнего, а особенно первичного ключа заполненной базы данных обычно не происходит, однако стратегия каскадного обновления некоторыми СУБД поддерживается.
В следующей главе пособия реляционная модель данных будет определена более формально. Наличие формального математического описания считается одним из достоинств реляционной модели.