Лекция №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 они не является ФЗ, но выполняются в примере функциональных зависимостей первого типа.