- •Е.И. Асташева сетевые базы данных
- •Введение
- •1. Введение в базы данных
- •1.1. Что такое база данных
- •1.2. Структура базы данных
- •2. Иерархическая и сетевая модели организации данных
- •3. Реляционная модель базы данных
- •3.1. Домены и отношения
- •3.2. Целостность данных
- •3.3. Реляционная алгебра
- •3.4. Реляционное исчисление
- •4. Проектирование логической структуры базы данных
- •4.1. Концепция функциональной зависимости
- •4.2. Нормализация базы данных
- •4.3. Объектное моделирование
- •5. Функции защиты базы данных
- •5.1. Транзакции и параллелизм
- •5.2. Безопасность и целостность баз данных
- •6. Дополнительные аспекты реляционной технологии
- •6.1. Представления
- •6.2. Повышение производительности с помощью оптимизации
- •6.3. Домены, отношения и типы данных
- •6.4. Неопределенные значения и трехзначная логика
- •6.5. Распределенные базы данных
- •7. Технология физического хранения и доступа к данным
- •7.1. Основные этапы доступа к базе данных
- •7.2. Управление страницами
- •7.3. Процедура индексирования и хеширования
- •7.4. Сжатие данных
- •Заключение
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
4. Проектирование логической структуры базы данных
4.1. Концепция функциональной зависимости
Рассмотрим концепцию функциональной зависимости, которая, по сути, является связью типа "многие к одному" между множествами атрибутов внутри отношения. Для примера рассмотрим БД структуры, приведенной на рис. 4.1.
S (Студенты) |
|||
SN |
NAME |
GROUP |
SPEC |
|
|||
P (Предметы) |
|||
PN |
PNAME |
TEACHER |
KAFEDRA |
|
|||
SP (Оценки) |
|||
PN |
NAME |
SN |
OCENKA |
Рис. 4.1. Структура БД
Здесь отношение S (студенты) - имеет четыре атрибута: SN - номер студенческого билета; NAME - фамилия, имя, отчество студента; GROUP - студенческая группа; SPEC - наименование специальности.
Отношение Р (предметы) имеет четыре атрибута: PN - код предмета; PNAME - наименование предмета; TEACHER - фамилия, имя, отчество преподавателя; KAFEDRA - наименование кафедры, на которой читается данный предмет.
Отношение SP (оценки) состоит из четырех атрибутов: PN - код предмета; NAME - фамилия, имя, отчество студента; SN - номер студенческого билета; OCENKA - оценка по предмету.
Тогда можно говорить о том, что имеется функциональная зависимость между множеством атрибутов {SN, PN} и {OCENKA}, то есть множеству пар кортежей номеров студенческих билетов и кодов предметов соответствует одно значение оценки студента по предмету.
Необходимо заметить тот факт, что следует четко различать значения того или иного отношения и набор всех возможных значений, которые данное отношение может принимать в тот или иной момент времени.
Для первого случая рассмотрим определение функциональной зависимости. Если R - некоторое отношение, а X и Y - некоторые подмножества множества атрибутов отношения R, то Y функционально зависимо от X при условии, что каждое значение множества X отношения R связано с одним значением множества Y отношения R. Это записывается в следующем виде:
X —> Y
Например, в отношении SP все кортежи удовлетворяют условию {SN, PN} —> SP.
При рассмотрении второго случая надо заметить, что интерес представляют не столько функциональные зависимости для определенного в данный момент значения, а функциональные зависимости, имеющие место для всех возможных значений данной переменной. В нашем случае зависимость PN —> NAME выполняется для всех возможных значений SP.
Таким образом, если R является переменной отношения, а X и Y - некоторые подмножества множества атрибутов отношения R, то Y функционально зависимо от X при условии, что для любого допустимого значения R каждое значение X связано с одним значением множества Y.
Кроме того, если X является потенциальным ключом отношения R, то все атрибуты Y отношения R должны быть функционально зависимы от X. Например:
PN —> {PN, NAME, SN,OCENKA}
Если же отношение R удовлетворяет функциональной зависимости X —> Y, но X не является потенциальным ключом, то можно говорить об избыточности R. Так в отношении PN сведения о фамилии студента повторяются каждый раз при вводе оценки.
Принципиально, некоторые функциональные зависимости могут означать существование других функциональных зависимостей. Например
Зависимость {SN, PN} —> SP означает и
Зависимости {SN, PN} —> NAME и {SN, PN} —> OCENKA.
В более сложном случае, если имеется отношение R с тремя атрибутами X, Y, Z, то при условии выполнения функциональный зависимостей X < Y и Y < Z, очевидно, имеет место зависимость X —> Z. При этом набор всех функциональных зависимостей, которые определены данным множеством функциональных зависимостей, принято называть замыканием.
Таким образом, изложенные выше понятия и определения позволяют перейти к вопросам нормализации БД.