Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
FoxPro.doc
Скачиваний:
3
Добавлен:
19.09.2019
Размер:
1.99 Mб
Скачать

Физическая и логическая модель данных

ERwin имеет два уровня представления модели – логический и физический.

Логический уровень – это абстрактный взгляд на данные, на нём данные представляются так, как выглядят в реальном мире, и могут называться так, как они называются в реальном мире, например «Постоянный клиент», «Отдел», «Фамилия сотрудника». Объекты модели, представляемые на логическом уровне, называются сущностями и атрибутами (подробнее смотри далее). Логическая модель данных может быть построена на основе другой логической модели. Эта модель данных является универсальной и никак не связана с конкретной реализацией СУБД.

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

Документирование модели. Многие СУБД имеют ограничение на именование объектов (например, ограничение на длину имени таблицы или запрет использования специальных символов – пробела и т. д.). Зачастую разработчики ИС имеют дело с нелокализованными версиями СУБД. Это означает, что объекты БД могут называться короткими словами, только латинскими символами и без использования специальных символов (т. е. нельзя назвать таблицу предложением – только одним словом). Кроме того, проектировщики БД нередко злоупотребляют «техническими» наименованиями, в результате таблица и колонки получают наименования типа RTD_324 или CUST_A12 и т. д. Полученную в результате структуру могут понять только специалисты (а чаще всего только авторы модели), её невозможно обсуждать с экспертами предметной области. Разделение модели на логическую и физическую позволяет решить эту проблему. На физическом уровне объекты БД могут называться так, как того требуют ограничения СУБД. На логическом уровне можно этим объектам дать синонимы – имена более понятные неспециалистам, в том числе на кириллице и с использованием специальных символов.

Уровни отображения модели

Интерфейс выполнен в стиле Windows-приложений, достаточно прост и интуитивно понятен.

ERwin имеет несколько уровней отображения диаграммы: уровень сущностей, уровень атрибутов, уровень определений, уровень первичных ключей и уровень иконок. Переключение между первыми тремя уровнями можно с использованием кнопок панели инструментов. Переключится на другие уровни отображения можно при помощи контекстного меню, которое появляется, если «кликнуть» по любому месту диаграммы, не занятому объектами модели. В контекстном меню следует выбрать пункт Display Level и затем необходимый уровень отображения. ERwin позволяет связать с сущностью большую и малую иконки. При переключении на уровень иконок показывается большая иконка. Для отображения малой иконки следует выбрать в контекстном меню пункт Display Options/Entities и в каскадном меню включить опцию Entity Icon. Малая иконка будет показана слева от имени сущности на всех уровнях отображения модели.

Сущности и атрибуты

Основные компоненты диаграммы ERwin – это сущности, атрибуты и связи. Каждая сущность является множеством подобных индивидуальных объектов, называемых экземплярами. Каждый экземпляр индивидуален и должен отличаться от всех остальных экземпляров. Атрибут выражает определённое свойство объекта. С точки зрения БД (физическая модель) сущности соответствует таблица, экземпляру сущности – строка в таблице, а атрибуту – колонка таблицы. Построение модели данных предполагает определение сущностей и атрибутов, т. е. необходимо определить, какая информация будет храниться в конкретной сущности или атрибуте.

Сущность можно определить как объект, событие или концепцию, информация о которых должна сохраняться. Сущности должны иметь наименование с чётким смысловым значением, именоваться существительным в единственном числе, не носить «технических» наименований и быть достаточно важными для того, чтобы их моделировать. Именование сущности в единственном числе облегчает в дальнейшем чтение модели. Примером может быть сущность «Клиент» (но не «Клиенты») с атрибутами Фамилия клиента, Имя клиента и другими. На физическом уровне ей может соответствовать таблица Client с колонками Client_last_name, Client_name.

Для вненсения сущности в модель необходимо (убедившись предварительно, что вы находитесь на уровне логической модели) «кликнуть» по кнопке сущности на панели инструментов, затем «кликнуть» по тому месту на диаграмме, где необходимо расположить новую сущность. Щёлкнув правой кнопкой мыши по сущности и выбрав из всплывающего меню пункт Entity Editor…, можно вызвать диалог Entity Editor, в котором определяются имя, описание и комментарии сущности.

Атрибуты. Как было сказано выше, каждый атрибут хранит информацию об определённом свойстве сущности, а каждый экземпляр сущности должен быть уникальным. Для описания атрибутов следует, «кликнув» правой кнопкой по сущности, выбрать в появившемся меню пункт Attribute Editor. Для большей наглядности диаграммы каждый атрибут можно связать с иконкой. При помощи списка выбора Icon в меню Attribute Editor закладки General можно связать иконку с атрибутом. Каждому домену соответствует стандартная иконка, однако можно импортировать и дополнительные изображения. Кнопка … справа от списка выбора Icon вызывает диалог ERwin Icon Editor, щёлкнув по кнопке Import можно добавить в список необходимую иконку.

