- •Основы систем баз данных
 - •Содержание
 - •Введение
 - •В первом разделе рассматриваются базовые понятия реляционной модели данных. Дается общая характеристика реляционной модели данных
 - •Раздел 1. Базовые понятия реляционной модели данных. Общая характеристика реляционной модели данных
 - •1.1. Типы данных
 - •Простые типы данных
 - •Структурированные типы данных
 - •Ссылочные типы данных
 - •Типы данных, используемые в реляционной модели
 - •1.2. Домены
 - •1.3. Отношения, атрибуты, кортежи отношения Определения и примеры
 - •Свойства отношений
 - •Первая нормальная форма
 - •1.4. Контрольные вопросы
 - •Раздел 2. Реляционная алгебра. Обзор реляционной алгебры
 - •2.1. Замкнутость реляционной алгебры
 - •2.2. Отношения, совместимые по типу
 - •2.3. Оператор переименования атрибутов
 - •2.4. Теоретико-множественные операторы Объединение
 - •Пересечение
 - •Вычитание
 - •Декартово произведение
 - •Специальные реляционные операторы Выборка (ограничение, селекция)
 - •Проекция
 - •Соединение
 - •Общая операция соединения
 - •Тэта-соединение
 - •Экви-соединение
 - •Естественное соединение
 - •Деление
 - •2.5. Примеры использования реляционных операторов
 - •Невыразимость транзитивного замыкания реляционными операторами
 - •Кросс-таблицы
 - •2.6. Контрольные вопросы
 - •Рздел 3. Нормальные формы отношений. Этапы разработки базы данных
 - •3.1. Критерии оценки качества логической модели данных
 - •Адекватность базы данных предметной области
 - •Легкость разработки и сопровождения базы данных
 - •Скорость операций обновления данных (вставка, обновление, удаление)
 - •Скорость операций выборки данных
 - •Основной пример
 - •1Нф (Первая Нормальная Форма)
 - •Аномалии обновления
 - •Аномалии вставки (insert)
 - •Аномалии обновления (update)
 - •Аномалии удаления (delete)
 - •3.2. Функциональные зависимости
 - •Определение функциональной зависимости
 - •Функциональные зависимости отношений и математическое понятие функциональной зависимости
 - •3.3. 2Нф (Вторая Нормальная Форма)
 - •Анализ декомпозированных отношений
 - •Оставшиеся аномалии вставки (insert)
 - •Оставшиеся аномалии обновления (update)
 - •Оставшиеся аномалии удаления (delete)
 - •3.4. 3Нф (Третья Нормальная Форма)
 - •Алгоритм нормализации (приведение к 3нф)
 - •3.5. Анализ критериев для нормализованных и ненормализованных моделей данных Сравнение нормализованных и ненормализованных моделей
 - •3.6. Oltp и olap-системы
 - •3.7. Корректность процедуры нормализации - декомпозиция без потерь. Теорема Хеза
 - •3.8. Контрольные вопросы
 - •Раздел 4. Нормальные формы более высоких порядков
 - •4.1. Нфбк (Нормальная Форма Бойса-Кодда)
 - •4.2. 4Нф (Четвертая Нормальная Форма)
 - •4.3. 5Нф (Пятая Нормальная Форма)
 - •4.4. Продолжение алгоритма нормализации (приведение к 5нф)
 - •4.5. Контрольные вопросы
 - •Раздел 5. Элементы модели "сущность-связь"
 - •5.1. Основные понятия er-диаграмм
 - •5.2. Пример разработки простой er-модели
 - •5.3. Концептуальные и физические er-модели
 - •5.4. Контрольные вопросы
 - •Раздел 6. Элементы языка sql
 - •6.1. Операторы sql
 - •Операторы ddl (Data Definition Language) - операторы определения объектов базы данных
 - •Операторы dml (Data Manipulation Language) - операторы манипулирования данными
 - •Операторы защиты и управления данными
 - •6.2. Примеры использования операторов манипулирования данными
 - •Insert - вставка строк в таблицу
 - •Примеры использования оператора select
 - •Отбор данных из одной таблицы
 - •Отбор данных из нескольких таблиц
 - •Использование имен корреляции (алиасов, псевдонимов)
 - •Использование агрегатных функций в запросах
 - •Использование агрегатных функций с группировками
 - •Использование подзапросов
 - •Использование объединения, пересечения и разности
 - •Синтаксис оператора выборки данных (select)
 - •Синтаксис оператора выборки
 - •Синтаксис соединенных таблиц
 - •Синтаксис условных выражений раздела where
 - •Порядок выполнения оператора select
 - •Стадия 1. Выполнение одиночного оператора select
 - •Стадия 2. Выполнение операций union, except, intersect
 - •Стадия 3. Упорядочение результата
 - •Как на самом деле выполняется оператор select
 - •Реализация реляционной алгебры средствами оператора select (Реляционная полнота sql)
 - •6.3. Контрольные вопросы
 - •Заключение
 - •Библиографический список
 
