
Модель сущность-связь
Появление моделей данных типа “сущность-связь” было обусловлено практическими потребностями проектирования баз данных для коммерческих СУБД. Рассмотрим одну из наиболее популярных семантических моделей "сущность-связь", которая была предложена Ченом (Chen) в 1976 г. Часто ее называют кратко ER-модель (entity-relationship).
ER-модель была задумана как средство представления схемы предметной области, не зависимого от особенности среды хранения и не связанного соображениями физической эффективности. Эта схема отображается в соответствующую схему базы данных, поддерживаемой некоторой СУБД. Схема предметной области достаточно стабильна, поэтому она может остаться неизменной при модификации СУБД и при изменении взглядов пользователя на данные.
Схема предметной области, представленная средствами ER-модели и концептуальная схема ANSI/X3/SPARC похожи. Различие состоит в том, что в число функций концептуальной схемы входит функция интерфейса между внешней и внутренней схемами и эта схема поддерживается средствами СУБД. Схема предметной области – это документированное представление. Хотя на сегодняшний день ER-модель поддерживается средствами большинства современных СУБД.
Моделирование предметной области базируется на использовании графических диаграмм “сущность-связь” (ERD), включающих небольшое число разнородных компонентов. Кроме того нотация Чена как средство моделирования включает диаграммы атрибутов и диаграммы декомпозиции. Основными понятиями ER-модели у Чена являются сущность, отношение, связь и атрибут.
Сущность - это реальный или представляемый объект, информация о котором должна сохраняться и быть доступна. Как правило она представляет собой множество экземпляров реальных или абстрактных объектов (людей, событий, состояний, идей, предметов и т.д.), обладающих общими свойствами или характеристиками. В диаграммах ER-модели сущность представляется в виде прямоугольника, содержащего имя сущности. При этом имя сущности - это имя типа, а не некоторого конкретного экземпляра этого типа. Например, АЭРОПОРТ, а не Шереметьево или Хитроу. Каждый экземпляр сущности должен быть отличим от любого другого экземпляра той же сущности.
Отношение в самом общем виде представляет собой связь между двумя и более сущностями. Именование отношения осуществляется с помощью грамматического оборота глагола (ИМЕЕТ, ОПРЕДЕЛЯЕТ, МОЖЕТ ВЛАДЕТЬ и т.п.). Связь представляет собой графически изображаемую ассоциацию, устанавливаемую между двумя сущностями. Эта ассоциация всегда является бинарной и может существовать между двумя разными сущностями или между сущностью и ей же самой (рекурсивная связь). В любой связи выделяются два конца (в соответствии с существующей парой связываемых сущностей), на каждом из которых указывается имя конца связи, степень конца связи (сколько экземпляров данной сущности связывается), обязательность связи (т.е. любой ли экземпляр данной сущности должен участвовать в данной связи).
Другими словами, сущности представляют собой базовые типы информации, хранимой в базе данных, а отношения показывают, как эти типы данных увязаны между собой. Такой подход к моделированию преследует две цели:
обеспечение хранения информации в единственном месте;
использование этой информации различными приложениями.
Существуют разные виды сущностей. Независимая сущность представляет независимые данные, которые всегда присутствуют в системе. При этом отношения с другими сущностями могут как существовать, так и отсутствовать. Например, сущность СТУДЕНТ в системе ВУЗ. В свою очередь зависимая сущность представляет данные, зависящие от других сущностей в системе. Поэтому она должна всегда иметь отношения с другими сущностями. Например, ОЦЕНКИ_СТУДЕНТА, сущность которая зависит от конкретного студента. Ассоциированная сущность представляет данные, которые ассоциируются с отношениями между двумя и более сущностями. Например, студенты, поступающие на разные специальности изучают разные предметы. Поэтому для того, чтобы определить, какой предмет изучает данный студент вводится ассоциированная сущность ИЗУЧЕНИЕ_ПРЕДМЕТА.
Практика показала, что большинство приложений используют следующие типы связей:
один-к-одному (1*1);
один-к-многим (1*n);
многие-к-многим (n*m).
В
изображенном ниже примере связь между
сущностями БИЛЕТ и ПАССАЖИР связывает
билеты и пассажиров. При том конец
сущности с именем "для" позволяет
связывать с одним пассажиром более
одного билета, причем каждый билет
должен быть связан с каким-либо пассажиром.
Конец сущности с именем "имеет"
означает, что каждый билет может
принадлежать только одному пассажиру,
причем пассажир не обязан иметь хотя
бы один билет
Лаконичной устной трактовкой изображенной диаграммы является следующая:
Каждый БИЛЕТ предназначен для одного и только одного ПАССАЖИРА;
Каждый ПАССАЖИР может иметь один или более БИЛЕТОВ.
Это связь один-к-многим.
Н
а
следующем примере изображена рекурсивная
связь, связывающая сущность ЧЕЛОВЕК с
ней же самой. Конец связи с именем "сын"
определяет тот факт, что у одного отца
может быть более чем один сын. Конец
связи с именем "отец" означает, что
не у каждого человека могут быть сыновья.
Н
а
рис.8 изображена диаграмма “сущность-связь”,
демонстрирующая отношение между
объектами банковской системы
На этой диаграмме каждый БАНК ИМЕЕТ один или несколько БАНКОВСКИХ СЧЕТОВ. Кроме того, каждый КЛИЕНТ МОЖЕТ ВЛАДЕТЬ одной или несколькими КРЕДИТНЫМИ КАРТАМИ и одним или более БАНКОВСКИМ СЧЕТОМ, каждый из которых ОПРЕДЕЛЯЕТ в точности одну КРЕДИТНУЮ КАРТУ. Каждая КРЕДИТНАЯ КАРТА ИМЕЕТ ровно один зависимый от нее ПАРОЛЬ КАРТЫ, а каждый КЛИЕНТ ЗНАЕТ ПАРОЛЬ КАРТЫ.
Каждая сущность обладает одним или несколькими атрибутами, которые однозначно идентифицируют каждый экземпляр сущности. Атрибутом сущности является любая деталь, которая служит для уточнения, идентификации, классификации, числовой характеристики или выражения состояния сущности. При этом некоторые атрибуты могут быть определены как ключевые, то есть однозначно определяющие экземпляр сущности.
Например, сущность КРЕДИТНАЯ КАРТА может иметь следующие атрибуты: пароль, денежная сумма, номер счета клиента, коды сортировок. Очевидно, что номер счета клиента может быть в данном случае ключом сущности КРЕДИТНАЯ КАРТА.
ER-модели используются для проектирования баз данных. При проектировании базы данных с использованием модели "сущность-связь" выполняются четыре шага:
идентификация представляющих интерес наборов сущностей и наборов связей;
идентификация семантической информации в наборах связей, например, является ли некоторый набор связи отображением 1:n;
определение наборов значений и атрибутов;
организация данных в виде отношений "сущность/связь" и определение первичных ключей.
Появление модели “сущность-связь” было обусловлено потребностями процесса проектирования баз данных. Модель создавалась с учетом двух основных критериев. Во-первых, она должна обладать достаточной общностью с тем, чтобы ее средства позволяли представлять структуры и ограничения, свойственные реальному миру. Во-вторых, разрыв между возможностями модели и возможностями коммерческих СУБД не должен быть слишком большим, иначе бы возникли проблемы реализации.
Модели вида “сущность-связь” отвечают задачам анализа и проектирования баз данных. Они помогают аналитикам контактировать с пользователями в процессе анализа и конструирования. В связи с наглядностью представления концептуальных схем баз данных ER-модели получили широкое распространение в системах CASE, поддерживающих автоматизированное проектирование реляционных баз данных (IDEEF1X, ERWin).