
- •Основы баз данных. Введение.
- •БзХранятся не только данные, но и знания о применении этих данных. Реализуются они в виде процедур и алгоритмов. Выборки обрабатывают данные.
- •История БнД.
- •Проблемы бд:
- •Состав БнД.
- •Процесс проектирования базы данных.
- •Er-модель (модель Чена).
- •Основные понятия:
- •Виды связи
- •Рекурсивные связи
- •Представление связей более высокого порядка (не бинарных).
- •Избыточное дублирование.
- •Реляционная модель данных.
- •12 Правил Кодда, которым должна удовлетворять реляционная база данных.
- •Операции над данными.
- •Реляционная алгебра.
- •Свойства реляционных операций.
- •Понятие функциональной зависимости (ф.З).
- •Запись запросов на языке реляционной алгебры.
- •Проектирование реляционной базы данных.
- •Методы проектирования.
- •7 Правил Джексона.
- •Язык доступа к данным, основанный на исчислении с переменными кортежами.
- •Атрибуты, используемые для описания таблиц.
- •Обработка ссылочной целостности.
- •Операторы манипулирования данными.
- •Как задается условие?
- •Запросы, которые реализуются на основе соединения.
- •Подзапрос.
- •Использование квантора exists для поиска пересечения и разности.
- •Квантор общности моделирующий операцию деления.
- •Соответствия между операциями реляционной алгебры и sql.
- •Технологии клиент-сервер.
- •1 Вариант - файловый сервер.
- •2 Вариант – удаленный доступ.
- •3 Вариант – сервер Базы Данных.
- •4 Вариант – сервер приложений.
- •Внутренняя модель данных.
- •B-дерево.
- •Язык query by example (qbe)
- •Операции выборки в отношениях, имеющих древовидную структуру
- •Операции запоминания
- •Библиотечные функции
Понятие функциональной зависимости (ф.З).
Множество
атрибутов
функционально зависит от
(
),
если в любой момент времени существования
базы данных каждому значению
соответствует
не более одного значения
.
Если
,
то справедливо следующее выражение
.
Функциональная зависимость полная, если это соотношение выполняется в любой момент времени, если в какой-то момент времени оно будет нарушено, то Ф.З. не полная.
Многозначная
функциональная зависимость ().
Множество
атрибутов
состоит
в многозначной функциональной зависимости
от множества атрибутов
,
если в любой момент времени существования
базы данных каждому значению
соответствует одно и тоже множество
значений
.
Пример:
Пусть преподаватель преподает дисциплины и у преподавателя есть дети.
-
фамилия
дисциплина
Дети
Иванов
Физика
Иван
Иванов
Физика
Петр
Петров
Физика
Елена
Сидоров
Химия
Василий
Сидоров
Химия
Олег
Сидоров
химия
Мария
Пусть есть многозначная функциональная зависимость детей от фамилии преподавателя. Разобъем данную таблицу на 2:
r2:
-
фамилия
Дисциплина
Иванов
Физика
Петров
Физика
Сидоров
химия
r3:
-
Дисциплина
дети
Физика
Иван
Физика
Петр
физика
Елена
Химия
Василий
Химия
Олег
химия
Мария
Найдем соединение проекций второй и третьей таблиц:
= (фамилия, дисциплина,
дети)
Иванов физика Иван
Иванов Физика Петр
Иванов Физика Елена
Петров Физика Иван
Петров Физика Петр
Петров Физика Елена
Сидоров Химия Василий
Сидоров Химия Олег
Сидоров Химия Мария
Как видно, это разложение с потерями.
Условия разложения без потерь:
q(R1,R2)
R1R2=X
– обозначим общие атрибуты через Х.
Разложение будет без потерь, если в таблицах исходной и конечной выполняется одно из условий:
X
R1\R2
Или
X R2\R1.
Если база данных представлена так, что каждая таблица разложима без потерь, то говорят, что база данных находится в пятой нормальной форме (5Н.Ф.).
Свойство идемпотентности повторных разложений.
r(R)
s(S) r s = q(R,S)
r’=
s’=
q’=r’ s’
r’’=
q’=q’’=...
s’’=
q’’=r’’ s’’
Запись запросов на языке реляционной алгебры.
Получить имена поставщиков, которые поставляют деталь с кодом 2.
Поставщики)
если
код_детали заменить на
,
то в результате мы получим всех
поставщиков, которые поставляю все
детали кроме 2.
Выдать название деталей, которые поставляет поставщик №3.
Детали)
Выдать фамилии поставщиков, поставляющих хотя бы одну красную деталь.
(Поставщики
Детали )) Поставщики]
код_детали=код_детали код-поставщика=код_поставщика
если
цветкрасный,
то в результате получим фамилии
поставщиков, которые поставляют хотя
бы одну не красную деталь.
Найти поставщиков, которые поставляют только не красные детали.
(Поставки)
Детали)) Поставщики]
Найти фамилии поставщиков, которые поставляют все детали, зарегистрированные в базе.
t1=
t2=
t3=
t1(код_деталикод_детали)t2
Чтобы
получить фамилии поставщиков:
(t3
Поставщики )
Получит № поставщиков, которые поставляют теже детали, что и поставщик 3.
t1=
t2=
t3=t1[код_деталикод_детали]t2;
Если не хотите использовать операцию деления, то этот запрос можно записать иначе:
t2)\t1]]