Cтраница 2
По существу, структура ролевого фрейма совпадает со структурой спецификационного списка, рассмотренного нами в начале главы. Для полного перехода от структуры фрейма к спецификационному списку нужно еще кроме указания имени ролей оставить специальные места для имен конкретных объектов, замещающих эти роли. [16]
![]() |
Иллюстрация четвертой нормальной формы. [17] |
ERwin не содержит полного алгоритма нормализации и не может проводить нормализацию автоматически, однако его возможности облегчают создание нормализованной модели данных. Имена ролей атрибутов внешних ключей и унификация атрибутов также облегчают построение нормализованной модели. [18]
![]() |
Унификация атрибута. [19] |
Есть и другие случаи, когда унификация нежелательна. Например, когда два атрибута имеют одинаковые имена, но на самом деле они отличаются по смыслу и необходимо, чтобы это отличие отражалось в диаграмме. В этом случае необходимо использовать имена ролей атрибутов внешнего ключа. [20]
![]() |
Вкладка Rolename диалога Relationships.| Имена ролей внешних ключей. [21] |
В примере, приведенном на рис. 2.2.20, в сущности Сотрудник внешний ключ Номер отдела имеет функциональное имя Где работает, которое показывает, какую роль играет этот атрибут в сущности. По умолчанию в списке атрибутов показывается только имя роли. Для отображения полного имени атрибута ( как функционального имени, так и имени роли) следует в контекстном меню, которое появляется, если щелкнуть правой кнопкой мыши по любому месту диаграммы, не занятому объектами модели, выбрать пункт Entitiy Display и затем включить опцию Rolename / Attribute. [22]
Другим примером обязательности присвоения имен ролей являются рекурсивные связи ( иногда их называют рыболовным крючком - fish hook), когда одна и та же сущность является и родительской и дочерней одновременно. При задании рекурсивной связи атрибут должен мигрировать в качестве внешнего ключа в состав неключевых атрибутов той же сущности. Атрибут не может появиться дважды в одной сущности под одним именем, поэтому обязательно должен получить имя роли. На рис. 2.2.20 сущность Сотрудник содержит атрибут первичного ключа Табельный номер. Информация о руководителе сотрудника содержится в той же сущности, поскольку руководитель работает в той же организации. Заметим, что рекурсивная связь может быть только неидентифицирующей. В противном случае внешний ключ должен был бы войти в состав первичного ключа и получить при генерации схемы признак NOT NULL. Это сделало бы невозможным построение иерархии - у дерева подчиненности должен быть корень - сотрудник, который никому не подчиняется в рамках данной организации. [23]
Запрос к мографовой базе данных состоит из двух частей: структурирующей ( с-часть) и декларирующей ( д-часть); с-часть указывает, из каких хранимых в базе взаимосвязей и каким образом выбираются наборы объектов, связанные новым типом взаимосвязи; d - часть содержит ограничения на свойства выбираемых объектов. Ограничения могут быть локальными, включающими в себя объекты домена одной роли, и глобальными, включающими в себя объекты доменов нескольких ролей. С-часть, называемая еще схемой пути, указывает, как, двигаясь в ормографе от одного или нескольких объектов по базовым взаимосвязям, определяются все наборы объектов, связанные данным типом взаимосвязи. Схема пути есть последовательность имен ролей взаимосвязей, соединенных либо дугами, помеченными именами типов взаимосвязей, либо знаками пересечения, которые указывают на то, что объекты, соответствующие этим ролям, должны совпадать. [24]
На рис. 2.2.21 сущность Продажа валюты содержит информацию об акте обмена валюты, в котором участвуют две валюты - проданная и купленная. Информация о валютах содержится в сущности Валюта. Следовательно, сущности Продажа валюты и Валюта должны быть связаны дважды и первичный ключ - Номер валюты должен дважды мигрировать в сущность Валюта в качестве внешнего ключа. В примере на рис. 2.2.21 атрибуты получили имена ролей Проданная и Купленная. [25]
Классы могут иметь взаимосвязи ( relationship), называемые отношениями. В нотации UML имеется несколько типов отношений. Отношение использования ( associations) показывает, что объект одного класса связан с одним или несколькими объектами другого класса. Отношение включения ( aggregation) является частным случаем отношения использования. Оно показывает, что один объект является частью другого. При воздействии на один объект, связанный отношением включения, некоторые операции автоматически могут затронуть другой объект. Каждая связь может быть охарактеризована определенной фразой, называемой именем роли. Для создания имени связи следует щелкнуть по ней правой кнопкой мыши и выбрать в меню пункт Properties. Появляется диалог Shape Properties ( рис. 7.3.7) на вкладку Label которого можно внести имя связи. [26]
Запрос к мографовой базе данных состоит из двух частей: структурирующей ( с-часть) и декларирующей ( д-часть); с-часть указывает, из каких хранимых в базе взаимосвязей и каким образом выбираются наборы объектов, связанные новым типом взаимосвязи; d - часть содержит ограничения на свойства выбираемых объектов. Ограничения могут быть локальными, включающими в себя объекты домена одной роли, и глобальными, включающими в себя объекты доменов нескольких ролей. С-часть, называемая еще схемой пути, указывает, как, двигаясь в ормографе от одного или нескольких объектов по базовым взаимосвязям, определяются все наборы объектов, связанные данным типом взаимосвязи. Схема пути есть последовательность имен ролей взаимосвязей, соединенных либо дугами, помеченными именами типов взаимосвязей, либо знаками пересечения, которые указывают на то, что объекты, соответствующие этим ролям, должны совпадать. Ответом является множество путей, соответствующих схеме пути и отвечающих ограничениям d - части. Путь называется соответствующим схеме, если в нем каждому имени роли соответствует объект, играющий эту роль, а дуги в пути помечены номерами путей, принадлежащих соответствующим типам взаимосвязей, и смена номера происходит лишь в местах появления знака пересечения. [27]