Модель «сущность-связь». Данная модель была впервые предложена Питером Ченом в 1976 году. Ее предназначение – концептуальное моделирование предметной области. Подход анализу предметной области, реализованный в модели «сущность-связь», послужил одним из источников для методов объектно-ориентированного анализа, а сами сущности напоминают классы (правда, классы, помимо атрибутов, обладают еще и поведением).
Метод Баркера.
Метод Баркера является одной из вариаций модели «сущность-связь» (-, -).
Сущность (Entity) - реальный либо воображаемый объект, имеющий значение для рассматриваемой предметной области, информация о котором подлежит хранению.
Каждая сущность должна обладать некоторыми свойствами:
- иметь уникальное имя;
- сущность обладает одним или несколькими атрибутами, которые либо принадлежат сущности, либо наследуются через связь;
- сущность обладает одним или несколькими атрибутами, которые однозначно идентифицируют каждый экземпляр сущности;
- каждая сущность может обладать любым количеством связей с другими сущностями модели.
В качестве имени сущности следует выбирать существительное в единственном числе и в именительном падеже. Атрибут – некоторая характеристика сущности. Атрибут принадлежит (входит в состав) сущности.
Это подчеркивается и обозначением атрибутов в методе Баркера. Атрибуты перечисляются внутри блока сущности, ниже наименования.
Связь (Relationship) - - это ассоциация между сущностями, при которой, как правило, каждый экземпляр одной сущности, называемой родительской сущностью, ассоциирован с произвольным (в том числе нулевым) количеством экземпляров второй сущности, называемой сущностью-потомком, а каждый экземпляр сущности-потомка ассоциирован в точности с одним экземпляром сущности-родителя.
На рисунке мы видим пример связи между двумя сущностями, студентом и группой. Рассмотрим характеристики, которыми может обладать связь. В первую очередь, поскольку связь является значимой для предметной области, мы должны пояснить это значение, указав роли участвующих в связи сущностей. В нашем примере роли достаточно тривиальны – группа состоит из студентов, а студент, в свою очередь, входит в группу.
Вторая характеристика связи – это степень связи, то есть, количество участвующих в ней экземпляров каждой из сущностей. В зависимости от степени выделяют связи «один к одному», «один ко многим» (или «многие к одному») и «многие ко многим».
Наконец, связи также характеризуются обязательностью участия в них. Эту характеристику называют также «класс принадлежности», который может быть обязательным и необязательным. В нашем примере каждая группа обязательно должна включать студентов, иначе ее существование бессмысленно. Аналогично, каждый студент должен входить в состав какой-либо группы. То есть, класс принадлежности для обеих сущностей – обязательный. Необязательный класс принадлежности показывается при помощи изображения соответствующего конца связи пунктирной линией.
Рассмотрев характеристики связей, вернемся снова к степени связи. Связи «один к одному» встречаются достаточно редко. Если класс принадлежности для обеих сущностей обязательный, то возможно, что следует объединить их и сделать из двух сущностей одну. Вторая возможная ситуация для связи «один к одному» - ошибка в определении степени связи. При более подробном анализе часто выясняется, что для одной из сущностей степень связи будет не «один», а «много».
Связь «многие ко многим» напрямую в реляционной СУБД реализовать нельзя. В самом простом случае мы должны просто заменить связь «многие ко многим» на так называемую граничную сущность, задача которой состоит в связывании между собой других сущностей.
Обобщенная сущность включает в себя несколько вложенных сущностей. Вложенные сущности обладают атрибутами обобщенной сущности и добавляют к ним свои, присущие только ей, иначе их выделение ничем не оправдано.
Как обобщенная сущность, так и вложенные в нее сущности могут участвовать в связях.
В реальности может возникать ситуация, когда сущность участвует строго в одной связи из некоторой группы. Такие связи образуют группу, на диаграмме они объединяются дугой.
В некоторых случаях нам нужно смоделировать ситуацию, при которой связь, будучи однажды установленной, не может переноситься с одного экземпляра сущности на другой. Обычные связи переносить можно, например, студент вполне может переходить из группы в группу.
Метод IDEF1x В его основе лежат те же идеи и принципы. В большинстве случаев, модели, построенные с помощью метода Баркера, можно преобразовать в модели IDEF1x и обратно. Рассмотрение этого метода оправдано тем, что он чаще используются в различных программных средствах для проектирования баз данных.
Сущность определяется так же. Изображение сущности также весьма похоже, основное отличие состоит в том, что атрибуты, входящие в первичный ключ, отделяются от остальных и помещаются в верхнюю часть прямоугольника. Можно отметить, что обязательные и необязательные атрибуты визуально не выделяются.
Связи в методе 1 несколько отличаются по своим характеристикам от связей метода Баркера. Они точно так же обладают степенью, и можно выделить связи со степенью «многие ко многим», «один ко многим». Но также связь может быть идентифицирующей и неидентифицирующей.
Если между двумя сущностями имеется идентифицирующая связь, то первичный ключ главной сущности включается в состав первичного ключа подчиненной сущности. Кроме того, подчиненная сущность явно выделяется. В случае, если связь неидентифицирующая, то первичный ключ из главной сущности включается в число атрибутов подчиненной сущности, а сама она никак не изменяется.
Идентифицирующая связь. Неидентифицирующая связь.
В случае, если участие в связи не обязательно, связь помечается ромбом. Связи «многие ко многим» также допускаются только на начальных этапах и должны преобразовываться аналогично тому, как предполагает метод Баркера. Объединение связей в группы и задание неперемещаемых связей в методе 1 не предусмотрено.
В методе 1 обобщение – это разновидность связи. Отличать их можно при помощи так называемого дискриминатора – атрибута, значения которого и позволяют относить экземпляр сущности к тому или иному производному виду. Дискриминатор указывается рядом с символом обобщения, в нашем случае в качестве дискриминатора выступает атрибут «ФормаОбучения». Возможность задавать неполные классификации. Символе классификации под кружком две линии - полная. Если бы имелись еще какие-то разновидности студентов, которые мы не привели в модели (то есть, они считались бы просто студентами), то в символе классификации под кружком была бы одна линия.
Можно сказать, что эти два метода в целом очень похожи, как и было отмечено выше.