Модели сущность-связь ( ER-модели)



 

Наиболее распространенным средством моделирования предметной области систем в структурном анализе и проектировании является модель «сущность-связь» (Entity-Relationship Model - ERМ), впервые предложенная Питером Пин-Шэн Ченом в 1976 г.

ER-модель использует сущности, атрибуты и отношения для представления данных и бизнес-правил. Сущности представляют собой объекты, о которых корпорация заинтересована хранить данные. Атрибуты - это данные, которые корпорация заинтересована хранить. Отношения описывают взаимосвязи между сущностями в терминах бизнес-правил.

Сущности

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

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

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

И зависимые, и независимые сущности можно разделить на несколько типов (слайд 11):

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

· Коды/ссылки/классификаторы - эти сущности содержат строки, определяющие набор значений или область определения для атрибута.

· Ассоциативные сущности - эти сущности используются для разрешения отношений многие-ко-многим.

· Характеристические сущности - эти сущности бывают двух типов: исключающие и включающие.

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

Соглашения об именовании сущностей.

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

· Имя сущности должно быть существительным или словосочетанием на основе существительного в единственном числе. Используйте ПЕРСОНА вместо ПЕРСОНЫ или ЛЮДИ, и КОНТЕЙНЕР - вместо КОНТЕЙНЕРЫ.

· Имя сущности должно быть уникальным. Использование одинаковых имен для сущностей, содержащих различные данные, или разных имен для сущностей, содержащих одинаковые данные, будет без необходимости вводить в заблуждение разработчиков и конечных пользователей.

· Имя сущности должно указывать на данные, которые будут храниться в каждом из экземпляров.

