Диго С.М. Базы данных проектирование и использование (1084447), страница 18
Текст из файла (страница 18)
Условные обозначения, используемые при этом (рис. 2.37), соответствуют методологии IDEF1X.
Рис. 2.37. Условные обозначения, используемые при построении
ER-диаграмм (Microsoft Visio)
Позиции меню Stensils/Software (рис. 2.38) в Microsoft Visio соответствуют разновидностям моделей в UML. Эти модели напрямую для проектирования структуры базы данных не используются.
Рис. 2.38. Вид окна Microsoft Visio. Меню Stensils/Software
2.4. Особенности методологии построения ER-моделей
Как мы видели, выразительные возможности языковых средств представления ER-моделей в разных CASE-системах, а также «ручных» методиках моделирования отличаются друг от друга, и иногда очень существенно. Это, безусловно, накладывает отпечаток на методику построения ER-модели в каждой конкретной среде.
Принципиально важным является решение вопроса о том, что же отражает ER-модель. Во многих методологиях и документации по конкретным CASE-средствам считается, что ER-модель является концептуальной моделью БД. Основным отличием «базового» подхода, изложенного в учебнике, от многих методик, реализованных в современных CASE-средствах, является то, что в нем моделируется предметная область, тогда как в большинстве методологий отображается база данных (более того, именно реляционная БД). В предметной области нет понятия «ключ», «неспецифическое отношение» и т. п. (более того, эти понятия отсутствуют и в некоторых моделях данных, отличных от реляционных), которые вводятся во многих рассмотренных выше системах. Выбор ключа, кандидата ключа в излагаемой в учебнике методике проектирования переносится в «даталогическое проектирование», а в большинстве существующих методик решается на уровне концептуального моделирования.
В ERWin вводятся понятия логический уровень (что у нас называется ИЛМ (или концептуальная модель) и физический уровень (что соответствует ДЛМ), и считается, что одними и теми же средствами (в рамках одной модели) можно отразить и тот, и другой уровень. На самом деле это не совсем так, поскольку часть свойств, присущих конкретной СУБД, должна быть определена все-таки не в ER-модели, а при генерации схемы.
Кроме того, ни одна из анализируемых систем вообще не рассматривает проблему определения состава хранимых в БД данных (во многих из этих систем вообще все, что имеется в ER-модели, «переносится» в схему БД). Это служит еще одним косвенным подтверждением того, что ER-модель понимается, несмотря на декларации, все-таки как модель БД, а не модель предметной области.
В предлагаемой в данном учебнике методологии проектирования в ER-модели должны быть отображены все элементы, о которых идет речь в исследуемой предметной области. В процессе проектирования БД выполняется ряд шагов, в том числе и определение состава показателей, хранимых в базе данных. В базу данных могут переноситься не все атрибуты, присутствующие в ER-модели. Так, производные показатели часто не включаются в БД.
Большинство современных CASE-систем, таких, как Design/IDEF, ERWin и др., не содержат блоков, осуществляющих определение состава атрибутов, подлежащих хранению в БД (хотя даже некоторые из более ранних систем автоматизации проектирования предусматривали выполнение таких шагов). Некоторые системы, например ERWin, хотя и не позволяют автоматически определять состав показателей, хранимых в БД, но дают возможность пометить атрибуты, которые присутствуют только в концептуальной модели.
В связи с этим ER-модель, подлежащая преобразованию в модель целевой БД, при использовании CASE-систем, в которых не только нельзя автоматически определять состав хранимых атрибутов, но и нельзя их хотя бы пометить, должна содержать только те данные, которые должны храниться в БД.
В таких ситуациях рекомендуется строить две ER-модели: первая будет отображать предметную область в целом, безотносительно к тому, что будет храниться в базе данных, а что - нет, а вторая - содержать только те элементы, которые будут храниться в БД.
Во многих методологиях проектирования ER-модель часто является фактически просто СУБД-независимым описанием логической структуры реляционной БД.
Методология построения ER-модели зависит от изобразительных возможностей, заложенных в язык описания ER-модели, а также от алгоритма перехода от ER-модели к модели базы данных в среде конкретной СУБД, реализованного в CASE-средстве. Кроме того, естественно, методология зависит от особенностей модели БД целевой СУБД. Последнее оказывает влияние не только на методологию, но и на сам язык моделирования предметной области. К сожалению, практически все современные средства ER-моделирования ориентированы на реляционные модели данных, и их использование для других моделей приведет к некорректному результату.
Несмотря на то, что при использовании большинства CASE-средств на основе ER-моделей структура целевой базы данных определяется автоматически, требования к проектировщикам базы данных не только не уменьшаются, но и, напротив, возрастают: специалисты должны не только в совершенстве владеть методологией моделирования предметных областей с использованием языковых средств конкретной системы автоматизации проектирования, но и понимать алгоритм проектирования, заложенный в данном CASE-средстве, а также владеть теорией проектирования баз данных. В противном случае полученное проектное решение может оказаться не просто недостаточно эффективным, но и вообще не соответствовать отображаемой предметной области и содержать ошибки. Алгоритмы проектирования, заложенные в CASE-средствах, как правило, не публикуются. Поэтому, прежде чем приступить к реальному проектированию в среде конкретного CASE-средства, следует поэкспериментировать, посмотреть, как те или иные конструкции ER-модели и их сочетания преобразуются в модель БД.
В разд. 2.2 рассмотрены язык для построения базовой ER-модели и методика его использования, а далее (см. разд. 3.3) будет описан алгоритм перехода от этой модели к логической модели реляционной базы данных.
В предлагаемом подходе в ER-модели должны быть отображены все элементы, о которых идет речь в исследуемой предметной области. В процессе проектирования БД выполняется ряд шагов, в том числе и определение состава показателей, хранимых в базе данных. В базу данных могут переноситься не все атрибуты, присутствующие в ER-модели. Так, производные показатели часто не включаются в БД.
Изображение ER-модели, подлежащей преобразованию в модель целевой БД, будет зависеть и от других особенностей алгоритма преобразования инфологической модели в даталогическую. В данном учебнике предложен многоальтернативный алгоритм проектирования, в котором одной и той же конструкции ER-модели может соответствовать несколько проектных решений, которые принимаются проектировщиком на основе анализа многих факторов. К сожалению, далеко не все CASE-системы позволяют проектировщику выбирать проектное решение из нескольких альтернативных.
В предлагаемом автором подходе именно на алгоритм перехода от ER-модели к модели БД возлагаются задачи проектирования структуры базы данных, а ER-модель и другие компоненты инфологической модели должны содержать информацию, достаточную для обоснованного принятия проектного решения. Специалист, строящий ER-модель, в этом случае вообще может ничего не знать о модели и структуре базы данных. Именно такой подход и отвечает сущности инфологического моделирования - описание предметной области безотносительно к используемым в дальнейшем СУБД. Во многих CASE-системах ER-модели ориентированы только на реляционные базы данных; в них каждому объекту ER-модели соответствует таблица базы данных. В этом случае построение ER-модели мало чем отличается от проектирования реляционной базы данных.
Заложенные в систему проектные решения оказывают влияние на методологию построения ER-модели. Так, например, если алгоритм проектирования позволяет не каждому объекту ставить в соответствие таблицу, то для построения ER-модели при решении вопроса о том, какой из сущностей предметной области ставить в соответствие отдельный объект в ER-модели, а когда отображать его в виде характеристического свойства, можно порекомендовать выделять отдельный объект, не содержащий никаких атрибутов, кроме идентификатора, если он участвует в нескольких связях. В этом случае ER-модель получается менее громоздкой, так как содержит меньше элементов. При использовании CASE-средств такое решение еще более удобно, чем при ручном проектировании, поскольку при этом происходит автоматическая миграция соответствующих атрибутов. Придерживаться же данной выше рекомендации при построении ER-модели с использованием тех CASE-систем, в которых каждому объекту ER-модели соответствует таблица в реляционной базе данных, нельзя. Поэтому необходимо уже на стадии ER-моделирования решить, каким сущностям ставить в соответствие таблицы, а каким - нет, и в качестве объектов ER-модели изображать только те сущности, которым будут соответствовать отдельные таблицы.
Рассмотрим еще некоторые примеры влияния языка и алгоритма проектирования на построение ER-модели. В базовой ER-модели введено понятие условное свойство, которого нет в других методологиях ER-моделирования. Оно означает, что свойство может присутствовать не у всех объектов данного класса. При изображении таких ситуаций в методологиях типа IDEF1X, где нет соответствующего понятия, возможно несколько вариантов:
1) условное свойство изображать как обычный атрибут;
2) объект, обладающий условным свойством, изобразить как обобщенный объект (при этом условное свойство будет принадлежать видовому объекту);
3) выделить «обладание свойством» в отдельный объект и при установлении связи этого вновь введенного объекта с исходным объектом соответствующим образом определить характеристики этой связи.
В тех CASE-системах, которые позволяют выбирать проектное решение при преобразовании ER-модели в модель целевой СУБД (как, например, в PowerDesigner), лучше использовать вариант 2. В тех системах (как, например, Design/IDEF), в которых каждому видовому объекту ставится отдельная таблица, следует сначала принять решение, как вы хотите хранить информацию в БД, а только затем выбирать вариант отображения предметной области в ER-модели.
Большинство CASE-систем содержат изобразительные средства для отображения обобщенных объектов, хотя как используемые для этих целей условные обозначения, так и алгоритм отображения этих конструкций в даталогическую модель отличаются от системы к системе. Так, например, в методологии IDEF1X можно проводить классификацию объектов по нескольким независимым признакам. В CASE Oracle это сделать невозможно (можно изобразить только строго иерархическую, а не фасетную классификацию). Это, безусловно, скажется на подходе к моделированию предметной области: при невозможности отобразить многоаспектную классификацию в большинстве случаев придется подклассы изображать как самостоятельные объекты.
Понятие множественного свойства также отсутствует в большинстве CASE-систем. Для изображения каждого множественного свойства приходится использовать отдельный объект, зависящий по идентификации от основного объекта, обладающего этим свойством. Атрибут, соответствующий множественному свойству, должен быть отмечен как ключевой.
Многие CASE-системы (Design/IDEF, ERWin, CASE Oracle) позволяют изображать связь М:М на начальных этапах построения ER-модели, но перед выполнением этапа генерации схемы БД эта связь должна быть преобразована путем введения дополнительной связующей сущности и связей 1 :М с ней. В Design/IDEF и ERWin при изображении связи М:М нельзя указать класс принадлежности объектов в этой связи. Если класс принадлежности является необязательным хотя бы с одной из сторон связи, то приходится либо применять искусственные приемы, чтобы адекватно отразить характер связи, либо терять часть информации о предметной области. В качестве такого искусственного приема для систем, базирующихся на методологии IDEF1X, можно предложить следующий: класс объектов, класс принадлежности которого в данной связи «необязательный», делится только на один подкласс (естественно, что в этом случае тип подкласса будет incomplete - неполный), и уже этот видовой объект используется в связи.
В базовой модели введено понятие «имя объекта» - то, что называет объект. Имя может быть как уникальным, так и неуникальным. Это фиксируется в модели. Во всех остальных проанализированных методологиях выделяется атрибут или совокупность атрибутов, соответствующих первичному ключу. Если у объекта есть несколько даже уникальных имен, то только одно из них должно быть выбрано в качестве идентификатора уже на стадии концептуального моделирования. Другими словами, проблема выбора ключа реляционной таблицы переносится на стадию инфологического проектирования, что не совсем оправданно.