Лекция №10
Название лекции: Проектирование баз данных.
План:
1. Введение в теорию проектирования БД.
2. Функциональные зависимости. Основные зависимости:
2.1. Функциональные зависимости первого типа;
2.2. Функциональные зависимости второго типа.
1. Введение в теорию проектирования БД.
- Под проектированием будем понимать, прежде всего, проектирование логической схемы, т.е. схемы концептуального уровня. Чаще всего процесс проектирования состоит из нескольких циклов: - логическое проектирование; - физическая реализация; - исправление ошибок – изменение представлений и логического проектирования. Под проектированием будем понимать построение первоначального проекта схемы концептуального уровня.
- Несмотря на то, что имеется теория проектирования только для реляционной модели, есть средства перехода от реляционной к любой другой модели и наоборот, т.о. теория проектирования может использоваться в любой модели.
- Теория проектирования в полном объеме недостаточно формализована, т.о. процесс проектирования в большой степени является все-таки искусством.
- Проектирование БД – это не единственное условие получения правильной структуры организации данных. Второе условие – это условие описания и проверки целостности БД.
- При проектировании БД интерес представления организации данных, а не приложения, т.е. то, как эти данные используются не интересно. Критерием правильного проекта является то, что схема БД остается стабильной и работоспособной при возникновении новых требований в приложениях к данным.
- Задача логического проектирования – фактически сводится к тому, чтобы решить какие базовые отношения и с какими атрибутами следует использовать в проекте.
2. Функциональные зависимости.
Определение функциональных зависимостей даётся в двух видах:
1) Для значения элементов отношений в некотором времени.
2) Для всевозможных значений элементов отношения.
Определение функциональных зависимостей первого типа: Пусть R — отношение. X и Y некоторые подмножество множества его атрибутов. Тогда Y функционально зависимо от Х. Тогда и только тогда, когда каждому элементу множества Х соответствует один и только один элемент множества Y. Функциональную зависимость записывают так: X®Y. Иначе: Y функционально зависит от X, если два кортежа отношения R совпадают по множеству атрибутов Х, то они совпадают по множеству атрибутов Y.
Пример: Рассмотрим отношение R1 с множеством атрибутов
A={Поставщик, Город, Товар, Количество}
Поставщик | Город | Товар | Кол-во |
Москва | |||
Москва | |||
Саратов | |||
Саратов | |||
Таганрог | |||
Ростов | |||
Ростов | |||
Ростов |
Выпишем ФЗ, которые существуют в R1 (при этих значениях)
поставщик→город
(поставщик, товар)→количество
(поставщик, товар)→город
(поставщик, товар)→(город, количество)
(поставщик, товар)→поставщик
(поставщик, товар)→(поставщик, товар, город, количество)
(поставщик)→количество
(количество)→поставщик
В ФЗ левая часть называется детерминантом, а правая – зависимой частью.
Интерес представляют функциональные зависимости второго типа определение, которых справедливо не только для некоторого значения переменной отношения, но остается справедливым и для любого значения переменной отношения.
Предположим, что ФЗ поставщик→город справедлива для любого значения переменной отношения R1, т.е. справедлива в любой момент времени. Фактически это является ограничением целостности БД. В жизни этому соответствует то, что никакая компания не имеет филиалов.
Определения функциональных зависимостей второго типа: Пусть R – является переменной отношения, а X и Y являются произвольными подмножествами множества атрибутов отношения R. Говорят, что Y функционально зависит от X тогда и только тогда, когда для любого допустимого значения отношения R каждому значению атрибутов, имена которых находятся во множестве X, соответствует одно и только одно значение атрибутов, имена которых находятся во множестве Y. Иначе: для любого допустимого значения отношения R, если два кортежа отношения R совпадают по значению атрибутов, имена которых находятся во множестве X, то они совпадают по значениям атрибутов, имена которых находятся во множестве Y.
Пример: поставщик ® город . Это означает, в предметной области есть ограничение «поставщики не имеют филиалов». Если два кортежа совпадают по коду поставщика, то эти кортежи обязательно совпадут по городу, в котором расположен поставщик.
Наличие функциональной зависимости определяется внешней моделью предметной области.
Например, если дополнительно предположить, что поставщик не может дважды поставить один и тот же товар, то функциональные зависимости будут таковыми:
(поставщик, товар)→количество;
(поставщик, товар)→(город, количество);
(поставщик, товар)→поставщик;
(поставщик, товар)→(поставщик, товар, город, количество);
поставщик→город;
Очевидно, что для любого значения отношения не выполняются: поставщик→количество; количество→поставщик. По определению 2 они не является ФЗ, но выполняются в примере функциональных зависимостей первого типа.