Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Реляционная модель базы данных




Реляционные модели данных в на­стоящее время приобрели наибольшую популярность и практиче­ски все современные СУБД ориентированны именно на такое представление данных.

Таблица рассматривается как непосредственное «хранилище» данных. Традиционно в реляционных системах таблицу называ­ют отношением. Строку таблицы называют кортежем, а столбец – атрибутом.

Отношение содержит две части - заголовок и собственно содержательную часть. Заголовок содержит конечное множество атрибутов, а содержательная часть (тело отношения) – множество пар имени атрибута и его значения.

В реляционных системах поддерживаются несколько видов отношений:

ü Именованное - представляет собой переменное отношение, определяемое в СУБД путем операторов создания и, как правило, необходимое для более удобного представления информации для пользователя.

ü Базовое отношение - являющееся непосредственной важной частью БД, поэтому при проектировании им дают собственное наименование.

ü Производное отношение - то, которое было определено через другие (как правило, базовые) отношения путем использования средств СУБД.

ü Представление - фактически является именованным произ­водным отношением, при этом представление выражается ис­ключительно через операторы СУБД, примененные к именован­ным отношениям, поэтому их физически в БД не существует.

ü Запросы - это неименованное производное отношение, содержащее данные - результат конкретного запроса. Ре­зультат запроса в БД не хранится, а существует только до тех пор, пока он необходим пользователю.

ü Хранимое отношение - то, которое физически поддерживается в памяти компьютера. К хранимым, в большинстве случаев, от­носятся базовые отношения.

Исходя из вышесказанного, можно теперь определить реляционную БД как набор отношений, связанных между собой.

Целостность данных

Целостность данных -  это механизм поддержания соответствия базы данных предметной области. В реляционной модели данных определены два базовых требования обеспечения целостности:

ü целостность сущностей - каждый кортеж любого отношения должен отличатся от любого другого кортежа этого отношения (т.е. любое отношение должно обладать первичным ключом). Очевидно, что если данное требование не соблюдается (т.е. кортежи в рамках одного отношения не уникальны), то в базе данных может хранится противоречивая информация об одном и том же объекте. Поддержание целостности сущностей обеспечивается средствами системы управления базой данных (СУБД). Это осуществляется с помощью двух ограничений:

1. при добавлении записей в таблицу проверяется уникальность их первичных ключей;

2. не позволяется изменение значений атрибутов, входящих в первичный ключ.

ü целостность ссылок (ссылочная целостность).

Наряду с первичными ключами отношения имеют внешние ключи. Если отношение С связывает отношения А и В, то оно должно включать внешние ключи, соответствующие первичным ключам отношений А и В.

Условие ссылочной целостности ставит следующие проблемы проектирования БД:

ü возможно или невозможно появление во внешних ключах неопределенных значений (NULL-значения – значения атрибута для отсутствующей информации);

ü  что произойдет при попытке удаления кортежей из отношения, на который ссылается внешний ключ. При этом существуют следующие возможности:

1. операция каскадируется -  то есть удаление кортежей в отношении приводит к удалению соответствующих кортежей в связанном отношении;

2. операция ограничивается - то есть удаляются лишь те кортежи, для которых связанной информации в другом отношении нет. Если такая информация имеется, то удаление осуществлять нельзя.

ü что произойдет при попытке обновления первичного ключа отношения, на которое ссылается некоторый внешний ключ. При этом существуют следующие возможности:

1. операция каскадируется -  то есть при обновлении первичного ключа происходит обновление внешнего ключа в связанном отношении;

2. операция ограничивается – то есть обновляются лишь те первичные ключи, для которых связанной информации в другом отношении нет. Если таковая информация имеется, то обновление сделать нельзя.

Реляционная алгебра

Формальной основой реляционной модели БД является реляционная алгебра, основанная на теории множеств и рассматривающая специальные операторы над отношениями, и реляционное исчисление, базирующееся на математической логике.

Основных операторов в реляционной алгебре 8. Выражения реляционной алгебры выполняются над отношениями реляционных БД и результаты их вычисления также представляют собой отношения.

На входе каждой такой операции используется одно или несколько отношений, результатом выполнения операции всегда является новое отношение.

В рассмотренных ниже примерах, которые заимствованы из книги Э. Озкарахан «Машины баз данных и управление базами данных» используются следующие отношения:

 

P(D1,D2,D3) Q(D4,D5) R(M,P,Q,T) S(A,B)

 1 11 x              x 1          x 101 5 a       5 a

 2 11 y              x 2          y 105 3 a      10 b

 3 11 z              y 1            z 500 9 a     15 c

 4 12 x                                w 50 1 b       2 d

                                           w 10 2 b        6 a

                                           w 300 4 b       1 b

При выборке на входе используется одно отношение, результат - новое отношение, построенное по той же схеме, содержащее подмножество кортежей исходного отношения, удовлетворяющих условию выборки.

