- •Содержание
- •Глава 1 Концепция баз данных 6
- •Глава 2 Модели данных 12
- •Глава 3 Реляционная модель данных 24
- •Глава 4 Элементы языка sql 42
- •Глава 5 Проектирование баз данных 66
- •Глава 6 Функции субд и системы обработки транзакций 81
- •Глава 7 Технологии, модели и архитектура систем обработки данных 88
- •Глава 1 Концепция баз данных
- •1.1 Данные и эвм
- •1.2 Поколения субд и направления исследований
- •1.3 Терминология в субд
- •1.4 Вопросы для самоконтроля к главе 1
- •Глава 2 Модели данных
- •2.1. Классификация моделей данных
- •2.2 Основные особенности систем, основанных на инвертированных списках
- •2.2.1 Структуры данных
- •2.2.2 Манипулирование данными
- •2.2.3 Ограничения целостности
- •2.3 Иерархические модели
- •2.3.1. Иерархические структуры данных
- •2.3.2 Манипулирование данными
- •2.3.3 Ограничения целостности
- •2.4 Сетевые модели
- •2.4.1 Сетевые структуры данных
- •2.4.2 Манипулирование данными
- •2.4.3 Ограничения целостности
- •2.5 Физические модели организации баз данных
- •Файловые структуры, используемые для хранения данных в бд
- •Модели страничной организации данных в современных бд
- •Этапы доступа к бд
- •Вопросы и упражнения для самоконтроля к главе 2
- •Глава 3 Реляционная модель данных
- •3.1 Базовые понятия реляционных баз данных
- •3.1.1. Тип данных
- •3.1.2. Домен
- •3.1.3 Схема отношения, схема базы данных
- •3.1.4 Кортеж, отношение, ключи
- •3.1.5 Связи в реляционных базах данных
- •3.2 Фундаментальные свойства отношений
- •3.2.1 Отсутствие кортежей-дубликатов
- •3.2.2 Отсутствие упорядоченности кортежей
- •3.2.3 Отсутствие упорядоченности атрибутов
- •3.2.4 Атомарность значений атрибутов
- •3.3. Характеристика реляционной модели данных
- •3.4 Трехзначная логика (3vl)
- •3.5 Реляционная алгебра
- •Эквисоединение. Наиболее важным частным случаем -соединения является случай, когда есть просто равенство. Синтаксис эквисоединения:
- •3.6 Особенности операций реляционной алгебры
- •Реляционное исчисление
- •Вопросы и упражнения для самоконтроля к главе 3
- •Глава 4 Элементы языка sql
- •4.1 История языка sql
- •4.2 Структура языка sql
- •Ddl (Data Definition Language) - операторы определения объектов базы данных:
- •Dml (Data Manipulation Language) - операторы манипулирования данными:
- •Dcl (Data Control Language) - операторы контроля данных, защиты и управления данными:
- •4.3 Создание запроса с помощью оператора select
- •4.3.1 Создание простых запросов
- •4.3.2. Агрегирование данных в запросах
- •4.3.3 Формирование запросов на основе соединения таблиц
- •4.3.4 Формирование структур вложенных запросов
- •Простые подзапросы
- •4.3.4.2 Соотнесенные (коррелированные) подзапросы
- •Запросы с использованием кванторов
- •4.3.5 Объединение нескольких запросов в один
- •4.3.6 Синтаксис оператора select
- •4.4 Операторы манипулирования данных
- •4.4.1 Оператор удаления данных delete
- •4.4.2 Оператор вставки данных insert
- •4.4.3 Оператор обновления данных update
- •Операторы определения объектов базы данных
- •4.5.1 Операторы определения таблицы
- •4.5.2 Оператор определения представлений create view
- •Операторы контроля данных, защиты и управления данными
- •4.6.1 Операторы управления привилегиями
- •4.6.2 Операторы управления транзакциями
- •4.6.3 Проблемы параллельной работы транзакций
- •Вопросы и упражнения для самоконтроля к главе 4
- •Глава 5 Проектирование баз данных
- •5.1 Проектирование реляционных бд с использованием принципов нормализации
- •Проектирование реляционных бд с использованием семантических моделей
- •5.2.1 Применение семантических моделей при проектировании
- •5.2.2. Основные понятия модели Entity-Relationship
- •5.2.3 Пример разработки простой er-модели
- •Практические рекомендации по проектированию бд
- •Вопросы и упражнения для самоконтроля к главе 5
- •Глава 6 Функции субд и системы обработки транзакций
- •6.1 Основные функции субд
- •1.Непосредственное управление данными во внешней памяти
- •2. Управление буферами оперативной памяти
- •3. Управление транзакциями
- •4. Журнализация
- •5. Поддержка языков бд
- •Системы обработки транзакций
- •6.2.1 Oltp-системы
- •6.2.2 Olap -системы
- •6.2.3 Мониторы транзакций
- •Архитектура субд
- •6.4 Пользователи бд
- •6.4 Вопросы и упражнения для самоконтроля по главе 6
- •Глава 7 Технологии, модели и архитектура систем обработки данных
- •7.1 Технологии и модели архитектуры «клиент-сервер»
- •7.2 Распределенная обработка данных
- •Аспекты сетевого взаимодействия
- •Технология распределенной бд (технология star)
- •Технология тиражирования данных
- •7.3 Концепция активного сервера в модели dbs
- •7.4 Вопросы и упражнения для самоконтроля к главе 7
- •Литература
Эквисоединение. Наиболее важным частным случаем -соединения является случай, когда есть просто равенство. Синтаксис эквисоединения:
Пример 3.8 Пусть имеются отношения , и , хранящие информацию о поставщиках, деталях и поставках соответственно (для удобства введем краткие наименования атрибутов):
Отношение P (Поставщики)
Номер поставщика PNUM |
Наименование поставщика PNAME |
1 |
Иванов |
2 |
Петров |
3 |
Сидоров |
Отношение D (Детали)
Номер детали DNUM |
Наименование детали DNAME |
1 |
Болт |
2 |
Гайка |
3 |
Винт |
Отношение PD (Поставки)
Номер поставщика PNUM |
Номер детали DNUM |
Поставляемое количество VOLUME |
1 |
1 |
100 |
1 |
2 |
200 |
1 |
3 |
300 |
2 |
1 |
150 |
2 |
2 |
250 |
3 |
1 |
1000 |
Ответ на вопрос, какие детали поставляются поставщиками, дает эквисоединение . На самом деле, т.к. в отношениях имеются одинаковые атрибуты, то требуется сначала переименовать атрибуты, а потом выполнить эквисоединение. В результате имеем отношение «Какие детали поставляются какими поставщиками?»
Номер поставщика PNUM1 |
Наименование поставщика PNAME |
Номер поставщика PNUM2 |
Номер детали DNUM |
Поставляемое количество VOLUME |
1 |
Иванов |
1 |
1 |
100 |
1 |
Иванов |
1 |
2 |
200 |
1 |
Иванов |
1 |
3 |
300 |
2 |
Петров |
2 |
1 |
150 |
2 |
Петров |
2 |
2 |
250 |
3 |
Сидоров |
3 |
1 |
1000 |
Недостатком эквисоединения является то, что если соединение происходит по атрибутам с одинаковыми наименованиями (а так чаще всего и происходит!), то в результирующем отношении появляется два атрибута с одинаковыми значениями. В нашем примере атрибуты PNUM1 и PNUM2 содержат дублирующие данные. Избавиться от этого недостатка можно, взяв проекцию по всем атрибутам, кроме одного из дублирующих. Именно так действует естественное соединение.
Естественное соединение. Пусть даны отношения и , имеющие одинаковые атрибуты (т.е. атрибуты с одинаковыми именами и определенные на одинаковых доменах). Тогда естественным соединением отношений и называется отношение с заголовком и телом, содержащим множество кортежей , таких, что и .
Естественное соединение настолько важно, что для него используют специальный синтаксис:
Замечание. В синтаксисе естественного соединения не указываются, по каким атрибутам производится соединение. Естественное соединение производится по всем одинаковым атрибутам.
Замечание. Естественное соединение эквивалентно следующей последовательности реляционных операций:
Переименовать одинаковые атрибуты в отношениях
Выполнить декартово произведение отношений
Выполнить выборку по совпадающим значениям атрибутов, имевших одинаковые имена
Выполнить проекцию, удалив повторяющиеся атрибуты
Переименовать атрибуты, вернув им первоначальные имена
Пример 3.9 В предыдущем примере ответ на вопрос «Какие детали поставляются поставщиками?», более просто записывается в виде естественного соединения трех отношений (для удобства просмотра порядок атрибутов изменен, это является допустимым по свойствам отношений):
Отношение P JOIN PD JOIN D
Номер поставщика PNUM |
Наименование поставщика PNAME |
Номер детали DNUM |
Наименование детали DNAME |
Поставляемое количество VOLUME |
1 |
Иванов |
1 |
Болт |
100 |
1 |
Иванов |
2 |
Гайка |
200 |
1 |
Иванов |
3 |
Винт |
300 |
2 |
Петров |
1 |
Болт |
150 |
2 |
Петров |
2 |
Гайка |
250 |
3 |
Сидоров |
1 |
Болт |
1000 |
8. Деление. У операции реляционного деления два операнда - бинарное и унарное отношения. Результирующее отношение состоит из одноатрибутных кортежей, включающих значения первого атрибута кортежей первого операнда таких, что множество значений второго атрибута (при фиксированном значении первого атрибута) совпадает со множеством значений второго операнда. Пусть даны отношения и , причем атрибуты - общие для двух отношений. Делением отношений на называется отношение с заголовком и телом, содержащим множество кортежей , таких, что для всех кортежей в отношении найдется кортеж .
Отношение выступает в роли делимого, отношение выступает в роли делителя. Деление отношений аналогично делению чисел с остатком.
Синтаксис операции деления:
Замечание. Типичные запросы, реализуемые с помощью операции деления, обычно в своей формулировке имеют слово «все» - «Какие поставщики поставляют все детали?».
Пример 3.10 В примере с поставщиками, деталями и поставками ответим на вопрос, «Какие поставщики поставляют все детали?».
В качестве делимого возьмем проекцию , содержащую номера поставщиков и номера поставляемых ими деталей:
Проекция X=PD[PNUM,DNUM]
Номер поставщика PNUM |
Номер детали DNUM |
1 |
1 |
1 |
2 |
1 |
3 |
2 |
1 |
2 |
2 |
3 |
1 |
В качестве делителя возьмем проекцию , содержащую список номеров всех деталей (не обязательно поставляемых кем-либо):
Проекция Y=D[DNUM]
Номер детали DNUM |
1 |
2 |
3 |
Деление дает список номеров поставщиков, поставляющих все детали:
Отношение X DEVIDEBY Y
Номер поставщика PNUM |
1 |
Оказалось, что только поставщик с номером 1 поставляет все детали.
9. Переименование. Операция переименования производит отношение, тело которого совпадает с телом операнда, но имена атрибутов изменены.
10. Присваивание. Операция присваивания позволяет сохранить результат вычисления реляционного выражения в существующем отношении БД.