- Функциональные зависимости между атрибутами.
- Приведение таблицы к требуемому уровню нормальности: первый, второй и третий уровни. Обеспечение непротиворечивости и целостности данных
Реляционная БД представляет собой множество таблиц, связанных между собой. Одни и те же данные могут группироваться в таблицы различными способами. Но группировка должна быть рациональной, т,е. минимизирующей дублирование данных и упрощающей процедуры их обработки и обновления.
В теории реляционных БД таблица называется отношением По-английски relation – отношение. Отсюда происходит название «реляционные базы данных».. Поэтому ИМЯ_ТАБЛИЦЫ — это имя отношения. Примеры отношений: БИБЛИОТЕКА (ИНВ_НОМЕР. АВТОР. НАЗВАНИЕ. ГОД_ИЗД, ИЗДАТЕЛЬСТВО)
Построение модели данных, соответствующей инфологической модели, происходит в несколько этапов. Построим БД «Успеваемость». На первом этапе построим БД, содержащую сведения об успеваемости учеников в одном отдельном классе. Нас интересуют оценки, полученные учениками по итогам каждой четверти, а также годовые оценки по всем учебным дисциплинам. Т.е. в БД требуется занести табели успеваемости всех учеников класса за весь учебный год. Кроме того, в БД необходимо хранить даты рождения и домашние адреса учеников и пол каждого ученика.
|
|
Отношение(таблица), включающее в себя все перечисленные данные будет следующим:
УСПЕВАЕМОСТЬ (ФАМИЛИЯ, ИМЯ, ПРЕДМЕТ, ПОЛ, ДАТА_ РОЖД, АДРЕС, 1_ЧЕТВ, 2_ЧЕТВ, 3_ЧЕТВ, 4 _ЧЕТВ, ГОД)
В этом отношении ключ состоит из: ФАМИЛИЯ ИМЯ, ПРЕДМЕТ. Такой ключ называется составным.
Очевидным недостатком хранения данных в таком виде является их избыточность. Под избыточностью понимается многократное повторение одних и тех же данных.
Значении полей ФАМИЛИЯ. ИМЯ. ПОД ДАТА_РОЖД. АДРЕС каждого ученика будут повторяться в записях, относящихся к разным предметам Это ведет к лишнему расходу памяти компьютера (избыточности данных). Кроме того, существует вероятность того, что при вводе значений повторяющихся полей в каких-то строчках могут быть допущены ошибки. Например, по-разному записан один и тот же адрес в нескольких местах. Такая ситуация называется противоречивостью данных: одни и те же данные представлены в разном виде.
Разрешением этих проблем является разбиение данного отношения на два. т.е. переход от однотаблнчной модели к двухтабличной. Первую таблицу назовем «Ученики». В ней будут храниться фамилия и имя. ученика, пол и адрес Каждому ученику в этом списке ставится в соответствие свой номер (номер в журнале). Он и будет выполнять функцию ключа.
Вторую таблицу назовем «Успеваемость» В ней учеников можно будет идентифицировать их номерами, определенными в первой таблице. Замена фамилии и имени ученика на номер существенно сократят расход памяти. В таблицу «Успеваемость» включается поле ПРЕДМЕТ и сведения о полученных оценках.
|
|
Поля НОМЕР УЧЕНИКА и ПРЕДМЕТ образуют составной ключ. В итоге модель данных представляется двумя следующими отношениями:
УЧЕНИКИ (НОМЕР УЧ. ФАМИЛИЯ, ИМЯ, ПОЛ ДАТА_ РОЖД, АДРЕС)
УСПЕВАЕМОСТЬ (НОМЕР_УЧ, ПРЕДМЕТ, 1_ЧЕТВ, 2_ЧЕТВ, 3_ЧЕТВ, 4_ЧЕТВ, ГОД)
Связь между этими отношениями имеет тип «один-ко-многим». Она осуществляется через общее поле НОМЕР_УЧ (номер ученика). В таблице «Ученики» это поле является основным ключом. В таблице «Успеваемость» оно входит в составной ключ. Следовательно, конкретное значение этого поля в первой таблице может присутствовать только в одной записи, а во второй — во множестве записей Процесс разложения исходных таблиц на более простые называется нормализацией.
При описании нормальных форм используется понятие функциональной зависимости между атрибутами (столбцами).
Функциональная зависимость между атрибутами А и В называется зависимость, когда каждому значению А в любой момент времени соответствует единственное значение В. Примером такой зависимости является связь между идентификационным номером плательщика и номером его паспорта.
Полной функциональной зависимостью называется зависимость, при которой каждый неключевой атрибут зависит от всего составного ключа и не зависит от его частей.
Транзитивная функциональная зависимость – зависимость когда атрибут А зависит от атрибута В, а атрибут В зависит от атрибута С, но обратная зависимость при этом отсутствует.
Ранее выполненная нами работа называется нормализацией данных. Полученная двухтабличная структура данных является нормализованной структурой. Основная цель нормализации — избавление от избыточности данных. В идеале неизбыточная БД должна хранить каждый факт в одном экземпляре. Для каждого ученика его атрибуты: «фамилия», «имя», «пол», «дата рождения», «адрес» будут заноситься в базу однократно. Если значения каких-то атрибутов изменятся, то их легко исправить. Например, если изменился адрес ученика, то в первом варианте структуры данных его бы пришлось переписывать многократно. В окончательном же варианте это нужно будет сделать один раз.
Сущность нормализации заключается в том, что при построении модели данных, относящейся к определенной предметной области, нужно суметь выделить различные типы объектов (сущностей), которые должны быть представлены в этой модели. В нашем примере такими объектами являются УЧЕНИКИ с их анкетными данными и УСПЕВАЕМОСТЬ (итоги обучения), со сведениями о полученных учениками оценках по разным предметам. Информация об учениках собрана в таблице «Ученики», информация об итогах обучения — в таблице «Успеваемость».
В теории реляционных БД используется понятие «нормальная форма» отношения.
Отношение (таблица) находится в первой нормальной форме, если все его поля являются атомарными. Атомарное поле далее не делится. Например, объединение в одно поле «ФИО» фамилии, имени в отчества человека нарушает принцип атомарности. Понятие атомарности относительно. Например, если в приложениях не потребуется отдельной обработки названия улицы, номера дома и квартиры, то адрес можно не разбивать на составляющие и считать его атомарным. Эта форма является основой реляционной модели данных.
Отношение (таблица) находится во второй нормальной форме, если она удовлетворяет требованиям первой нормальной формы и все его неключевые поля полностью функционально зависят от основного (первичного) ключа. Иначе говоря, значение неключевого поля в каждой записи однозначно связано со значением ключа этой записи. Отношения УЧЕНИКИ и УСПЕВАЕМОСТЬ обладают таким свойством. У данного ученика (ключ НОМЕР_УЧ) определенный адрес, фамилия, дата рождения и пр. У данного ученика по данному предмету (ключ НОМЕР_УЧ+ ПРЕДМЕТ) определенные оценки за четверти и за год. Если таблица имеет первичный ключ, состоящий из одного поля, она автоматически находится во второй нормальной форме.
|
|
Требование третьей нормальной формы: удовлетворение второй нормальной форме и отсутствие в отношении полей, транзитивно зависимых от ключа. В полученных нами отношениях (таблицах) транзитивных зависимостей нет. Например, если бы в отношении «Ученик» присутствовало поле РАЙОН, обозначающее административный район города, где живет ученик, то имела бы место транзитивная зависимость. Район однозначно связан с адресом, поэтому транзитивность следующая:
НОМЕР_УЧ--»АДРЕС --» РАЙОН
Таким образом, полученная нами двухтабличная модель данных удовлетворяет требованию третьей нормальной формы.