При осуществлении проекции отношения на заданный набор его атрибутов будет получено отношение, кортежи которого взяты из соответствующих кортежей первоначального отношения. Из полученного отношения удаляются повторяющиеся строки.

 

 

При  объединении отношения-операнды должны быть определены по одной схеме. Результирующее отношение содержит все строки операндов за исключением повторяющихся.

 

На входе операции пересечения должны быть два отношения, определенные по одной схеме. На выходе - отношение, содержащие кортежи, которые присутствуют в обоих исходных отношениях.

 

Операция разности во многом похожа на пересечение, за исключением того, что в результирующем отношении содержатся кортежи, присутствующие в первом и отсутствующие во втором исходных отношениях.

 

 

При операции произведения входные отношения могут быть определены по разным схемам. Схема результирующего отношения включает все атрибуты исходных. Кроме того:

1. количество атрибутов результирующего отношения равно сумме степеней исходных отношений;

2. количество кортежей результирующего отношения равно произведению мощностей исходных отношений.

При  соединении двух отношений по некоторому условию образуется результирующее отношение, кортежи которого являются сочетанием кортежей первого и второго отношений, удовлетворяющим этому условию.

 

Операция деления  имеет два операнда – бинарное (состоящее из двух атрибутов) и унарное (содержит один атрибут). Результат операции – отношение, состоящее из кортежей, включающих значения первого атрибута кортежей первого отношения, причем таких, что множество значений второго атрибута совпадает со множеством значений второго отношения.

 

Помимо этого есть ряд особых операций, характерных для работы с БД:

ü переименование, результатом которого получается отношение, набор кортежей которого совпадает с телом первоначального отношения, но имена атрибутов изменены;

ü присваивание – позволяет сохранить результат вычисления реляционного выражения в существующем отношении БД.

На основе реляционной алгебры созданы реляционные языки.

Нормализация базы данных

Нормализация - процесс проверки и реорганизации сущностей и атрибутов с целью удовлетворения требований к реляционной модели данных. Нормализация позволяет быть уверенным, что каждый атрибут определен для своей сущности, значительно сократить объем памяти для хранения информации и устранить аномалии в организации хранения данных. В результате проведения нормализации должна быть создана структура данных, при которой информация о каждом факте хранится только в одном месте. Процесс нормализации сводится к последовательному приведению структуры данных к нормальным формам - формализованным требованиям к организации данных. Известны шесть нормальных форм:

ü первая нормальная форма (1NF);

ü вторая нормальная форма (2NF);

ü третья нормальная форма (3NF);

ü нормальная форма Бойса - Кодда (усиленная 3NF);

ü четвертая нормальная форма (4NF);

ü пятая нормальная форма (5NF).

На практике обычно ограничиваются приведением данных к третьей нормальной форме. Нормальные формы основаны на понятии функциональной зависимости (в дальнейшем «зависимость»).

Функциональная зависимость - Атрибут В сущности Е функционально зависит от атрибута А сущности Е, если в любой момент времени каждому значению В соответствует ровно одно значение А. т. е. А однозначно определяет В.

Полная функциональная зависимость - Атрибут В сущности Е полностью функционально зависит от ряда атрибутов А сущности Е, если В функционально зависит от А и не зависит ни от какого подряда А.

Рассмотрим процесс нормализации на примере сущности Сотрудник:

 

 

 


В сущности Сотрудник значение атрибутов Фамилия, Имя и Отчество однозначно определяются значением атрибута Табельный номер, т. е. атрибуты Фамилия, Имя и Отчество зависят от атрибута Табельный номер. Функциональные зависимости определяются бизнес-правилами предметной области. Так, если оклад сотрудника определяется только должностью, то атрибут Оклад зависит от атрибута Должность; если оклад зависит еще, например, от стажа, то такой зависимости нет. В нижеследующих примерах будем считать для определенности, что такая зависимость есть.

Первая нормальная форма (1NF). Сущность находится в первой нормальной форме тогда и только тогда, когда все атрибуты содержат атомарные значения. Среди атрибутов не должно встречаться повторяющихся групп, т. е. несколько значений для каждого экземпляра.

Атрибуты Телефон и Хобби являются нарушением первой нормальной формы. Что будет, если у сотрудника несколько рабочих телефонов? Запись значения колонки через разделитель, например "124-56-78, 124-56-79, 124-56-90" или "Аквалангист, мотоциклист, шахматист", приводит к ряду проблем. Сущность,

 

 


 

 

не является решением проблемы. Что будет, если у сотрудника появится четвертый телефон или третье хобби? Эту информацию будет негде хранить.

Другой ошибкой нормализации является хранение в одном атрибуте разных по смыслу значений.

Атрибут Дата зачисления или увольнения хранит информацию как о зачислении, так и об увольнении сотрудника. Если хранится только одно значение, то невозможно понять, какая именно дата внесена. Если внести атрибут-признак типа даты, тип можно будет определить, но останется возможность хранения только одной даты для каждого сотрудника.

