Атрибут
Определение. Атрибут (attribute) - это любая деталь или аспект, способствующие качественному или количественному описанию сущности, ее идентификации, классификации или отражению ее состояния.
Атрибутом может быть текст, число, картинка, чувство, запах, в общем, все, что нужно. Занимаясь обработкой данных, мы стараемся в основном ограничиться текстами и числами.
Представление атрибутов. Для представления атрибута пишите его имя строчными буквами в единственном числе, возможно, с примерами значений.
Атрибуты необязательно показывать на диаграмме сущностей и связей, однако добавление к сущности одного-двух атрибутов в период формирования модели, как правило, оказывается весьма полезным. Особенно это ощутимо при разграничении "типов" и "экземпляров" сущностей.
Приводимый справа пример является иллюстрацией того, как значительно упрощается представление различий между сущностями, если указать их атрибуты. |
Атрибут описывает одну сущность. Атрибут должен описывать ту сущность, к которой он отнесен!
Это может казаться очевидным, и, тем не менее, с этим связано наибольшее количество ошибок при определении атрибутов. Например, атрибутом какой сущности является "номер места": купона, билета, посадочного талона, воздушного судна или места в самолете? Очевидно, это атрибут сущности МЕСТО, но на практике мы часто встречаемся с его многократными повторениями, например, на посадочном талоне, который на рис. 7.26 представлен как самостоятельная сущность.
Почему так происходит? Все дело в том, что номер места является очень удобным средством для представления связи. | Рис. 7.26. Отнесение атрибута к надлежащей сущности |
Чтение имен атрибутов. Не используйте имени сущности в наименовании ее атрибутов. это совершенно излишне, поскольку атрибут описывает только одну сущность. В приведенном выше примере наименование "номер места" действительно помогло нам обнаружить недостающую сущность МЕСТО, которую затем можно было описывать с помощью атрибута "номер" и, быть может, ряда других атрибутов таких, например, как "тип".
Читаться атрибуты, поименованные таким образом, должны: <Имя атрибута> <Имя сущности в родительном падеже>. Например, номер места.
В классическом примере с отделами и служащими "номер отдела" не является атрибутом сущности СЛУЖАЩИЙ, он является атрибутом ОТДЕЛа и поэтому должен быть определен как номер ОТДЕЛА.
Удаляйте повторяющиеся атрибуты (первая нормальная форма).
В каждый момент времени сущность может обладать лишь одним значением атрибута. Если же многозначность атрибута играет существенную роль, следует определить новую сущность, в которую войдут эти значения, и соединить ее с исходной сущностью связью многие-к-одному. Обратимся вновь к примеру с местами на воздушном судне, где в качестве одной из первых моделей мы могли бы иметь диаграмму, приведенную на рис. 7.27. Следуя же указанному выше правилу, получим диаграмму, приведенную на рис. 7.28.
Рис. 7.27. Повторяющийся атрибут указывает на недостающую сущность | Рис. 7.28. Добавление пропущенной сущности. |
Это правило, которое в реляционной модели называется приведением к первой нормальной форме.
Это сущность или атрибут? Атрибут может стать сущностью, если он представляет самостоятельный интерес и обладает собственными связями и атрибутами.
В предыдущем примере мы использовали "бортовой номер" в качестве атрибута воздушного судна. Это практически всегда будет оправданно, если только мы не приступим к рассмотрению подсистемы регистрации воздушных судов авиакомпаниями. В этом случае нам могут дополнительно понадобиться "дата регистрации", "место регистрации", "регистрируемый владелец", "признак повторной регистрации" и т.п., и наша прежняя диаграмма начнет трансформироваться в нечто вроде показанного на рис. 7.28. | Рис. 7.28. Атрибут может стать сущностью. |
Факультативные и обязательные (optional and mandatory) атрибуты. Атрибут, значение которого может отсутствовать, называется факультативным. Он обозначается символом "°" перед его именем. Атрибут, значение которого должно быть всегда известно, называется обязательным, и помечается звездочкой "*" перед именем. Обязательность означает, что сущность может быть определена тогда и только тогда, когда известны значения всех ее обязательных атрибутов. Все атрибуты уникального идентификатора должны быть обязательными.
Уникальный идентификатор (unique identifier). Каждая сущность должна однозначно идентифицироваться посредством некоторой комбинации атрибутов и/или связей. Поэтому среди возможных атрибутов сущности всегда должны быть найдены такие атрибуты, которые позволяют ее идентифицировать. Уникальный идентификатор представляется на ER-диаграмме указанием символа "#" перед именем каждого атрибута, входящего в данный идентификатор, и поперечной чертой на линиях соответствующих связей
Значения других атрибутов должны зависеть от всего уникального идентификатора (вторая нормальная форма)
Удалите те атрибуты, значения которых зависят лишь от той или иной части идентификатора. Этот процесс известен как приведение ко второй нормальной форме. Присутствие таких атрибутов, как правило, указывает на наличие пропущенной сущности, связанной с данной.
Атрибуты должны зависеть от уникального идентификатора (третья нормальная форма).
Удалите те атрибуты, которые не зависят от идентификатора сущности. Этот процесс известен как приведение к третьей нормальной форме. Пусть, например, у нас есть посадочный талон с указанной на нем фамилией пассажира. Вопрос: Зависит ли тем или иным образом фамилия пассажира от уникального идентификатора посадочного талона? Очевидным образом, нет. (Не меняю же я, в самом деле, свою фамилию, когда мне выдают посадочный талон!) Если тот или иной атрибут не зависит от идентификатора, это, вероятно, означает наличие пропущенной сущности и/или связи, которой принадлежит этот атрибут.
Согласно рис. 7.29 для однозначной идентификации посадочного талона необходимы: · дата и время выдачи; · связь с местом, и, следовательно, номер места; · связь с рейсовым полетом, и, следовательно, соответствующие дата и время вылета; · номер рейса, поскольку уникальный идентификатор рейсового полета также включает связь с рейсом. | 7.29. Представление уникальных идентификаторов атрибутами и связями. |
Тип и экземпляр. Очень важно четко понимать, что все определения сущности, связи, атрибута и уникального идентификатора, которые мы только что рассмотрели, суть определения типа, или класса, понятия, а не экземпляра. Экземпляры сущностей и связей будут представлены в самой базе данных.
Заметим, что и остальные понятия и определения в моделировании сущностей и связей также относятся к типу, или классу, объектов.