
- •Шехтман в. Е.
- •1. Базы данных и модели данных
- •1.1. Введение.
- •1.2. Файлы операционной системы
- •1.3. Пример базы данных.
- •1.4. Иерархическая модель данных
- •1.5. Сетевая модель данных
- •1.6. Инвертированные списки.
- •1.7. Реляционная модель данных
- •2. Введение в реляционную модель данных.
- •3. Реляционная алгебра
- •3.1. Теоретико-множественные операции.
- •3.2. Специальные операции ra
- •4. Нормализация данных
- •4.1. Полная декомпозиция.
- •Магазин товар ндс
- •Товар ндс
- •Магазин ндс
- •Товар ндс
- •Магазин товар ндс
- •4.2. Проблема дублирования данных.
- •1 Глобус 33-33-33
- •2 Глобус 33-33-33
- •4 Океан 77-77-77
- •4.3. Висячие записи.
- •Поставщик Тел
- •4.4. Проблемы, возникающие из-за неудачной структуры данных.
- •4.5. Пятая нормальная форма (5нф).
- •4.6. Функциональная зависимость.
- •4.7. Связь между фз и полной декомпозицией отношения.
- •4.8. Первая нормальная форма (1нф).
- •4.9. Вторая нормальная форма (2нф).
- •4.10. Третья нормальная форма (3нф).
- •4.11. Нормальная форма Бойса-Кодда (нфбк).
- •4.12. Многозначная зависимость.
- •4.13. Четвертая нормальная форма (4нф).
- •4.14. Пример нормализации.
- •4.15. Резюме. Нормальные формы.
- •5. Инфологическое моделирование.
- •5.1. Сущность и набор сущностей
- •5.2. Связи между сущностями.
- •5.3. Рекурсивная связь. Роли.
- •5.4. Множественные связи.
- •5.5. Суперсущности и производные сущности
- •5.6. Слабые наборы сущностей
- •5.7. Борьба с избыточнотью
- •5.8. Преобразование инфологической модели в физическую модель.
- •5.9. Пример инфологического моделирования.
- •6. Язык sql
- •6.1. История sql.
- •6.2. Структура sql.
- •6.3. Язык запросов
- •6.4. Простые запросы на выборку данных.
- •6.5. Агрегатные (групповые) функции.
- •6.6. Вложенные запросы
- •6.7. Внешние объединения
- •6.8. Изменение данных
- •Insert into r1 (o, fio, d) values (5, ‘Иванов’, ’бд’)
- •7. Представления.
- •8. Определение схемы базы данных и ограничений целостности
- •9. Транзакции
- •9.1. Свойства транзакций
- •9.2. Надежное хранение данных
- •9.3. Параллельное выполнение транзакций
- •9.3.1. Коллизия “пропавшие изменения” - lost update problem
- •9.3.2. Коллизия “промежуточные данные” - dirty read
- •9.3.3. Коллизия “Несогласованные данные” - unrepeatable read, inconsistent analysis
- •9.3.4. Коллизия “фантом” - phantom
- •9.4. Уровни изолированности
- •9.5. Тупики
- •10. Ограничение прав доступа в целях обеспечения безопасности
- •11. Физическая организация баз данных
- •11.1. Организация размещения данных.
- •11.2. Организация индексов
- •11.2.1. Поиск в бд.
- •11.2.2. Плотный индекс (индексно-прямые файлы).
- •11.2.3. Неплотный индекс (индексно-последовательные файлы).
- •11.2.4. Сбалансированные деревья.
- •11.2.5. Инвертированные списки.
- •12. Архитектура субд. Методы оптимизации запросов.
- •Логические преобразования запросов.
- •Преобразования запросов с изменением порядка реляционных операций.
- •13. Аналитические системы.
- •Анализ данных.
- •Хранилища данных
- •Типы ошибок
- •Способы реализации olap.
- •Требования к средствам реализации систем оперативной и аналитической обработки данных
- •Многомерная модель данных.
- •Разработка данных
- •14. Загружаемые процедуры.
- •In pr double precision)
- •If eof then leave Cl end if;
- •Insert into providers(code, name)
- •Values (nr.Codec, ‘*** новый поставщик ***’);
- •15. Модели совместного доступа к бд
- •15.1. Файл-серверная модель.
- •15.2. Модель клиент-сервер с бизнес-логикой на клиенте.
- •15.3. Модель клиент-сервер с бизнес-логикой на сервере субд (хранимые процедуры и триггеры) и частично на клиенте.
- •15.4. Модель сервера приложений (трёхзвенная архитектура, “тонкий клиент”)
- •Список литературы
3.2. Специальные операции ra
3.2.1. Горизонтальный выбор (горизонтальная фильтрация, ограничение отношения).
Пусть α - булевское выражение (предикат) над атрибутами отношения, например:
A1 > 10 или A2 = ‘Новокузнецк’
Отношение R[α] = {r | r R α( r ) = True}
МагР [Шифр товара = ‘Ф1’]:
Ф1 Бананы Привет
Ф1 Бананы Ласточка
3.2.2. Проектирование (вертикальная фильтрация).
Проекция отношения R на набор атрибутов B (записывается R[B]) – отношение, содержащее только атрибуты из B, с кортежами полученными из кортежей R путем удаления дубликатных кортежей.
Чтобы выяснить, в каких магазинах имеются в продаже Бананы и Апельсины необходимо выполнить две операции:
1. R = МагР[ Наименование товара = ‘Бананы’ Наименование Товара = ‘Апельсины’]
2. R1 = R[ Наименование магазина ]
Эти две операции можно записать в виде одной длинной, задав приоритет выполнения скобками ( и ):
R1 = ( МагР [Наименование товара = ‘Бананы’ Наименование товара = ‘Апельсины’]) [Наименование магазина]
До сих пор рассматривались унарные специальные операции. Следующие операции бинарные.
3.2.3. Условное соединение
Пусть отношение R = {r}, отношение Q = {q}. SR = (A1, …, Ak), SQ = (B1, …, Bm). Набор атрибутов A принадлежит {Ai}, i=1,k; набор атрибутов B принадлежит {Bj}, j=1,m. A и B состоят из Θ-сравнимых атрибутов.
Соединение отношений R и Q при условии β (записывается R [β] Q) – это подмножество декартова произведения RQ, кортежи которого удовлетворяют условию β.
R [β] Q = {(r, q) | (r, q) | r.A Θ q.B = True, I=1, k}
Введем в рассмотрение отношение МагП, указывающее поставщиков соответсвующих товаров:
Шифр товара Наименование товара Поставщик
Ф1 Бананы Глобус
Ф2 Арбузы Центрпродсервис
Ф3 Авокадо Голбус
Ф4 Яблоки Глобус
Ф5 Помидоры Центрпродсервис
Ф6 Фейхоа Глобус
Ф11 Ананасы Центрпродсервис
Какие продукты, из имеющихся в магазине “Привет”, были поставлены фирмой “Глобус”?
(МагП [ (МагП.Шифр товара = МагР.Шифр товара) МагР.Наименование магазина = ”Привет” МагП.Поставщик = “Голбус” ]) МагР [Наименование товара]:
Наименование товара
Бананы
Для демонстрации способов использования рассмотренных операций введем новые отношения:
R1 = <ФИО, Дисциплина, Оценка>
R2 = <ФИО, Группа>
R3 = <Группа, Дисциплина>
Домен атрибута Дисциплина – все дисциплины в ВУЗе
Домен атрибута Группы – все группы в ВУЗе
Домен атрибута ФИО – все студенты ВУЗа
Кто сдал экзамен по базам данных?
(R1[Дисциплина = “базы данных”]) [ФИО]
Список ФИО, сдавших на 5 “базы данных”?
(R1[Оценка=5 Дисциплина = “базы данных”]) [ФИО]
Кто должен сдавать БД?
(R2 [R3.Группа = R2.Группа R3.Дисциплина = “базы данных”] R3) [ФИО]
Кто имеет двойки более чем по 1 дисциплине?
(R1 [R1.ФИО = R1^.ФИО R1.Дисциплина <> R1^.Дисциплина
R1.Оценка <= 2 R1^.Оценка <= 2] R1^) [ФИО]
Список круглых отличников?
1. Список всех пар <студент, дисциплина>:
R4 = (R2 [R2.Group = R3.Group] R3) [FIO, Discipline]
2. Список всех пар <студент, дисциплина> для которых 5:
R5 = (R1 [ Оценка = 5] ) [ FIO, Discipline ]
3. Список студентов, не сдавших что-либо на 5:
R6 = (R4 \ R5) [FIO]
4. Исключаем R6 из общего списка студентов:
R2 [ФИО] \ R6
Это и является ответом на первоначальный вопрос.
3.2.4. Деление
Пусть заданы два отношения: A со схемой (a1, a2, ..., an, b1, b2, ..., bm) и B со схемой (b1, b2, ..., bm). Будем считать, что атрибут bi отношения A и атрибут bi отношения B не только обладают одним и тем же именем, но и определены на одном и том же домене (имеют один и тот же тип). Назовем множество атрибутов {aj} составным атрибутом a, а множество атрибутов {bj} - составным атрибутом b. После этого будем говорить о реляционном делении бинарного отношения A(a,b) на унарное отношение B(b).
Результатом деления A на B является отношение C(a), состоящее из кортежей v таких, что в отношении A имеются кортежи <v, w> такие, что множество значений {w} включает множество значений атрибута b в отношении B.
Введем два отношения:
R1:
Должность Отдел
Начальник ПРОЕКТНЫЙ ОТДЕЛ
Аналитик ПРОЕКТНЫЙ ОТДЕЛ
Расчетчик БУХГАЛТЕРИЯ
Секретарь АДМИНИСТРАЦИЯ
R2 (содержит все должности в штатном расписании организации):
Должность
Начальник
Расчетчик
Секретарь
Аналитик
Инженер
Техник
Тогда после выполнения операции реляционного деления отношения R2 на отношение R1 будет получено унарное отношение, содержащее перечень отделов, сотрудники которых обладают имеющимися в этой организации должностями.
R2 div R1:
ОТДЕЛ
ПРОЕКТНЫЙ ОТДЕЛ
БУХГАЛТЕРИЯ
АДМИНИСТРАЦИЯ