СТАТЬЯ
17.07.02

Проектирование баз данных с ERwin
Основные компоненты диаграммы ERwin –
сущности, атрибуты, связи.
Часть 2. Понятие атрибута

Зайцев С.Л., к.ф.-м.н.

В статье "Базовые концепции моделирования данных" были введены основные понятия, связанные с моделированием данных. В статье Основные компоненты диаграммы ERwin - сущности, атрибуты, связи. Часть 1. Понятие сущности были даны первоначальные сведения о сущностях и ключах сущностей. В данной статье рассматриваются атрибуты и более детально описываются нормализация и ключи.

В этой статье вы узнаете как:

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

Что такое атрибут?

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

Атрибут должен представлять единственную концепцию. Атрибуты формируют логические группы, описывающие каждый экземпляр сущности. Конкретным экземпляром атрибута является значение. Например, атрибут с названием Имя определяет область определения для фактов о сущности с названием ПЕРСОНА. Габриэль, Р.Дж., Уилл и Ванесса - примеры конкретных значений Имени для конкретных экземпляров ПЕРСОНЫ. Конкретные значения для каждого из атрибутов сущности представляют единственный экземпляр.

Корректная модель атрибута обладает следующими признаками:

ПРИМЕЧАНИЕ
На Рисунке 3.1 представлен пример не очень хорошей модели; это прямолинейное отражение требований к информации. В следующих разделах будет предпринята попытка улучшить эту модель для демонстрации процесса размещения атрибутов в соответствующих сущностях.

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

На рисунке 3.1 две сущности БАНАНОВЫЙ ДЕСЕРТ и СЛИВОЧНАЯ ПОМАДКА. Каждая сущность содержит атрибуты, представляющие компоненты каждого из блюд. Обратите внимание, что для сущности БАНАНОВЫЙ ДЕСЕРТ можно выбрать три вкусовых добавки, три верхушки: банан, взбитые сливки и вишни. Для экземпляра СЛИВОЧНОЙ ПОМАДКИ можно выбрать две вкусовых добавки и банан, взбитые сливки и вишни.

Рис. 3.1. Сущности и атрибуты, представляющие (не очень удачно) две основных концепции:
СЛИВОЧНАЯ ПОМАДКА и БАНАНОВЫЙ ДЕСЕРТ

Выявление атрибутов

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

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

Упорядочивание атрибутов в соответствии с требованиями к информации.

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

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

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

Анализ атрибутов

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

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

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

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

Остаться должен только один

Атрибут должен присутствовать в логической модели в единственном экземпляре. "Один факт в одном месте" (Дейт, 1986). Для гарантии того, что каждый факт представлен единственным атрибутом, проверьте атрибуты со сходными именами или описаниями. Кроме того, вы должны определить, являются ли атрибуты реальными экземплярами или конкретными значениями, которые ошибочно представлены в модели разными атрибутами.

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

Атрибуты, имеющие в составе своего имени слова "индикатор" или "флаг", скорее всего, представляют конкретное значение из области определения атрибута. Конкретное значение является экземпляром атрибута. Использование в модели экземпляров атрибутов - распространенная ошибка. Например, "Индикатор черных волос" имеет значение "да" если присутствуют черные волосы, и значение "нет" если черные волосы отсутствуют. Более предпочтительным будет использование в модели атрибута "Цвет волос", который может иметь конкретное значение "Черный".

Атрибут должен представлять только одну концепцию бизнеса. Он не должен иметь несколько значений для одного экземпляра сущности. На Рисунке 3.1 показаны две сущности, БАНАНОВЫЙ ДЕСЕРТ и СЛИВОЧНАЯ ПОМАДКА. Обе сущности содержат многозначный атрибут с именем "Дата начала или окончания специального предложения". Имя атрибута показывает, что его значение может представлять дату начала специального предложения или дату окончания специального предложения, и у нас нет возможности их различить! Этот атрибут должен быть разделен на два, каждый из которых будет представлять единственный факт.

ПРИМЕЧАНИЕ
Хотя разбиение одного атрибута на два для различения фактов позволяет разрешить проблему с многозначностью атрибута, остается другая проблема: значения атрибутов Дата начала специального предложения и Дата окончания специального предложения не зависят от идентификаторов сущностей БАНАНОВЫЙ ДЕСЕРТ и СЛИВОЧНАЯ ПОМАДКА. Эта проблема связана с нормализацией и будет рассмотрена в следующем разделе.

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

Нормализация: помещение атрибута в соответствующую сущность

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

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

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

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

Другими преимуществами нормализации являются:

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

Функциональная зависимость

Функциональная зависимость служит для описания взаимосвязей между атрибутами в модели. Каждый атрибут сущности должен функционально зависеть от первичного ключа сущности (и не зависеть функционально от любого другого атрибута модели). Если это не так, атрибут должен быть перемещен в новую сущность, где это положение будет соблюдаться.