Для приведения сущности к первой нормальной форме следует:

ü разделить сложные атрибуты на атомарные,

ü создать новую сущность,

ü перенести в нее все «повторяющиеся» атрибуты,

ü выбрать возможный ключ для новой сущности (или создать новый ключ);

ü установить связь от прежней сущности к новой, Первичный ключ прежней сущности станет внешним ключом для новой сущности.

Сущность Сотрудник, приведенная к первой нормальной форме.

 


Вторая нормальная форма (2NF). Сущность находится во второй нормальной форме, если она находится в первой нормальной форме, и каждый неключевой атрибут полностью зависит от первичного ключа (не должно быть зависимости от части ключа). Вторая нормальная форма имеет смысл только для сущностей, имеющих сложный первичный ключ.

Предположим, сущность Проект содержит информацию о проекте, которым руководит сотрудник, причем информация содержится как непосредственно о проекте, так и о руководителе проекта Фамилия, Имя, Отчество и Должность зависят только от атрибута Табельный номер руководителя, но вовсе не от Наименования проекта. Другими словами, имеется зависимость только от части ключа.

 

 


Для приведения сущности ко второй нормальной форме следует:

ü выделить атрибуты, которые зависят только от части первичного ключа, создать новую сущность;

ü поместить атрибуты, зависящие от части ключа, в их собственную (новую) сущность;

ü установить связь от прежней сущности к новой. 

 


Вторая нормальная форма позволяет избежать следующих аномалий при выполнении операций:

Например, при обновлении имеет место дублирование данных о сотруднике, если он руководит несколькими проектами. Если данные о сотруднике изменяются, необходимо менять несколько записей (по числу ведомых проектов).

При вставке невозможно ввести данные о сотруднике, если он в данный момент не руководит проектами.

При удалении, если сотрудник временно прекращает руководство проектами, данные о нем теряются.

Третья нормальная форма (3NF). Сущность находится в третьей нормальной форме, если она находится во второй нормальной форме и никакой неключевой атрибут не зависит от другого неключевого атрибута (не должно быть взаимозависимости между неключевыми атрибутами).

Например,  сущность Сотрудник находится во второй нормальной форме (имеется только один атрибут первичного ключа, поэтому не может быть зависимости неключевых атрибутов от части ключа), но неключевой атрибут Оклад зависит от другого неключевого атрибута - Должности.

Для приведения сущности к третьей нормальной форме следует:

ü создать новую сущность и перенести в нее атрибуты с одной и той же зависимостью от неключевого атрибута;

ü использовать атрибут(ы), определяющий эту зависимость, в качестве первичного ключа новой сущности;

ü установить связь от новой сущности к старой.

 

 

 


В третьей нормальной форме каждый атрибут сущности зависит от ключа, от всего ключа целиком и ни от чего другого, кроме как от ключа. Третья нормальная форма также позволяет избежать ряда аномалий.

Например, При обновлении имеет место дублирование данных об окладе, если должность занимают несколько сотрудников. Если оклад соответствующих должности меняется, необходимо менять несколько записей (по числу сотрудников на одной должности).

При вставке невозможно ввести данные об окладе, соответствующем должности, если в данный момент нет сотрудника, занимающего эту должность.

При удалении в случае удаления из таблицы сотрудника, занимающего уникальную должность, данные об окладе теряются.

BCNF - нормальная форма Бойса-Кодда вводит дополнительное ограничение по сравнению с 3NF. Отношение находится в BCNF, если оно находится 3NF и в ней отсутствуют зависимости атрибутов первичного ключа от неключевых атрибутов.

Ситуация, когда отношение будет находится в 3NF, но не в BCNF, возникает при условии, что отношение имеет два (или более) возможных ключа, которые являются составными и имеют общий атрибут. На практике такая ситуация встречается достаточно редко, для всех прочих отношений 3NF и BCNF эквивалентны.

Четвертая нормальная форма (4NF) требует отсутствия многозначных зависимостей между атрибутами.

Например, преподаватель читает лекции по нескольким предметам и курирует несколько групп студентов. Одна группа студентов может изучать несколько предметов, одному предмету могут обучаться несколько групп студентов. Имеется многозначная зависимость между атрибутами Предмет и Группа. При этом возможна аномалия: если у преподавателя появляется новая группа, приходится добавлять несколько записей, по числу читаемых предметов.

Для приведения сущности к четвертой нормальной форме следует создать новую сущность и перенести атрибуты с многозначной зависимостью в разные сущности. Связь между новыми сущностями при этом устанавливать нельзя, поскольку в результате миграции атрибутов внешних ключей атрибуты с многозначной зависимостью вновь окажутся в одной сущности. Целостность в этом случае следует поддерживать при помощи триггеров.
















Последнее изменение этой страницы: 2018-04-12; просмотров: 468.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...