ustu167 (1013999), страница 7
Текст из файла (страница 7)
Такие претенденты называютсяпотенциальными ключами (candidate key).Ключи могут быть сложными, т.е. содержащими несколько атрибутов. Сложные первичныеключи не требуют специального обозначения – это список атрибутов выше горизонтальной линии.Для того, чтобы стать первичным, потенциальные ключ должен удовлетворять ряду требований:Уникальность. Два экземпляра не должны иметь одинаковых значений возможного ключа.Компактность. Сложный возможный ключ не должен содержать ни одного атрибута, удалениекоторого не приводило бы к утрате уникальности.При выборе первичного ключа предпочтение должно отдаваться более простым ключам, т.е.ключам, содержащим меньшее количество атрибутов.Атрибуты ключа не должны содержать нулевых значений.
Если для обеспечения уникальностинеобходимо дополнить потенциальный ключ дополнительными атрибутами, то они не должнысодержать нулевых значений.Значение атрибутов ключа не должно меняться в течение всего времени существованияэкземпляра сущности.Каждая сущность должна иметь, по крайней мере, один потенциальный ключ. Многие сущностиимеют только один потенциальный ключ. Такой ключ становится первичным. Некоторыесущности могут иметь более одного возможного ключа.
Тогда один из них становится первичным,а остальные альтернативными ключами. Альтернативный ключ (Alternate Key) – этопотенциальный ключ, не ставший первичным. ERwin позволяет выделить атрибутыальтернативных ключей, и по умолчанию в дальнейшем при генерации схемы БД по этиматрибутам будет генерироваться уникальный индекс.При работе ИС часто бывает необходимо обеспечить доступ к нескольким экземплярам сущности,объединенных каким-либо одним признаком. Для повышения производительности в этом случаеиспользуются неуникальные индексы.
ERwin позволяет на уровне логической модели назначитьатрибуты, которые будут участвовать в неуникальных индексах. Атрибуты, участвующие внеуникальных индексах, называются Inversion Entries (инверсионные входы). Inversion Entry –это атрибут или группа атрибутов, которые не определяют экземпляр сущности уникальнымобразом, но часто используются для обращения к экземплярам сущности. ERwin генерируетнеуникальный индекс для каждого Inversion Entry.Создать альтернативные ключи и инверсионные входы можно в закладке Key Group диалогаAttribute Editor. Если щелкнуть по кнопке со знаком (…), расположенной в правой верхней частизакладки, вызывается диалог Key Group Editor. В верхней части диалога находится списокключей, в нижней – список атрибутов, доступных для включения в состав ключа (слева), и списокключевых атрибутов. Каждый вновь созданный ключ должен иметь хотя бы один атрибут. Длявключения атрибута в состав ключа следует выделить его в левом списке и щелкнуть по кнопке сострелкой.Для создания нового ключа следует щелкнуть по кнопке New….
Появляется диалог New KeyGroup. Имя нового ключа присваивается автоматически (“Alternate Key N” для альтернативногоключа и “Inversion Entry N” для инверсионного входа, где N – порядковый номер ключа).Каждому ключу соответствует индекс, имя которого также присваивается автоматически(“XAKNENTITY” для альтернативного ключа и “XIENENTITY” для инверсионного входа, где N– порядковый номер ключа, ENTITY – имя сущности). Имена ключа и индекса при желанииможно изменить вручную (рис.48).Рис.48.На диаграмме (Рис. №) атрибуты альтернативных ключей обозначаются как (FK).
Когдаальтернативный ключ содержит несколько атрибутов, (AKn.m) ставится после каждого. На Рис.Атрибуты nom_schot – основной ключ и входит в альтернативный ключ 1, id_operation альтернативный ключ №1 и внешний ключ, id_client - внешний ключ №2. Если один атрибутвходит в состав нескольких ключей, ключи перечисляются в скобках через запятую (атрибутid_operation входит в состав АК1 и FK1). По умолчанию номера альтернативных ключей рядом сименем атрибута на диаграмме не показываются.
Для отображения номера следует в контекстномменю, которое появляется, если щелкнуть правой кнопкой мыши по любому месту диаграммы, незанятому объектами модели, выбрать пункт контекстного меню Entity Display и затем включитьопцию Alternate Key Designator (AK).Внешние ключи (Foreign Key) создаются автоматически, когда связь соединяет сущности: связьобразует ссылку на атрибуты первичного ключа в дочерней сущности, и эти атрибуты образуютвнешний ключ в дочерней сущности (миграция ключа).
Атрибуты внешнего ключа обозначаютсясимволом (FK) после своего имени.Зависимая сущность может иметь один и тот же внешний ключ из нескольких родительскихсущностей. Сущность может также получить один и тот же внешний ключ несколько раз отодного и того же родителя через несколько разных связей. Когда ERwin обнаруживает одно изэтих событий, он распознает, что два атрибута одинаковы, и помещает атрибут внешнего ключа взависимой сущности только один раз. Хотя в закладке Key Group диалога Attribute этот атрибутбудет входить в два внешних ключа, на диаграмме он показывается только один раз. Этокомбинирование или объединение идентичных атрибутов называется унификацией.Унификация производится, поскольку правила нормализации запрещают существование в однойсущности двух атрибутов с одинаковыми именами.Когда унификация нежелательна (например, когда два атрибута имеют одинаковые имена, но насамом деле они отличаются по смыслу и необходимо, чтобы это отличие отражалось в диаграмме),нужно использовать имена ролей атрибутов внешнего ключа.Нормализация данныхНормализация – процесс проверки и реорганизации сущностей и атрибутов с цельюудовлетворения требований к реляционной модели данных.
Нормализация позволяет бытьуверенным, что каждый атрибут определен для своей сущности, значительно сократить объемпамяти для хранения информации и устранить аномалии в организации хранения данных. Врезультате проведения нормализации должна быть создана структура данных, при которойинформация о каждом факте хранится только в одном месте. Процесс нормализации сводится кпоследовательному приведению структуры данных к нормальным формам – формализованнымтребованиям к организации данных [1]. Известны шесть нормальных форм:* первая нормальная форма (1NF);* вторая нормальная форма (2NF);* третья нормальная форма (3NF);* нормальная форма Бойса-Кодда (усиленная 3NF);* четвертая нормальная форма (4NF);* пятая нормальная форма (5NF).На практике обычно ограничиваются приведением данных к третьей нормальной форме (полнаяатрибутивная модель, FA).Нормальные формы основаны на понятии функциональной зависимости (в дальнейшем будетиспользоваться термин «зависимость»).Функциональная зависимость (FD).
Атрибут В сущности Е функционально зависит от атрибутаА сущности Е тогда и только тогда, когда каждое значение А и Е связало с ним точно однозначение В и Е, т.е. А однозначно определяет В.Полная функциональная зависимость. Атрибут В сущности Е полностью функциональнозависит от ряда атрибутов А сущности Е тогда и только тогда, когда В функционально зависит отА и не зависит ни от какого подряда А. Функциональные зависимости определяются бизнесправилами предметной области.Первая нормальная форма (1NF). Сущность находится в первой нормальной форме тогда итолько тогда, когда все атрибуты содержат атомарные значения.
Среди атрибутов не должновстречаться повторяющихся групп, т.е. несколько значений для каждого экземпляра. Другойошибкой нормализации является хранение в одном атрибуте разных по смыслу значений.Для приведения сущности к первой нормальной форме следует:* разделить сложные атрибуты на атомарные;* создать новую сущность;* перенести в нее все «повторяющиеся» атрибуты;* выбрать возможный ключ для нового РК (или создать новый РК);* установить идентифицирующую связь от прежней сущности к новой, РК прежней сущностистанет внешним ключом (FK) для новой сущности.Вторая нормальная форма (2NF). Сущность находится во второй нормальной форме, если онанаходится в первой нормальной форме, и каждый неключевой атрибут полностью зависит отпервичного ключа (не должно быть зависимости от части ключа).
Вторая нормальная форма имеетсмысл только для сущностей, имеющих сложный первичный ключ.Для приведения сущности ко второй нормальной форме следует:* выделить атрибуты, которые зависят только от части первичного ключа, создать новуюсущность;* поместить атрибуты, зависящие от части ключа, в их собственную (новую) сущность;* установить идентифицирующую связь от прежней сущности к новой.Третья нормальная форма (3NF). Сущность находится в третьей нормальной форме, если онанаходится во второй нормальной форме и никакой неключевой атрибут не зависит от другогонеключевого атрибута (не должно быть взаимозависимости между неключевыми атрибутами).Для приведения сущности к третьей нормальной форме следует:* создать новую сущность и перенести в нее атрибуты с одной и той же зависимостью отнеключевого атрибута;* использовать атрибут(ы), определяющий эту зависимость, в качестве первичного ключа новойсущности;* установить неидентифицирующую связь от новой сущности к старой.В третьей нормальной форме каждый атрибут сущности зависит от ключа, от всего ключацеликом и ни от чего другого, кроме как от ключа.ДоменыДомены можно определить как совокупность значений, из которых берутся значения атрибутов.Каждый атрибут может быть определен только на одном домене, но на каждом домене можетбыть определено множество атрибутов.