ПРИМЕЧАНИЕ
В заданном отношении R атрибут Y функционально зависит от атрибута X. В символьном виде R.X -> R.Y (читается как "R.X функционально определяет R.Y") - в том и только в том случае, если каждое значение X в R ассоциируется строго с одним значением Y в R (в каждый конкретный момент времени). Атрибуты X и Y могут быть составными (Дейт, 1986).

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

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

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

Первая нормальная форма

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

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

На рисунке 3.2 перенесены повторяющиеся группы Вкусовая добавка к мороженому и Верхушка в зависимые сущности. Обратите внимание на создание сущности ВКУС.

Рис. 3.2. Устранение избыточных атрибутов

Вторая нормальная форма

Приведение ко второй нормальной форме означает удаление избыточных атрибутов. Избыточными атрибутами могут быть:

СОВЕТ
Тщательно проанализируйте сущности со сходными атрибутами. Эти сущности могут оказаться связанными или даже представлять одну и ту же концепцию. Если это так, их нужно объединить.

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

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

Рисунок 3.2 демонстрирует решение для некоторых избыточных атрибутов сущностей БАНАНОВЫЙ ДЕСЕРТ и СЛИВОЧНАЯ ПОМАДКА. Рассмотрим избыточность с точки зрения двух стержневых сущностей. В обеих сущностях присутствуют общие темы: вкусовая добавка к мороженому и верхушка. Это признак того, что стержневые сущности могут быть объединены на более высоком уровне абстракции.

Рисунок 3.3 демонстрирует создание супертипа с именем СМЕСЬ, для которого БАНАНОВЫЙ ДЕСЕРТ и СЛИВОЧНАЯ ПОМАДКА являются его реализациями. Я добавил классификационный атрибут "Тип смеси" в родительскую сущность СМЕСЬ для идентификации является ли СМЕСЬ экземпляром сущности БАНАНОВЫЙ ДЕСЕРТ или СЛИВОЧНАЯ ПОМАДКА. Экземпляр сущности СМЕСЬ может быть экземпляром сущности БАНАНОВЫЙ ДЕСЕРТ или СЛИВОЧНАЯ ПОМАДКА, но не их обеих одновременно.

Рис. 3.3. Избыточность стержневых сущностей устранена за счет перемещения общих атрибутов
в более общую сущность СМЕСЬ. Обратите внимание, что первичный ключ "Идентификатор смеси"
помещен и в сущности БАНАНОВЫЙ ДЕСЕРТ и СЛИВОЧНАЯ ПОМАДКА.

Третья нормальная форма

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

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

На Рисунке 3.3 атрибуты Взбитые сливки и Вишня не зависят от первичных ключей сущностей БАНАНОВЫЙ ДЕСЕРТ и СЛИВОЧНАЯ ПОМАДКА. Фактически вы должны решить, не являются ли атрибуты Взбитые сливки и Вишня экземплярами сущности ВЕРХУШКА.

ПРИМЕЧАНИЕ
Сущность БАНАНОВЫЙ ДЕСЕРТ содержит атрибут Взбитые сливки и сущность СЛИВОЧНАЯ ПОМАДКА тоже содержит атрибут Взбитые сливки. Сравнение описаний этих атрибутов показывает, что они описывают одну и ту же концепцию. Взбитые сливки были выбраны как логическое имя для представления общей концепции и перемещены в более общую сущность СМЕСЬ.

На Рисунке 3.4 обратите внимание на дополнительный атрибут Дата смеси, который обеспечивает информацию о том, когда был создан экземпляр сущности СМЕСЬ. Я удалил атрибуты Дата начала и Дата окончания из сущностей БАНАНОВЫЙ ДЕСЕРТ и СЛИВОЧНАЯ ПОМАДКА. Новая сущность СПЕЦИАЛЬНОЕ ПРЕДЛОЖЕНИЕ теперь содержит эти две даты и атрибут Вкусовая добавка к мороженому для указания того, на какой из видов мороженого распространяется предложение.

Рис. 3.4. Каждый атрибут зависит от первичного ключа,
полного первичного ключа и ни от чего кроме ключа.

Определение характеристик атрибута

Атрибуты делятся на две группы. Атрибут либо является ключом, либо нет. Рисунок 3.5 показывает ключевые атрибуты для логической модели сущности СМЕСЬ. Заметьте, что, в сущности, атрибуты первичного ключа располагаются над линией внутри сущности, а остальные атрибуты - под линией.

Рис. 3.5. Все атрибуты, не являющиеся частью первичного ключа, располагаются в сущности ниже разделителя. Это могут быть кандидаты в ключи, внешние и альтернативные ключи и простые атрибуты.

Продолжение статьи

Дополнительную информацию Вы можете получить в компании Interface Ltd.

Обсудить на форуме Computer Associates
Отправить ссылку на страницу по e-mail


Interface Ltd.
Тel/Fax: +7(095) 105-0049 (многоканальный)
Отправить E-Mail
http://www.interface.ru
Ваши замечания и предложения отправляйте автору
По техническим вопросам обращайтесь к вебмастеру
Документ опубликован: 17.07.02