Для отображения иконки атрибута следует выбрать в контекстном меню пункт Display Options/Entities и каскадном меню включить опцию Attribute Icon. Малая иконка будет показана слева от имени атрибута на уровне атрибутов отображения модели.

Как видно из рис. 1.2, имя сущности показывается над прямоугольником, изображающим сущность, список атрибутов сущности – внутри прямоугольника. Список разделён горизонтальной чертой, выше которой расположены атрибуты первичного ключа, ниже неключевые атрибуты.

Очень важно дать атрибуту правильное имя. Атрибуты должны именоваться в единственном числе и иметь четкое смысловое значение. Соблюдение этого правила позволяет частично решить проблему нормализации данных уже на этапе определения атрибутов. Например, создание в сущности Клиент атрибута Телефоны клиента противоречит требованиям нормализации, поскольку атрибут должен быть атомарным, т.е. не содержать множественных значений. Часто приходится создавать произвольные атрибуты, т.е. атрибуты, значение которых можно вычислить из других атрибутов. Примером произвольного атрибута может служить Возраст сотрудника, который может вычислен из атрибута Дата рождения сотрудника. Такой атрибут может привести к конфликтам; действительно, если вовремя не обновить значение атрибута Возраст сотрудника, он может противоречить значению атрибута Дата рождения сотрудника. Произвольные атрибуты – это ошибка нормализации, однако их вводят для повышения производительности системы – если необходимо узнать возраст сотрудника, можно обратиться к соответствующему атрибуту, а не проводить вычисления (которые на практике могут быть значительно сложнее) по дате рождения.

Связи

Связь является логическим соотношением между сущностями. Каждая связь должна именоваться глаголом или глагольной фразой. На логическом уровне можно установить идентифицирующую связь один-ко-многим, связь многие-ко-многим и неидентифицирущую связь один-ко-многим (соответственно это кнопки слева направо в палитре инструментов).

В IDEF1X различают зависимые и независимые сущности. Тип сущности определяется её связью с другими сущностями.

Идентифицирующая связь устанавливается между независимой (родительский конец связи) и зависимой (дочерний конец связи) сущностями. Когда рисуется идентифицирующая связь, ERwin автоматически преобразует дочернюю сущность в зависимую. Экземпляр зависимой сущности определяется только через отношение к родительской сущности. При установлении идентифицирующей связи атрибуты первичного ключа (Primary Key) родительской сущности автоматически переносятся в состав первичного ключа дочерней сущности. Эта операция дополнения атрибутов дочерней сущности при создании связи называется миграцией атрибутов. В дочерней сущности новые атрибуты помечаются как внешний ключ – Foreign Key.

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

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

Для создания новой связи следует:

  • установить курсор на нужный кнопке в палитре инструментов и нажать левую кнопку мыши;

  • щёлкнуть сначала по родительской, а затем по дочерней сущности.

Для редактирования свойств связи следует «кликнуть» правой кнопкой мыши по связи и выбрать на контекстном меню пункт Relationship Editor. В закладке General появившегося диалога можно задать мощность, имя и тип связи.

Мощность связи (Cardinality) – служит для обозначения отношения числа экземпляров родительской сущности к числу экземпляров дочерней.

Различают четыре типа мощности:

  1. общий случай, когда одному экземпляру родительской сущности соответствуют 0, 1 или много экземпляров дочерней сущности не помечаются каким-либо символов;

  2. символом Р помечается случай, когда одному экземпляру родительской сущности соответствуют 1 или много экземпляров дочерней сущности (исключено нулевое значение);

  3. символом Z помечается случай, когда одному экземпляру родительской сущности соответствуют 0 или 1 экземпляр дочерней сущности (исключены множественные значения);

  4. цифрой помечается случай точного соответствия, когда одному экземпляру родительской сущности соответствует заранее заданное число экземпляров дочерней сущности.

Имя связи (Verb Phrase) – фраза, характеризующая отношение между родительской и дочерней сущностями. Для связи один-ко-многим достаточно указать имя, характеризующее отношение от родительской к дочерней сущности (Parent-to-Child). Для связи многие-ко-многим следует указывать имена как Parent-to-Child так и Child-to-Parent

Связь многие-ко-многим возможна только на уровне логической модели данных. На рисунке 1.3 показан пример связи многие-ко-многим. Врач может принимать много пациентов, пациент может лечиться у нескольких врачей. Такая связь обозначается сплошной линией с двумя точками на концах. Связь многие-ко-многим должна именоваться двумя фразами – в обе стороны. Это облегчает чтение диаграммы.

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

