Теоретическая часть
На стадии проектирования создаются логические модели данных, которые могут быть построены с использованием методологии методологию IDEF1X. Case-средство ERWin поддерживает методологию IDEF1X и стандарт IE (Information Engineering). Методология IDEF1X подразделяется на уровни, соответствующие проектируемой модели данных системы. Каждый такой уровень соответствует определенной фазе проекта. Такой подход полезен при создании систем по принципу «сверху вниз».
На стадии проектирования создаются логические модели трех уровней: Entity Relation Diagram (Диаграмма сущность-связь) и Key-Based model (Модель данных, основанная на ключах) и Полная атрибутивная модель
Диаграмма сущность-связь (ERD – Entity Relationship Diagram) определяет сущности и их отношения. Модель данных, основанная на ключах, дает более подробное представление данных. Она включает описание всех сущностей и первичных ключей, которые соответствуют предметной области. Диаграмма сущность-связь является самым высоким уровнем в модели данных и определяет набор сущностей и атрибутов проектируемой системы. Целью этой диаграммы является формирование общего взгляда на систему для ее дальнейшей детализации.
Модель данных, основанная на ключах, описывает структуру данных системы, в которую включены все сущности и атрибуты, в том числе ключевые.
Полная атрибутивная модель – это логическая модель, наиболее детально представляющая структуру данных, представленных в третьей нормальной форме.
Первым шагом при создании логической модели БД является построение диаграммы ERD, которая состоит из трех частей: сущностей, атрибутов и взаимосвязей. ERD-диаграмма позволяет рассмотреть систему целиком и выяснить требования, необходимые для ее разработки, касающиеся хранения информации. ERD-диаграммы можно подразделить на отдельные куски, соответствующие отдельным задачам, решаемым проектируемой системой. Это позволяет рассматривать систему с точки зрения функциональных возможностей, делая процесс проектирования управляемым.
Сущность – это субъект, место, вещь, событие или понятие, содержащие информацию. Точнее, сущность – это набор (объединение) объектов, называемых экземплярами. В диаграммах ER-модели сущность представляет в виде прямоугольника, содержащего имя сущности. При этом имя сущности – это имя типа, а не конкретного объекта-экземпляра этого типа. Каждый экземпляр сущности должен быть отличим от любого другого экземпляра той же сущности.
Связь – это графически изображаемая ассоциация, устанавливаемая между двумя сущностями. Эта ассоциация всегда является бинарной и может существовать между двумя разными сущностями или между сущностью и ей же самой (рекурсивная связь). В любой связи выделяются два конца (в соответствии с парой связываемых сущностей), на каждом из которых указывается имя конца связи, степень конца связи (сколько экземпляров данной сущности связывается), обязательность связи (т.е. любой ли экземпляр данной сущности должен участвовать в данной связи).
В ERwin связи представлены пятью основными элементами информации:
· тип связи;
· имя связи;
· мощность связи;
· допустимость пустых (null) значений;
· требования по обеспечению ссылочной целостности.
ERwin поддерживает следующие основные типы связей: идентифицирующая/неидентифицирующая, полная категория, неполная категория, многие-ко-многим.
Связь называется идентифицирующей, если экземпляр дочерней сущности идентифицируется через ее связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в первичный ключ дочерней сущности. Дочерняя сущность при идентифицирующей связи всегда является зависимой.
Связь называется неидентифицирующей, если экземпляр дочерней сущности идентифицируется иначе, чем через связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в состав неключевых атрибутов дочерней сущности.
Идентифицирующая связь изображается сплошной линией; неидентифицирующая – пунктирной линией. Линии заканчиваются точкой со стороны дочерней сущности.
При определении связи происходит миграция атрибутов первичного ключа родительской сущности в соответствующую область атрибутов дочерней сущности. Поэтому такие атрибуты не вводятся вручную.
Имя связи (Verb Phrase) – фраза, характеризующая отношение между родительской и дочерней сущностями. Для связи «один ко многим» идентифицирующей или неидентифицирующей достаточно указать имя, характеризующее отношение от родительской к дочерней сущности (Parent-to-Child). Для связи «многие ко многим» следует указывать имя как Parent-to-Child, так и Child-to-Parent.
Мощность связи (Cardinality) служит для обозначения отношения числа экземпляров родительской сущности к числу экземпляров дочерней.
Различают 4 типа мощности:
· общий случай, когда одному экземпляру родительской сущности соответствуют 0, 1 или много экземпляров дочерней сущности не помечается каким-либо символом;
· символом Р помечается случай, когда одному экземпляру родительской сущности соответствуют 1 или много экземпляров дочерней сущности (исключено нулевое значение);
· символом Z помечается случай, когда одному экземпляру родительской сущности соответствуют 0 или 1 экземпляр дочерней сущности (исключены множественные значения);
· цифрой помечается случай точного соответствия, когда одному экземпляру родительской сущности соответствует заранее заданное число экземпляров дочерней сущности.
Правила ссылочной целостности (referential integrity (RI)) – логические конструкции, которые выражают бизнес-правила использования данных и представляют собой правила вставки, замены и удаления.
Атрибутом сущности является любая деталь, которая служит для уточнения, идентификации, классификации, числовой характеристики или выражения состояния сущности. Имена атрибутов заносятся в прямоугольник, изображающий сущность, под именем сущности и изображаются малыми буквами.
Уникальным идентификатором сущности является атрибут, комбинация атрибутов, комбинация связей или комбинация связей и атрибутов, уникально отличающая любой экземпляр сущности от других экземпляров сущности того же типа.
Типы сущностей и иерархия наследования
Связи определяют, является ли сущность независимой или зависимой. Различают несколько типов зависимых сущностей.
Характеристическая зависимая дочерняя сущность – это сущность, связанная только с одной родительской и хранящая информацию о характеристиках родительской сущности. Например, связь Агент – Телефон.
Ассоциативная сущность – это сущность, связанная с несколькими родительскими сущностями. Такая сущность содержит информацию о связях сущностей и позволяет реализовать связь «многие-ко-многим».
Именующая сущность – это частный случай ассоциативной сущности, не имеющей собственных атрибутов (только атрибуты родительских сущностей, мигрировавших в качестве внешнего ключа).
Категориальная сущность – это дочерняя сущность в иерархии наследования.
Иерархия наследования (или иерархия категорий) представляет собой особый тип объединения сущностей, которые разделяют общие характеристики.
Обычно иерархию наследования создают, когда несколько сущностей имеют общие по смыслу атрибуты, либо когда сущности имеют общие по смыслу связи (например, если бы Постоянный сотрудник и Совместитель имели сходную по смыслу связь «работает в» с сущностью Фирма), либо когда это диктуется бизнес-правилами.
Для каждой категории можно указать дискриминатор – атрибут родового предка, который показывает, как отличить одну категориальную сущность от другой (атрибут Тип на рис. 1.1).
Рис. 1.1. Иерархия наследования. Полная категория
Иерархии категорий делятся на 2 типа: полные и неполные. В полной категории одному экземпляру родового предка (сущность Сотрудник, смотри рис. 1.1) обязательно соответствует экземпляр в каком-либо потомке, т.е. в примере служащий обязательно является либо Администратором, либо Агентом.
Если категория еще не выстроена полностью и в родовом предке могут существовать экземпляры, которые не имеют соответствующих экземпляров в потомках, то такая категория будет неполной.
Для создания категориальной связи следует:
· установить курсор на кнопке «Категория» в палитре инструментов и нажать левую кнопку мыши;
· щелкнуть сначала по родовому предку, а затем по потомку;
· для установления второй связи в иерархии категории следует сначала щелкнуть по символу категории, затем по второму потомку.
Для редактирования категорий нужно щелкнуть правой кнопкой мыши по символу категории и выбрать в контекстном меню пункт Subtype Relationship Editor. В диалоге Subtype Relationship можно указать атрибут-дискриминатор категории (список Discriminator Attribute Choice) и тип категории – полная/неполная (радио-кнопки Complete/Incomplete).