· Имя сущности не должно содержать специальных символов (таких как !, @, #, $, %, &, * и тому подобных) или указывать на принадлежность (МОРОЖЕНОЕ ПЕРСОНЫ).

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

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

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

 

ТАБЛИЦА 5.3. Описания сущностей с пояснениями

Хорошее описание Неудачное описание Пояснение
ПЕРСОНА содержит информацию о физических лицах, которые вступают во взаимодействие с корпорацией. Информация о ПЕРСОНЕ помогает корпорации при планировании, разработке продуктов и рекламной деятельности. Клиент или сотрудник. Хорошее описание включает определение сущности и ее значение для корпорации.
  Включает имя, дату рождения и т.п. для персоны. Простое перечисление атрибутов сущности не несет дополнительной информации о том, что собой представляет сущность и почему она важна для корпорации.
  Информация о клиентах и сотрудниках. Клиент и сотрудник являются примерами ролей, в которых может выступать ПЕРСОНА. Использование одних только примеров не объясняет, что сущность собой представляет и почему она важна для корпорации.
  Сущность содержит символы и числовые данные, извлеченные из POS (Point Of Sale - торговый терминал), хранящиеся с использованием стандартного сжатия и упакованных десятичных чисел. Данный искусственный пример призван проиллюстрировать, что технические описания и аббревиатуры с трудом понимаются бизнес-пользователями.

 

Распространенные ошибки при моделировании сущностей и выборе ключей

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

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

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

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

5. Нельзя использовать аббревиатуры или акронимы в качестве части имени.

6. Не рекомендуется включать месторасположение в качестве части имени.

7. Не рекомендуется использовать описаний, заимствованных только из словаря.

8. Не нужно перефразировать имя сущности и не использовать имя сущности в ее описании.

9. Неясные, расплывчатые или, что еще хуже, неполные описания затрудняют повторное использование и расширение существующей модели.

Атрибуты

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

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

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

· Значение атрибута представляет интерес для корпорации.

· В логической модели присутствует единственный экземпляр атрибута.

· Атрибут имеет логический тип данных и область определения.

· Значение атрибута определяется как требуемое или необязательное.

· Атрибут имеет имя и описание.

· Для каждого экземпляра сущности может использоваться только одно значение.

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

Атрибут должен присутствовать в er-модели в единственном экземпляре. "Один факт в одном месте" (Дейт, 1986).

Природа атрибутов может быть различной. (слайд 12)

Атрибут может быть множественным или единичным – т.е. атрибут, задающий свойство, может одновременно иметь несколько значений или, соответственно, только одно.

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

Атрибут может быть базовым или производным.

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

Значения атрибутов могут быть постоянными - статическими, или динамическими, т.е. меняться со временем. Атрибут может быть неопределенным, если он является динамическим, но его текущее значение еще не задано.

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

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

Первичный ключ должен быть статическим и неразрушаемым.

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

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

· Составной ключ. Для составных ключей каждая составляющая ключа должна иметь значение для каждого экземпляра. Ни одна часть ключа не должна быть неопределенной (NULL). Все части ключа являются обязательными и не могут быть опущены.

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

· Внешние ключи. Когда первичный ключ одной сущности мигрирует в другую таблицу, он называется внешним ключом. Внешние ключи "связывают" сущности, представляя отношения между ними. Внешние ключи могут быть как идентифицирующими, так и неидентифицирующими. Идентифицирующие внешние ключи становятся частью первичного ключа в той сущности, в которую они мигрировали. Неидентифицирующие внешние ключи становятся не ключевыми атрибутами.

Распространенными ошибками, связанными с первичным ключом, являются:

1. Не уникальность: первичный ключ не является уникальным для каждого из экземпляров.

2. Требуемое значение/неопределенность: первичный ключ не имеет значения для некоторых из экземпляров.

Хороший первичный ключ будет обладать следующими признаками:

· Значение гарантирует уникальность для каждого из экземпляров

· Значение не имеет скрытого смысла

· Область определения значений будет оставаться постоянной с течением времени

· Значения существуют для каждого из экземпляров сущности

Соглашения об именование атрибутов.

· Имя атрибута должно быть достаточно описательным. Желательно использовать словосочетания на основе существительных в форме объект/ модификатор/ класс. Форма объект/модификатор/класс - широко распространенное в отрасли соглашение об именовании атрибутов. Это соглашение побуждает использовать имена атрибутов, состоящие из трех частей. Часть объект иногда называют субъектом или основным словом. В качестве объекта обычно используется имя сущности.

· По возможности имя атрибута должно включать имя сущности. Используйте "Имя для персоны" вместо просто "Имя".

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

· Имя атрибута должно использовать язык бизнеса вместо языка технических описаний.

· Имя атрибута не должно содержать специальных символов (таких как !, @, #, $, %, &, * и тому подобных) или указывать на принадлежность (Имя, принадлежащее персоне).

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

 

ТАБЛИЦА 5.4. Имена атрибутов с пояснениями

Хорошее Имя Неудачное имя Пояснение
Person First Name (Имя персоны) Name (Имя) Name (Имя) - название класса и нуждается в обозначении объекта Person (персона) и в модификаторе First (первое).
Ice Cream Sales Quantity (Объем продаж мороженого) The Quantity of Sales (Объем продаж) Quantity (Количество) - название класса и должно быть на последнем месте (в английском варианте имени атрибута). "The" и "of" не привносят дополнительного смысла.
Item Cost Amount (Величина стоимости позиции) Cost of Item (Стоимость позиции) "of" не привносит дополнительного смысла. Название класса "Amount" (величина) указывает пользователю, что должно быть в атрибуте.
Product Identifier (Идентификатор продукта) Product Identifiers (Идентификаторы продуктов) "Identifiers" (Идентификаторы) - множественное число. Имя атрибута должно быть существительным в единственном числе.
Point of Sale Location Code (Код местоположения точки продаж) POS Code (Код POS) "POS" - аббревиатура. Использованное название класса "Code" (код) нуждается в модификаторе.
Person Birth Date (Дата рождения персоны) Birthday (День рождения) Birthday (День рождения) не содержит названия класса Date (Дата). Включение модификатора и имени объекта проясняет смысл имени атрибута.

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

· Описание атрибута должно быть ясным, полным и однозначным.

· Описание атрибута должно соответствовать его имени.

· Описание атрибута не должно опираться на описание другого атрибута.

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

· Имя атрибута должно отражать его смысл, а не то, как он используется.

· В описании атрибута должны быть расшифрованы все аббревиатуры и акронимы, использованные в его имени.

 

Таблица 5.5.Имена и описания атрибутов с пояснениями.

Имя атрибута Хорошее описание Неудачное описание Пояснение
Person First Name (Имя персоны) Имя персоны, которое позволяет корпорации общаться с персоной, используя дружеские обращения. Поле с длиной в 40 символов. Не используется язык бизнеса. Применены технические термины.
Ice Cream Sales Quantity (Объем продаж мороженого) Количество мороженого конкретного сорта, проданного в рамках конкретного мероприятия по продаже. Объем продаж. Не добавляет нового смысла, а просто перефразирует имя атрибута в расплывчатых терминах.
Item Cost Amount (Величина стоимости позиции) Величина стоимости конкретной позиции в конкретный период времени. Представляет суммарную стоимость продажи и доставки. Шестизначное десятичное число с двумя знаками после запятой. Слишком техническое описание. Почти ничего не значит для пользователей элемента данных.
Product Identifier (Идентификатор продукта) Искусственный уникальный числовой идентификатор для конкретного продукта. Идентификаторы продуктов. Простая перефразировка имени атрибута.
Point of Sale Location Code (Код местоположения точки продаж) Уникальный код, идентифицирующий географическое положение точки продаж. Код POS. Использованный акроним может быть непонятен пользователям. Кроме того, в описании опущен важный модификатор.
Person Birth Date (Дата рождения персоны) Дата рождения персоны. День рождения персоны. В описании опущено название класса “дата”.

Распространенные ошибки при работе с атрибутами

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

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

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

4. Не нужно использовать аббревиатур или акронимов в качестве части имени атрибута.

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

6. Не желательно использовать описаний атрибутов, заимствованных только из словаря. Не нужно использовать простое перефразирование имени атрибута. Не нужно использовать имена атрибута в его описании.

Отношения

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

Отношение - это ассоциация или "связь" между двумя сущностями. Отношение представляется в модели линией, соединяющей две сущности и глагольной конструкцией, которая описывает, как две сущности зависят друг от друга.

Отношение обладает следующими свойствами (слайд 13):

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

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

Отношение между двумя сущностями, или сущности самой с собой, может принадлежать к одному из следующих типов:

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

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

Типизирующими являются отношения между родительской и одной или более подчиненными сущностями.

Исключающие типизирующие отношения указывают, что только одна подчиненная сущность идентифицируется родительской сущностью.

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

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

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

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

· Один-к-одному (1:1) - один и только один экземпляр сущности связан с одним и только одним экземпляром другой сущности.

· Один-ко-многим (1:N) - один и только один экземпляр родительской сущности связан со многими экземплярами подчиненной сущности.

· Многие-ко-многим (M:N) - много экземпляров одной сущности связаны с многими экземплярами другой сущности (также называется неспецифическим отношением).

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


Дата добавления: 2023-02-21; просмотров: 95; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!