Автор работы: Пользователь скрыл имя, 19 Декабря 2012 в 16:47, лекция
База данных (БД) - это совокупность интегрированных, не дублированных и логически взаимосвязанных данных, организованных на машинном носителе средствами СУБД в соответствии со структурами данных и моделью, которые она поддерживает. Создание базы - определение её структуры, загрузка и корректировка данных, а также многоаспектный доступ обеспечиваются эффективными средствами СУБД. На основе данных из БД могут решаться все задачи ИС. БД, как правило, отражает некоторую логическую модель взаимосвязанных информационных объектов, представляющих конкретную предметную область.
Установка пустого значения: атрибуты внешнего ключа в дочерней таблице устанавливаются в NULL при удалении соответствующих записей из родительской таблицы.
назад | содержание | далее
4.3. CASE-средство ERwin
ERwin разработан компанией Logic Works, которая в 1988 году была приобретена фирмой Platinum Technologies, а ее, в свою очередь, приобрела компания Computer Associates. Этот продукт в течение последних десяти лет занимает лидирующие позиции среди средств проектирования данных.
ERwin представляет собой специализированное средство проектирования данных. Его применение предполагает, что моделирование бизнес-процессов и потоков данных производится с помощью других продуктов (например, BPwin), c которыми можно осуществлять обмен сведениями о моделях.
ERwin не ориентирован на какую-то конкретную СУБД и поддерживает более 20 типов СУБД, включая СУБД всех ведущих производителей серверов баз данных (Oracle, Sybase, Microsoft, IBM, Informix), а также все популярные форматы настольных СУБД (включая dBase, Clipper, FoxPro, Access, Paradox). ERwin остается одним из самых популярных в мире продуктов этого класса благодаря поддержке большого количества платформ, простоте интерфейса и, что немаловажно, поддержке специфических особенностей организации физической памяти наиболее популярных серверных СУБД. Например, для СУБД Oracle, Microsoft SQL Server, Sybase этот продукт позволяет изменять местоположение и параметры хранения индексов, почти для всех популярных серверных СУБД создавать кластеризованные индексы и для многих из них — указывать характеристики табличных пространств и сегментов отката.
ERwin обладает встроенным макроязыком для написания в процессе логического проектирования не зависящих от СУБД шаблонов серверного кода, а также готовыми шаблонами для генерации триггеров, реализующих стандартные действия (например, каскадное удаление). При необходимости можно создавать и свои шаблоны триггеров, используя этот язык, причем каждая таблица может иметь свой набор шаблонов. При создании физической модели шаблоны преобразуются в код на процедурном расширении SQL того сервера, для которого создается физическая модель. Логическая и физическая модели ERwin хранятся в одном файле.
ERwin поддерживает обмен моделями с репозитарием Designer/2000 и Microsoft Repository, а также генерацию клиентских приложений для Delphi, Visual Basic и PowerBuilder.
Помимо однопользовательской работы ERwin может выступать в роли клиентского приложения для другого CASE-средства — ModelMart, которое позволяет организовать коллективную разработку моделей данных, предоставляя для этой цели разделяемый репозитарий, хранящийся в одной из серверных СУБД.
Недавно компанией Computer Associates был выпущен новый продукт — ERwin Examiner, представляющий собой инструмент проверки баз данных и DDL-скриптов с целью выявления ошибок проектирования данных, сказывающихся на целостности данных и производительности сервера, таких, например, как ошибки нормализации, противоречивые ключи и т.д. В результате проверки ERwin Examiner предлагает способы устранения найденных ошибок, генерируя соответствующие DDL-скрипты.
ERwin имеет развитый иструмент для облегчения проектирования модели данных. Интерфейс выполнен в стиле Windows-приложений, достаточно прост и интуитивно понятен. В дальнейшем будет описан интерфейс версии 3.5. Кнопки панели инструментов описаны в таблице 5.
Таблица 5 - Кнопки панели инструментов
Кнопки |
Функция |
Создание, открытие, сохранение и печать модели. | |
Вызов диалога Report Browser для генерации отчетов. | |
Изменение уровня просмотра
модели: уровень сущностей, уровень
атрибутов и уровень | |
Изменение масштаба просмотра модели. | |
Генерация схемы БД, выравнивание схемы с моделью и выбор сервера (доступны только на уровне физической модели) | |
Вызов дополнительной панели инструментов для работы с репозиторием Model Mart. (Работа с Model Mart будет рассмотрена в следующей статье). | |
Переключение между областями модели - Subject Area. |
Для создания моделей данных в ERwin можно использовать две нотации: IDEF1X и IE (Information Engineering). В примерах будет использоваться нотация IDEF1X. Для внесения сущности в модель необходимо (убедившись предварительно, что Вы находитесь на уровне логической модели - переключателем между логической и физической моделью служит раскрывающийся список в правой части панели инструментов) кликнуть по кнопке сущности на панели инструментов (ERwin Toolbox) , затем кликнуть по тому месту на диаграмме, где Вы хотите расположить новую сущность. Кликнув правой кнопкой мыши по сущности и выбрав из всплывающего меню пункт Entity Editor... можно вызвать диалог Entity Editor (рисунок 26), в котором определяются имя, описание и комментарии сущности.
Рисунок 26 - Диалог Entity Editor
Каждая сущность должна быть полностью определена с помощью текстового описания в закладке Definition. Закладки Note, Note2, Note3, UDP (User Defined Properties - Свойства, Определенные Пользователем) служат для внесения дополнительных комментариев и определений сущности. В закладке Icon каждой сущности можно поставить в соответствие изображение (файл bmp), которое будет отображаться в режиме просмотра модели на уровне иконок (см. ниже).
Каждый атрибут хранит информацию об определенном свойстве сущности. Каждый экземпляр сущности должен быть уникальным. Атрибут или группа атрибутов, которые идентифицируют сущность, называется первичным ключом. Для описания атрибутов следует, кликнув правой кнопкой по сущности, выбрать в появившемся меню пункт Attribute Editor. Появляется диалог Attribute Editor (рисунок 27).
Рисунок 27 - Диалог Attribute Editor
Кликнув по кнопке New..., в появившемся диалоге New Attribute следует указать имя атрибута, имя соответствующей ему колонки и домен. Домен атрибута будет использоваться при определении типа колонки на уровне физической модели (подробнее о доменах см. в статье "ERwin расширяет свои возможности", Компьютер Пресс, 3, 1998). Для атрибутов первичного ключа в закладке Key Group диалога Attribute Editor необходимо сделать пометку в окне выбора Primary Key. При определении первичного ключа может быть рассмотрено несколько наборов атрибутов. Такие наборы называются потенциальными ключами. Например, если рассматривается сущность "Сотрудник", такими наборами могут быть:
- Имя, Фамилия, Отчество, Дата рождения
- Номер паспорта
- Табельный номер
- Отдел
К первичным ключам предъявляются определенные требования. Первичный ключ должен однозначно идентифицировать экземпляр сущности (этому требованию не удовлетворяет четвертый ключ, поскольку он может идентифицировать группу сотрудников, работающих в определенном отделе, но не каждого сотрудника). Первичный ключ должен быть компактен, то есть удаление любого атрибута из состава первичного ключа должно приводить к потере уникальности экземпляра сущности (если удалить Дату рождения из первого ключа, то невозможно будет идентифицировать полных тезок). Каждый атрибут из состава первичного ключа не должен принимать NULL - значений (например, если принять в качестве первичного ключа номер паспорта, необходимо быть уверенным, что все сотрудники имеют паспорта). Каждый атрибут первичного ключа не должен менять свое значение в течение всего времени существования экземпляра сущности (сотрудник может сменить фамилию и паспорт, поэтому первый и второй потенциальные ключи не могут стать первичными). Потенциальные ключи, не ставшие первичными, называются альтернативными. Атрибуты, или наборы атрибутов, использующиеся для доступа к группе экземпляров сущности, называются инверсионными ключами. Для описания альтернативных и инверсионных ключей необходимо кликнуть по кнопке ... (диалог Attribute Editor, закладка Key Group) и в появившемся диалоге закладка Key Group Editor (рисунок 28) создать новую ключевую группу (либо инверсионную, либо альтернативную) и указать, какие атрибуты входят в ту или иную группу.
Рисунок 28 - Диалог Key Group Editor
ERwin имеет несколько уровней отображения диаграммы. Преключиться между ними можно кликнув по любому месту диаграммы, не занятому объектами модели и выбрав в появившемся меню пункт Display Level. В таблице 6 показаны уровни отображения модели.
Таблица 6 - Уровни отображения модели
Сущности Entity |
Атрибуты Attribute |
Первичный ключ Primary Key |
Определение Definition |
Иконки Icon |
|
|
|
|
|
На уровне атрибутов атрибуты альтернативного ключа помечаются номером (AKm.n), где m - номер ключа, n - номер атрибута в ключе. Инверсионные ключи помечаются номером (IEm.n). В дальнейшем при генерации БД на атрибутах альтернативных ключей могут быть сгенерированы уникальные индексы, на атрибутах инверсионного ключа - неуникальные. Имена индексов задаются в диалоге New Key Group (рисунок 28). Атрибуты первичного ключа отображаются выше горизонтальной линии - прочие атрибуты - ниже.
К модели данных предъявляются определенные требования, называемые нормальными формами. Процесс приведения к нормальным формам называется нормализацией. Так, первая нормальная форма требует, чтобы все атрибуты были атомарными (не должно быть атрибута "Адрес" - должны быть атрибуты "Индекс", "Страна", "Область", "Город", "Улица", "Дом", "Квартира"). Вторая нормальная форма требует, чтобы каждый неключевой атрибут зависел от всего первичного ключа, не должно быть зависимости от части ключа. Для приведения ко второй нормальной форме необходимо создать новую сущность, перенести в нее атрибуты, зависящие от части ключа, сделать часть ключа первичным ключом новой сущности и установить идентифицирующую связь (см. ниже) от новой сущности к старой. Например, в сущности "Сотрудник" (слева на рисунке 29) атрибут "Руководитель отдела" зависит от "Наименования отдела". Справа изображены сущности, приведенные ко второй нормальной форме. Для установки связи между сущностями нужно воспользоваться кнопками в палитре инструментов.
Рисунок 29 - Иллюстрация второй нормальной формы
На логическом уровне можно установить идентифицирующую связь один ко многим, связь многие ко многим и неидентифицирующую связь один ко многим (соответственно кнопки - слева направо в палитре инструментов).
Идентифицирующая связь
Для редактирования свойств связи следует кликнуть правой кнопкой мыши по связи и выбрать на контекстном меню пункт Relationship Editor. В появившемся диалоге (рисунок 30) можно задать:
Рисунок 30 - Диалог Relationship Editor
- Мощность (cardinality) связи - служит для обозначения отношения числа экземпляров родительской сущности к числу экземпляров дочерней.
- Verb Phrase - фраза, характеризующая отношение между родительской и дочерней сущностями.
- Тип связи (идентифицирующая / не идентифицирующая).
- Описание связи.
- Правила ссылочной целостности
(будут сгенерированы при
- Имя роли. Имя роли - это синоним
атрибута внешнего ключа,
При переносе атрибутов внутри и между сущностями можно воспользоваться техникой "drag & drop", выбрав кнопку в палитре инструментов.
Связь многие ко многим возможна только на уровне логической модели данных. При переходе к физическому уровню ERwin автоматически преобразует связь многие ко многим, добавляя новую, ассоциативную сущность и устанавливая две новые связи один ко многим от старых к новой сущности (рисунок 31).
Рисунок 31 - Иллюстрация разрешения связи многие ко многим
Следует заметить, что автоматического решения проблемы связи многие ко многим не всегда оказывается достаточно. В данном примере один и тот же пациент может много раз посещать врача, поэтому для того, чтобы идентифицировать визит необходимо в состав первичного ключа таблицы "Пациент_Врач" добавить, например, дату-время посещения. Иерархия категорий представляет собой особый тип объединения сущностей, которые разделяют общие характеристики. Например, в организации работают служащие, занятые полный рабочий день, совместители и консультанты. Из их общих свойств можно сформировать обобщенную сущность (родовой предок), чтобы представить информацию общую для всех типов служащих. Специфическая для каждого типа информация может быть расположена в категориальных сущностях. Для моделирования категорий служит кнопка в палитре инструментов. Для каждой категории можно указать дискриминатор - атрибут родового предка, который показывает как отличить одну категориальную сущность от другой (Атрибут "Тип" на рисунке 32).
Рисунок 32 - Иерархия категорий
При создании реальных моделей данных количество сущностей и атрибутов может исчисляться сотнями. Для более удобной работы с большими моделями в ERwin'е предусмотрены предметные области (Subject Area), в которые можно включить тематически общие сущности. Для создания предметных областей нужно вызвать диалог Subject Area Editor (меню Edit/ Subject Area...), в котором указывается имя предметной области и входящие в нее сущности. Все изменения, сделанные в предметной области, автоматически отображаются на общей модели (рисунок 33).