1.3. Отношения, атрибуты, кортежи отношения Определения и примеры
Фундаментальным понятием реляционной модели данных является понятие отношения. В определении понятия отношения будем следовать книге К. Дейта.
Определение 1. Атрибут отношения есть пара вида <Имя_атрибута : Имя_домена>.
Имена атрибутов должны быть уникальны в пределах отношения. Часто имена атрибутов отношения совпадают с именами соответствующих доменов.
Определение 2. Отношение R, определенное на множестве доменов D1, D2, …, Dn (не обязательно различных), содержит две части: заголовок и тело.
Заголовок отношения содержит фиксированное количество атрибутов отношения:
(<A1: D1>, <A2: D2>, …, <An: Dn>)
Тело отношения содержит множество кортежей отношения. Каждый кортеж отношения представляет собой множество пар вида <Имя_атрибута : Значение_атрибута>:
(<A1: Val1>, <A2: Val2>, …, <An: Valn>)
таких, что значение Vali атрибута Ai принадлежит домену Di.
Отношение обычно записывается в виде:
R (<A1: D1>, <A2: D2>, …, <An: Dn>),
или короче R (A1, A2, …, An), или просто R.
Число атрибутов в отношении называют степенью (или -арностью) отношения.
Мощность множества кортежей отношения называют мощностью отношения.
Возвращаясь к математическому понятию отношения, можно сделать следующие выводы:
Вывод 1. Заголовок отношения описывает декартово произведение доменов, на котором задано отношение. Заголовок статичен, он не меняется во время работы с базой данных. Если в отношении изменены, добавлены или удалены атрибуты, то в результате получим уже другое отношение (пусть даже с прежним именем).
Вывод 2. Тело отношения представляет собой набор кортежей, т.е. подмножество декартового произведения доменов. Таким образом, тело отношения собственно и является отношением в математическом смысле слова. Тело отношения может изменяться во время работы с базой данных - кортежи могут изменяться, добавляться и удаляться.
Пример 1. Рассмотрим отношение "Сотрудники" заданное на доменах "Номер_сотрудника", "Фамилия", "Зарплата", "Номер_отдела". Т.к. все домены различны, то имена атрибутов отношения удобно назвать так же, как и соответствующие домены. Заголовок отношения имеет вид:
Сотрудники (Номер_сотрудника, Фамилия, Зарплата, Номер_отдела)
Пусть в данный момент отношение содержит три кортежа:
(1, Иванов, 1000, 1),
(2, Петров, 2000, 2),
(3, Сидоров, 3000, 1).
Такое отношение естественным образом представляется в виде таблицы.
Таблица 1
Отношение "Сотрудники"
Номер_сотрудника  | 
			Фамилия  | 
			Зарплата  | 
			Номер_отдела  | 
		
1  | 
			Иванов  | 
			1000  | 
			1  | 
		
2  | 
			Петров  | 
			2000  | 
			2  | 
		
3  | 
			Сидоров  | 
			3000  | 
			1  | 
		
Определение 3. Реляционной базой данных называется набор отношений.
Определение 4. Схемой реляционной базы данных называется набор заголовков отношений, входящих в базу данных.
Хотя любое отношение можно изобразить в виде таблицы, нужно четко понимать, что отношения не являются таблицами. Это близкие, но не совпадающие понятия. Различия между отношениями и таблицами будут рассмотрены ниже.
Термины, которыми оперирует реляционная модель данных, имеют соответствующие "табличные" синонимы.
Таблица 2
Реляционные термины и их соответствующие "табличные" синонимы
Реляционный термин  | 
			Соответствующий "табличный" термин  | 
		
База данных  | 
			Набор таблиц  | 
		
Схема базы данных  | 
			Набор заголовков таблиц  | 
		
Отношение  | 
			Таблица  | 
		
Заголовок отношения  | 
			Заголовок таблицы  | 
		
Тело отношения  | 
			Тело таблицы  | 
		
Атрибут отношения  | 
			Наименование столбца таблицы  | 
		
Кортеж отношения  | 
			Строка таблицы  | 
		
Степень (-арность) отношения  | 
			Количество столбцов таблицы  | 
		
Мощность отношения  | 
			Количество строк таблицы  | 
		
Домены и типы данных  | 
			Типы данные в ячейках таблицы  | 
		