Автоматического решения проблемы связи многие-ко-многим не всегда оказывается достаточно. В примере таблица Doctor_Patient имеет смысл визита к врачу, поэтому её следует переименовать в Visit. Один и тот же пациент может много раз посещать врача, поэтому для того, чтобы идентифицировать визит, необходимо в состав первичного ключа таблицы Visit добавить дополнительную колонку, например дату посещения.

Правила ссылочной целостности (referential integrityRI) – логические конструкции, которые выражают бизнес правила использования данных и представляют собой правила вставки, замены и удаления. При генерации схемы БД на основе опций логической модели, задаваемые в закладке Rolename /RI Action панели диалога редактора связей, будут сгенерированы правила декларативной ссылочной целостности, которые должны быть предписаны для каждой связи. Возможно пять видов правил:

  1. RESTRICT – правило ссылочной целостности, запрещающее вставку, изменение или удаление строки;

  2. CASCADE – правило ссылочной целостности, передающее изменение от одной таблицы к другой. Следует с осторожностью пользоваться этим правилом, так как при удалении одной строки реально может привести к удалению тысячи строк в БД;

  3. SET NULL – правило ссылочной целостности, изменяющее текущее значение данных на нулевое;

  4. SET DEFAULT - правило ссылочной целостности, изменяющее значение атрибута внешнего ключа на значение по умолчанию;

  5. NONE - правило ссылочной целостности, при котором значение атрибута внешнего ключа не меняется.

Правила удаления управляют тем, что будет происходить в БД при удалении строки. Аналогично правила вставки и обновления управляют тем, что будет происходить с БД, если строки изменяются или добавляются.

ERwin автоматически присваивает каждой связи значение ссылочной целостности, устанавливаемой по умолчанию, прежде чем добавить её в диаграмму. Режимы RI, присваиваемые ERwin по умолчанию, могут быть изменены в редакторе Relationship Editor закладка Rolename /RI Action, который вызывается, если щёлкнуть по кнопке Edit/Relationship… (для физической модели меню Server/Target Server…, щёлкнуть по кнопке RI Default ).

Задание ключей.

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

Первичный ключ (Primary Key) – это атрибут или группа атрибутов, однозначно идентифицирующая экземпляр сущности. Для одной сущности может оказаться несколько атрибутов или наборов атрибутов, претендующих на роль первичного ключа. Такие претенденты называются потенциальными ключами (Candidate Key). Атрибуты ключа не должны содержать нулевых значений.

Альтернативный ключ (Alternate Key) – это потенциальный ключ, не ставший первичным. ERwin позволяет выделить атрибуты альтернативных ключей, и при генерации схемы БД по этим атрибутам будет генерироваться уникальный индекс.

При работе ИС часто бывает необходимо обеспечить доступ к нескольким экземплярам сущности, объединённым каким-либо одним признаком. Для повышения производительности в этом случае используются неуникальные индексы. ERwin позволяет на уровне логической модели назначить атрибуты, которые будут участвовать в неуникальных индексах. Атрибуты, участвующие в неуникальных индексах, называются инверсионные входы (Inversion Entries). Inversion Entries – это атрибут или группа атрибутов, которые не определяют экземпляр сущности уникальным образом, но часто используются для обращения к экземплярам сущности. ERwin генерирует неуникальный индекс для каждого Inversion Entries. Чтобы решить проблему поиска данных, СУБД использует особый объект, называемый индексом.

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

Хранимые процедуры

Хранимые процедуры [2]– это именованные блоки кода SQL, которые заранее откомпилированы и хранятся на сервере для того, чтобы быстро производить выполнение запросов, валидацию данных и выполнять другие часто вызываемые функции.

Для создания и редактирования хранимых процедур ERwin располагает специальными редакторами. Хранимая процедура не выполняется в ответ на какое-то событие, а вызывается из другой программы, которая передаёт на сервер имя процедуры. Хранимая процедура более гибка, чем триггер, поскольку может вызывать другие хранимые процедуры. Ей можно передавать параметры, и она может возвращать параметры, значения и сообщения.

ERwin не имеет встроенных шаблонов хранимых процедур, которые можно было бы использовать как основу при создании новой хранимой процедуры. Для создания или редактирования хранимой процедуры следует щёлкнуть правой кнопкой мыши по таблице и выбрать в каскадном меню пункт Table Editor/Stored Procedure. Появляется закладка Stored Procedure диалога Table Editor. Список Attached SP Template содержит имена процедур, связанных с редактируемой таблицей. Список Unattached SP Template содержит имена процедур, которые могут быть связаны с таблицей. Кнопка SP Template вызывает диалог, в котором можно просмотреть и отредактировать код процедуры, включающий SQL-команды и макросы Erwin [2].

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]