- •Введение
- •1. Концепция информационных систем
- •1.1. Информация и данные предметных областей
- •1.2. Структура банка данных
- •1.2.1. База данных
- •1.2.2. Система управления базами данных
- •1.2.3. Словарь данных
- •1.2.4. Администратор базы данных и его функции
- •1.3. Контрольные вопросы
- •2. Инфомационное моделирование предметных областей для баз данных
- •2.1. Отображение явлений реального мира данными
- •2.2. Инфологическое моделирование по
- •2.3. Трехуровневое представление информационных объектов
- •2.4. Структурные элементы для моделирования данных
- •2.5. Ключи бд
- •2.6. Интеграция полей бд в отношения
- •2.7. Требования интеграции полей в отношения
- •2.8. Обобщенная структура модели данных в бнд
- •2.9. Er-модель бд
- •2.10. Формирование связей сущностей
- •Способ 1. Определение связи сущностей введением дополнительной сущности
- •Способ 2. Определение связей сущностей добавлением в тип сущности общих атрибутов
- •2.11. Бинарные отношения сущностей
- •2.12. Формы представления структур данных
- •2.13. Организация систем бд
- •2.14. Средства поддержки бд
- •2.15. Виды моделей данных для бд
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Контрольные вопросы
- •3. Системы управления базами данных
- •3.1. Функции и состав универсальной субд
- •3.2. Лингвистическое обеспечение субд
- •3.3. Независимость прикладных программ от данных
- •3.4. Операции над данными
- •Селекция данных
- •Обработка данных
- •Запросы к бд
- •3.5. Схема реализации запроса в БнД
- •Распределенная обработка данных
- •Комбинированная обработка данных
- •3.7. Целостность и ограничения целостности данных
- •3.8. Защита данных в бд
- •Контрольные вопросы
- •4.2.2. Вторичный ключ
- •4.3. Функциональные и многозначные зависимости
- •4.3.1. Функциональные зависимости
- •X y (X влечет y).
- •4.3.2. Аксиомы функциональных зависимостей
- •Контрольные вопросы
- •5. Реляционная алгебра
- •5.1. Операции над отношениями
- •5.2. Оператор "объединение" (union)
- •5.3. Оператор "вычитание" (difference)
- •5.4. Оператор "пересечение" (intersection)
- •5.5. Оператор "проектирование" (proj)
- •5.6. Оператор "выбор" (sel)
- •Комбинированный запрос с операторами proj и sel
- •5.7 Оператор "соединение" (join)
- •Запрос с соединением по одному полю
- •Алгоритм реализации
- •Запрос с соединением по нескольким полям
- •Алгоритм реализации
- •Оператор "соединение по условию"
- •5.8. Оператор "умножение" (product)
- •Запрос с оператором умножения
- •Алгоритм реализации
- •5.9. Оператор "деление" (division)
- •5.10. Оптимизация алгоритмов реализации запросов
- •Контрольные вопросы
- •6. Нормализация реляционных бд
- •6.1. Задачи нормализации Бд
- •6.2. Первая нормальная форма
- •6.3. Декомпозиция реляционных таблиц
- •Проблема дублирования, операторы реляционной алгебры для декомпозиции и объединения таблиц
- •Присоединенные записи
- •Теорема Хита
- •Критерий полной декомпозиции с исключением дублирования
- •6.4. Вторая нормальная форма
- •6.5. Третья нормальная форма
- •6.6. Экстранормализационные формы
- •Нормальная форма Бокса-Кодда
- •Четвертая нормальная форма
- •Пятая нормальная форма
- •6.7. Методические аспекты реализации нормализации
- •Контрольные вопросы
5.4. Оператор "пересечение" (intersection)
Функция: для двух РТ R1 и R2 одинаковой арности и с совпадающими типами полей формируется РТ R с записями, входящими в обе РТ.
Синтаксис: R = R1 intersection R2.
Пример.
Выполнить пересечение таблиц R1 и R2, результат записать в таблицу R.
-
R1:
A
B
R2:
A
B
Ответ: R:
A
B
a
4
a
5
b
6
b
6
b
6
5.5. Оператор "проектирование" (proj)
Функция: из РТ R1 оператор выбирает заданные типы полей и размещает в указанном порядке в таблице R.
Синтаксис: R = proj a1,...,ar(R1)
Пример.
Из РТ "Разработчики" (R1 на рис.5.1) выбрать поле ФИО и поле ГодРождения.
R = proj ФИО, ГодРожд-я(Разработчики)
Ответ: R: |
ФИО |
ГодРожд-я |
|
Белов А. |
1940 |
|
Крылов Г. |
1962 |
|
Фатов Р. |
1964 |
|
Белов А. |
1953 |
|
Крылов Г. |
1964 |
5.6. Оператор "выбор" (sel)
Функция: из РТ R1 по заданному критерию выбирается требуемая совокупность записей. В частном случае результатом выборки может быть и пустое множество.
Синтаксис: R= sel <F> (R1),
где F - критерий выбора.
Критерии выбора могут формулироваться на основе операторов двух типов:
операторы сравнения: =, <>, <, <=, >, >=;
логические операторы: И (AND), ИЛИ (OR), НЕ (NOT).
Пример 1.
В БД на Рис. 0 .24 выбрать данные разработчика Белова А.
Для решения надо использовать РТ "Разработчики" и выбрать данные Белова А.:
R= sel <ФИО = 'Белов А.'> (Разработчики)
Ответ: R: |
№Разр-ка |
ФИО |
ГодРожд-я |
Стаж |
|
R1 |
Белов А. |
1940 |
21 |
|
R4 |
Белов А. |
1953 |
21 |
Пример 2.
В БД на Рис. 0 .24 выбрать программистов выше третьей категории, работающих на Pascal'e.
Для решения воспользуемся РТ "Программисты" и критерием выбора:
<F> = <(ЯзыкПрогр-я = 'Pas') and (Катег-яПрогр-та < 3)>.
Тогда оператор примет вид:
R=sel<(ЯзыкПр-я='Pas')and(Катег-яПр-та<3)> (Программисты).
Ответ: R: |
№Пр-та |
№Разр-каПр-та |
ЯзыкПр-я |
Катег-яПр-та |
|
A1 |
R4 |
Pas |
1 |
|
A2 |
R2 |
Pas |
2 |
Комбинированный запрос с операторами proj и sel
Рассмотрим комбинированный запрос с операторами PROJ и SEL для БД "Разработчики ПП", приведенной на рис.5.1.
Запрос.
Выбрать ФИО разработчиков со стажем от 12 лет, ГодРождения которых 1960 и позже.
Для ответа на запрос в БД "Разработчики ПП" необходимо использовать РТ "Разработчики". Тогда уравнение ответа можно записать в виде:
R=ProjФИО(sel<(Стаж >=12)and(ГодРожд-я>=1960)> (Разр-ки))
Ответ : R: |
ФИО |
|
Крылов Г. |