Автор: Пользователь скрыл имя, 18 Ноября 2012 в 14:40, лекция
Лекции с глоссарием по базам данным
Каждое отношение храниться в отдельном файле. Структура файла, хранящего отношение проста, то есть все записи имеют одинаковый формат.
Первичный ключ - это атрибут или набор атрибутов, значение которых однозначно указывают на конкретный кортеж отношения. Первичный ключ должен быть минимальным набором атрибутов.
Число отношений в БД и конкретные атрибуты, приписываемые каждому отношению определяются в процессе проектирования БД, который может быть довольно продолжительным. После проектирования создание БД средствами СУБД может пойти достаточно быстро.
В таблице 6.6 описаны типы данных для атрибутов БД “Поставщики и детали”.
Таблица 6.6 Типы Атрибутов. | |
Название атрибута |
Тип атрибута |
Пном |
Числовой (3) |
Пназ |
Символьный(16) |
Гор |
Символьный(15) |
Дназ |
Символьный(10) |
Штук |
Числовой (5) |
Дном |
Числовой (5) |
Отношения с указанными первичными ключами для данной БД:
Поставщик |
(Пном, Пназ, Гор) |
Деталь |
(Дном, Дназ) |
Поставщик-Деталь |
(Пном, Дном, Штук) |
Результатом проектирования является концептуальная модель БД.
Наиболее важными целями проектирования являются:
Первым шагом в процессе проектирования является определение перечня атрибутов (столбцов), которые должны храниться в БД.
На втором шаге принимается решение о том, сколько будет отношений и какие атрибуты будут храниться в каких отношениях.
Необходимо различать
Таблица 6.7 Пример дублирования данных. | ||
Табельный номер |
Номер лаборатории |
|
287 |
12 | |
314 |
17 | |
07 |
12 | |
354 |
17 |
Таблица 6.8 Пример избыточного дублирования данных. | |||
Табельный номер |
Номер лаборатории |
Телефон лаборатории |
В таблице 6.8 телефон лаборатории, как видно, дублируется, и это уже избыточное дублирование. |
287 |
12 |
2-17 | |
314 |
17 |
4-41 | |
007 |
12 |
||
354 |
17 |
Третий шаг – устранение избыточности. Полученный файл после устранения избыточности следует считать неудовлетворительным. Во-первых, пустых полей в файле следует избегать, в такой структуре хранения для записей необходимо иметь процедуру поиска. Во-вторых, могут возникнуть серьезные проблемы с удалением информации. Если удалить работника 287, то исчезнет и соответствующий номер лаборатории.
Лучший способ устранения – разбиение отношения
“Служащий – лаборатория – телефон” (таблица 6.8) на два:
“Лаборатория – телефон” (таблица 6.9)
“Служащий – лаборатория” (таблица 6.10)
Таблица 6.9 “Лаборатория-телефон”. |
Таблица 6.10 “Служащий-лаборатория”. | ||||
Номер лаборатории |
Телефон лаборатории |
Табельный номер |
Номер лаборатории | ||
12 |
2-17 |
287 |
12 | ||
17 |
4-41 |
314 |
17 | ||
007 |
12 | ||||
354 |
17 |
Разбиение отношений на два или несколько – рабочая процедура проектирования.
Разбиение отношения на два или более приводит к увеличению числа файлов, хранящихся в БД, что порождает проблемы по обработке данных, в данном случае – замедление.
Некоторые отношения порождают серьезные проблемы по удалению и обновлению информации. Проектировщик БД должен уметь находить такие отношения и “нормализовать” их. Нормализация осуществляется путем разбиения отношения на два или более мелких отношения по определенным правилам.
Отношение, которое включает в себя все атрибуты и содержащее все данные, предполагаемые хранить в БД, называется универсальным отношением.
Для небольших БД универсальное отношение может использоваться в качестве основного пункта при проектировании БД.
Предположим, что требуется разработать БД для начальника отдела.
Первый шаг проектирования – состоит в определении всех атрибутов, значения которых требуется хранить в БД. Эта информация берется у начальника отдела в процессе обсуждения будущей БД. В результате обсуждения выяснилось, что БД предназначена для подведения результатов работы каждого сотрудника отдела. Определился следующий набор атрибутов:
Сном |
номер сотрудника (целое значение, уникальное), |
Сфам |
фамилия сотрудника (строковое значение), |
Лном |
номер лаборатории, в которой трудится данный сотрудник, |
Тном |
рабочий телефон сотрудника, |
Проект |
номер проекта, в разработке которого участвует сотрудник, |
Квартал |
период времени, в течение которого сотрудник участвовал в разработке проекта, |
Вклад |
численная характеристика, отражающая количество и качество работы с сотрудника в данном проекте и в данном квартале. |
Второй шаг – составление таблицы по предварительно записанному набору атрибутов.
Таблица 6.11 Информация выбранная для хранения в базе данных | |||||||
Сном |
Сфам |
Тном |
Лном |
Проект |
Квартал |
Вклад | |
289 |
Иванов |
5-17 |
25АП |
РКТ14 |
1990.3 |
3 | |
Зенит |
1990.3 |
5 | |||||
ВКТ14 |
1990.4 |
2 | |||||
ВТА2 |
1990.4 |
4 | |||||
315 |
Николаев |
8-29 |
4КТ |
ВКТ14 |
1990.3 |
6 | |
ВТА8 |
1990.4 |
7 | |||||
ВКТ14 |
1990.4 |
8 | |||||
429 |
Андреев |
5-17 |
25АМ |
Зенит |
1990.3 |
2 | |
ОТР6 |
1990.4 |
7 | |||||
ВКТ14 |
1990.4 |
4 | |||||
559 |
Зайцев |
4-85 |
14ММ |
ОВ77 |
1990.3 |
6 |
Хотя данные связаны в таблицу 6.11, она не может быть использована в реляционных базах данных, т.к. строки её содержат вектора значений атрибутов, что недопустимо для отношений. Такую таблицу, однако, очень легко преобразовать в отношение путем декомпозиции.
Таблица 6.12 Универсальное отношение базы данных “Начальник отдела” | |||||||
Сном |
Сфам |
Тном |
Лном |
Проект |
Квартал |
Вклад | |
289 |
Иванов |
5-17 |
25АП |
РКТ14 |
1990.3 |
3 | |
289 |
Иванов |
5-17 |
25АП |
Зенит |
1990.3 |
5 | |
289 |
Иванов |
5-17 |
25АП |
ВКТ14 |
1990.4 |
2 | |
289 |
Иванов |
5-17 |
25АП |
ВТА2 |
1990.4 |
4 | |
315 |
Николаев |
8-29 |
4КТ |
ВКТ14 |
1990.3 |
6 | |
315 |
Николаев |
8-29 |
4КТ |
ВТА8 |
1990.4 |
7 | |
315 |
Николаев |
8-29 |
4КТ |
ВКТ14 |
1990.4 |
8 | |
429 |
Андреев |
5-17 |
25АП |
Зенит |
1990.3 |
2 | |
429 |
Андреев |
5-17 |
25АП |
ОТР6 |
1990.4 |
7 | |
429 |
Андреев |
5-17 |
25АП |
ВКТ14 |
1990.4 |
4 | |
559 |
Зайцев |
4-85 |
14ММ |
ОВ77 |
1990.3 |
6 |
В таблице 6.12 первичным ключом является значение трех полей Сном-Проект-Квартал. Полученная таблица – экземпляр правильного отношения.
На первый взгляд, полученное универсальное отношение можно использовать в качестве единственного отношения проектируемой БД. Существует несколько причин, по которым не следует данное отношение использовать в качестве единственного. Различают три проблемы, связанные с использованием отношений и с выполнением определенных операций.
Если в отделе появляется новый сотрудник, то информацию о нем необходимо внести в БД. При этом значение атрибутов Проект, Квартал будут пустыми, а Вклад фактически равен нулю.
684 |
Сорокин |
5-17 |
25AP |
- |
- |
0 |
Как отмечалось ранее, пустых значений следует всячески избегать. Предположим, что в отношение включена новая запись о сотруднике Сорокине с пустыми полями и делается следующий запрос: “Напечатать список номеров и фамилий сотрудников, вклад которых не более 2”. В результате мы получим так называемый «черный список», в который попал и только что принятый на работу Сорокин.
289 |
Иванов |
429 |
Андреев |
687 |
Сорокин |
В данном случае на простой вопрос мы получаем неверный ответ. Следовательно в нашей базе данных есть аномалии.
В данном отношении большое количество
избыточных данных, что чревато тем,
что при исправлении данных исправлению
подвергнется только одна часть данных.
Рассматриваемое отношение
Явная избыточность: фамилия сотрудника, телефон лаборатории, номер лаборатории могут появляться в отношении многократно. Если какой-либо сотрудник, на пример Иванов, перейдет на работу в другую лабораторию, соответствующие изменения необходимо сделать во всех записях, где хранится информация о данном сотруднике.
Неявная избыточность это (для нашего примера) когда один номер телефона имеют несколько сотрудников лаборатории. Например, номер 5-17 появляется в записях с фамилиями Иванов и Андреев.
Предположим возникает следующая ситуация: Начальник отдела встречает Иванова и спрашивает его – “Вы были вчера на вашем рабочем месте? Я весь день вам звонил и никто не брал трубку”. А Иванов ему отвечает “Отдел связи сменил вчера номер на 9-17”. Начальник отдела приходит к себе в кабинет и меняет во всех записях телефон Иванова на 9-17. Через некоторое время ему необходимо позвонить в лабораторию 25-AP, а телефон он не помнит, он составляет запрос вывести все не повторяющиеся записи со значением поля Лном равным 25-AP.
Ответ: 9-17 и 5-17. По какому телефону звонить если заранее известно, что в каждой лаборатории только один телефон.
Предположим, что финансирование проекта 0В77 прекратилось и начальник удаляет все соответствующие записи. Так как в рассматриваемом отношении имеется только один кортеж с номером сотрудника 559 (это сотрудник Зайцев), который выполнял работу только по проекту 0В77, то произойдет удаление записи о сотруднике Зайцеве. Фактически мы теряем всю информацию о данном сотруднике. Рассмотренная проблема также является аномалией.
Таким образом, можно сказать, что
универсальные отношения
Пусть А и В набор атрибутов. Говорят, что В функционально зависит от А, если для каждого значения А существует только одно связанное с ним значение В.
|
Для конкретного отношения