Текст книги "BPwin и Erwin. CASE-средства для разработки информационных систем"
Автор книги: Сергей Маклаков
Жанр:
Базы данных
сообщить о нарушении
Текущая страница: 8 (всего у книги 14 страниц)
Домен можно определить как совокупность значений, из которых берутся значения атрибутов. Каждый атрибут может быть определен только на одном домене, но на каждом домене может быть определено множество атрибутов. В понятие домена входит не только тип данных, но и область значений данных. Например, можно определить домен «Возраст» как положительное целое число и определить атрибут Возраст сотрудника как принадлежащий этому домену.
В ERwin домен может быть определен только один раз и использоваться как в логической, так и в физической модели.
Домены позволяют облегчить работу с данными как разработчикам на этапе проектирования, так и администраторам БД на этапе эксплуатации системы. На логическом уровне домены можно описать без конкретных физических свойств. На физическом уровне они автоматически получают специфические свойства, которые можно изменить вручную. Так, домен "Возраст" может иметь на логическом уровне тип Number, на физическом уровне колонкам домена будет присвоен тип INTEGER.
Для создания домена в логической модели служит диалог Domain Dictionary Editor, (рис. 2.55). Его можно вызвать из меню Edit/Domain Dictionary по кнопке, расположенной в верхней левой части закладки General диалога Attribute Editor (см. рис. 2.14). Для создания нового домена в диалоге Domain Dictionary Editor следует:
Рис. 2.55. Диалог Domain Dictionary Editor
щелкнуть по кнопке New. Появляется диалог New Domain (рис. 2.56);
выбрать родительский домен из списка Domain Parent. Новый домен можно создать на основе уже созданного пользователем домена либо на основе изначально существующего. По умолчанию ERwin имеет четыре предопределенных домена (String, Number, Blob, Datetime). Новый домен наследует все свойства родительского домена. Эти свойства в дальнейшем можно переопределить;
набрать имя домена в поле Logical Name. Можно также указать имя домена на физическом уровне в поле Physical Name. Если физическое имя не указано, по умолчанию оно принимает значение логического имени;
щелкнуть по кнопке ОК.
В диалоге Domain Dictionary Editor можно связать домен и иконкой, с которой он будет отображаться в списке доменов (Domain Icon), и иконкой, с которой атрибут, определенный на домене, будет отображаться в модели (Icon Inherited by Attribite).
Рис. 2.56. Диалог New Domain
Каждый домен может быть описан в закладке Definition, снабжен комментарием в закладке Note или свойством, определенным пользователем в закладке UDP.
Рис. 2.57. Создание нового атрибута с помощью диалога Independent Attribute Browser
ERwin имеет специальный инструмент, который значительно облегчает создание новых атрибутов в модели, используя описание доменов, -Independent Attribute Browser. Этот диалог вызывается (и скрывается) по горячему ключу CTRL+B. С его помощью можно выбрать в списке домен и по методу drag&drop перенести его в какую-либо сущность. В ней будет создан новый атрибут с именем, которое следует задать в окне Name Inherited by Attribite диалога Domain Dictionary Editor. Если значение поля не задано, по умолчанию принимается имя домена. На рис. 2.57 для домена «Возраст» значение этого поля было «Атрибут Возраст». В дальнейшем в случае необходимости имя атрибута .можно изменить.
Рис. 2.58. Диалог Domain Dictionary Editor на физическом уровне
На физическом уровне диалог Domain Dictionary Editor позволяет редактировать физические свойства домена. На рис. 2.58 показана закладка ORACLE. Имя этой закладки зависит от выбранного сервера БД. На ней можно задать конкретный тип данных, соответствующих домену, правила присвоения NULL-значений, правила валидации (правила проверки допустимых значений) и задания значения по умолчанию. Правила валидации и значения по умолчанию должны быть предварительно описаны и именованы так, как это описано в 2.3.4 (на рис. 2.58 для домена «Возраст» заданы соответственно правило валидации «Проверка_возраста» и значение по умолчанию «Возраст по умолчанию»). Для вызова диалогов редактирования правил валидации и значений по умолчанию служат кнопки “…” справа от соответствующего списка выбора (Valid и Default).
Рассмотрим функции других закладок диалога Domain Dictionary Editor:
General (рис. 2.59). Задание родительского домена (Domain Parent) и имени, присваиваемого колонке при ее создании с помощью Independent Column Browser. С помощью опции Physical Only домен можно определить только на уровне физической модели.
Comment. Внесение комментария к атрибуту.
UDP. Свойства, определяемые пользователем.
Visual Basic – PowerBuilder. Задание специальных свойств домена для кодогенерации клиентского приложения.
Рис. 2.59. Закладка General диалога Domain Dictionary Editor
Домены могут быть использованы при генерации схемы БД для создания типов, определяемых пользователем для тех СУБД, которые поддерживают такие конструкции (DB2, Rdb, Inteibase, SQL Anywhere, SQL Server и SYBASE). Типы, определяемые пользователем, представляют собой синонимы существующих в БД типов, создаваемых для удобства работы с данными.
При выборе соответствующего сервера на закладке General появляется флажок:
Distinct Types - для DB2/CS и DB2/UDB;
Domains - для Rdb и Inteibase;
User Datatypes - для SQL Anywhere, SQL Server и SYBASE.
Для создания типов, определяемых пользователем, необходимо включить соответствующую опцию. При генерации схемы БД колонки, определенные на соответствующем домене, будут иметь тип, определяемый пользователем.
2.3. Создание физической модели данных
2.3.1. Уровни физической моделиРазличают два уровня физической модели:
трансформационная модель (Transformation Model);
модель СУБД (DBMS Model).
Физическая модель содержит всю информацию, необходимую для реализации конкретной БД. Трансформационная модель содержит информацию для реализации отдельного проекта, который может быть частью общей ИС и описывать подмножество предметной области. ERwin поддерживает ведение отдельных проектов, позволяя проектировщику выделять подмножество модели в виде предметных областей (Subject Area). Трансформационная модель позволяет проектировщикам и администраторам БД лучше представлять, какие объекты БД хранятся в словаре данных, и проверить, насколько физическая модель данных удовлетворяет требованиям к ИС.
Модель СУБД автоматически генерируется из трансформационной модели и является точным отображением системного каталога СУБД. ERwin непосредственно поддерживает эту модель путем генерации системного каталога.
2.3.2. Выбор сервера
Физический уровень представления модели зависит от выбранного сервера. Для выбора СУБД служит редактор Target Server (меню Server/Target Server... доступно только на физическом уровне) (рис. 2.60).
ERwin поддерживает практически все распространенные СУБД, всего более 20 реляционных и нереляционных БД. Для выбора СУБД нужно щелкнуть по соответствующей кнопке рядом с именем СУБД.
Диалог Target Server позволяет задать тип данных и опцию NULL для новых колонок, а также правила ссылочной целостности, принимаемые по умолчанию. Тип данных можно выбрать в раскрывающемся списке Default Datatype, который автоматически заполняется типами данных, поддерживаемых выбранным сервером. Установка правил ссылочной целостности по умолчанию была рассмотрена в 2.2.3.
Группа кнопок Default Non-Key Null Option позволяет разрешить или запретить значения NULL для неключевых колонок.
Окно выбора Allow special chars in names позволяет разрешить или запретить использование специальных символов и пробелов в именах таблиц. Эта опция действует только для тех СУБД, которые поддерживают использование специальных символов.
Рис. 2.60. Диалог Target Server
По умолчанию ERwin генерирует имена таблиц и индексов по шаблону на основе имен соответствующих сущностей и ключей логической модели. Окна Table Name Macro и Index Name Macro позволяют изменить шаблон генерации имен, заданный по умолчанию. В дальнейшем имена таблиц и индексов можно изменить вручную.
Кнопка Reset Names вызывает диалог Globally Reset DBMS Property (рис. 2.61), который позволяет заменить все имена таблиц, связей, индексов, колонок и соответствующих свойств, заданных вручную, на значения по умолчанию.
Имена таблиц и колонок по умолчанию будут сгенерированы на основе имен сущностей и атрибутов логической модели. Если в имени сущности или атрибута встречается пробел, он будет заменен на символ "_".
При смене СУБД ERwin предлагает автоматически преобразовать тип данных, связанный с каждым атрибутом, на ближайший, доступный для новой СУБД. Для автоматического преобразования следует в ответ на запрос нажать Yes.
Рис. 2.61. Диалог Globally Reset DBMS Property
2.3.3. Таблицы, колонки и представления (view)
Для внесения новой таблицы в модель на физическом уровне служит кнопка на палитре инструментов. Связи между таблицами создаются так же, как на логическом уровне. Щелкнув правой клавишей мыши по таблице и выбрав во всплывающем меню пункты Table Editor или Column Editor, можно вызвать редакторы для задания свойств таблиц и колонок.
ERwin автоматически создает имена таблиц и колонок на основе имен соответствующих сущностей и атрибутов, учитывая максимальную длину имени и другие синтаксические ограничения, накладываемые СУБД. При генерации имени таблицы или колонки по умолчанию все пробелы автоматически преобразуются в символы подчеркивания, а длина имени обрезается до максимальной длины, допустимой для выбранной СУБД. Все изменения, сделанные в Table Editor или Column Editor, не отражаются на именах сущностей и атрибутов, поскольку информация на логическом и физическом уровнях в ERwin хранится отдельно.
Редактор Table Editor позволяет задать свойства любой таблицы модели, отличные от значения по умолчанию, в том числе имя таблицы, синонимы, правила валидации, процедуры и т. д. Переключиться на другую таблицу можно при помощи раскрывающегося списка выбора в верхней части диалога (рис. 2.62).
Рис. 2.62. Диалог Table Editor
Окно Name служит для задания имени текущей таблицы. Окно Owner позволяет внести имя владельца таблицы, отличное от имени пользователя, производящего генерацию схемы БД. Окно выбора Physical Only служит для создания объектов только на физическом уровне. Если выбрана опция Generate, при генерации схемы БД будет выполняться команда CREATE TABLE. Кнопка DB Sync служит для немедленной синхронизации модели с системным каталогом БД.
Диалог Table Editor содержит следующие закладки:
Dimensional. Доступна только на уровне моделирования хранилищ данных (Dimensional Modeling) и будет рассмотрена ниже.
Comment. Внесение комментария к таблице.
Volumetrics. Служит для оценки размера БД.
Physical Props. Позволяет задать физические свойства таблицы.
Partitions. Служит для задания значений разделения. Доступна только для Oracle 8.x.
UDP. Задание свойств, определяемых пользователем.
Validation. Задание правил валидации.
Synonym. Задание синонимов таблицы (если сервер таковые поддерживает).
Stored Procedure. Связывание с таблицей хранимых процедур.
Pre & Post Script. Создание скриптов (наборов команд), которые будут выполняться до и после создания таблицы при генерации схемы БД.
PowerBuilder. Задание расширенных атрибутов для генерации кода клиентского приложения на PowerBuilder.
Для задания свойств колонок, отличных от значения по умолчанию, служит редактор Column Editor (рис. 2.63). Чтобы вызвать его, нужно щелкнуть правой клавишей мыши по таблице и выбрать во всплывающем меню пункт Column Editor.
По умолчанию ERwin присваивает режимы нулевых значений всем неключевым колонкам, исходя из значений по умолчанию, устанавливаемых в редакторе Target Server. Для колонок первичного ключа и альтернативных ключей .устанавливается режим NOT NULL. Режим NOT NULL не присваивается автоматически инверсионным входам (Inversion Entry).
Рис. 2.63. Диалог Column Editor
Внешне диалог Column Editor напоминает диалог Attribute Editor (см. рис. 2.14). В правой части диалога находятся закладки:
General. Позволяет присвоить колонку определенному домену, создать колонку только на физическом уровне и включить ее в состав первичного ключа.
Закладка, соответствующая выбранной СУБД (на рис. 2.63 и 2.64 -ORACLE). Имя закладки устанавливается автоматически соответствующей выбранной СУБД. Позволяет задать тип данных, опцию NULL, правила валидации и значение по умолчанию. Правила валидации и значение по умолчанию должны быть описаны и именованы предварительно соответственно в диалогах Validation Rule Editor и Default/Initial Eritor. Для вызова этих диалогов служат кнопки !!! справа от соответствующих раскрывающихся списков. Для СУБД Access, AS/400, PROGRESS и Teradata создаются дополнительные закладки для задания свойств.
Рис. 2.64. Закладка СУБД диалога Column Editor
Comment. Служит для внесения комментария к каждой колонке.
UDP. Задание свойств, определяемых пользователем.
Data Source. Доступна только при моделировании хранилищ данных (см. ниже).
Index. Служит для включения колонки в состав индексов.
Visual Basic и PowerBuilder. Задание расширенных атрибутов для генерации кода клиентского приложения.
В левой части диалога содержится упорядоченный список колонок таблицы. Кнопки “ ”, “ ” предназначены для перемещения колонки в списке на позицию вверх и вниз. Кнопки New, Rename и Delete служат соответственно для создания, переименования и удаления колонки. При помощи кнопки Reset можно переустановить свойства колонки, заданные вручную, на значения по умолчанию. Кнопка DB Sync позволяет запустить процесс синхронизации модели с системным каталогом БД.
При создании связи колонки первичного ключа родительской таблицы мигрируют в состав колонок дочерней таблицы в качестве внешнего ключа. Кнопка Migrate вызывает диалог Migrate Column Property (рис. 2.65), который позволяет определять, какие характеристики мигрировавшей колонки будут сохранены в дочерней таблице.
Рис. 2.65. Диалог Migrate Column Property
Для переноса каких-либо характеристик колонки необходимо включить соответствующую опцию в диалоге Migrate Column Property, для отказа от переноса – выключить. Опциями диалога следует пользоваться осторожно, во-первых, потому, что новые свойства колонки перезаписывают старые, а во-вторых, поскольку установленные опции действуют в рамках всей диаграммы, а не только текущей таблицы. (Более подробно свойства таблиц и колонок будут рассмотрены ниже.)
Представления (view), или, как их иногда называют, временные или производные таблицы, представляют собой объекты БД, данные в которых не хранятся постоянно, как в таблице, а формируются динамически при обращении к представлению. Представление не может существовать само по себе, а определяется только в терминах одной или нескольких таблиц. Применение представлений позволяет разработчику БД обеспечить каждому пользователю или группе пользователей свой взгляд на данные, что решает проблемы простоты использования и безопасности данных. ERwin имеет специальные инструменты для создания и редактирования представлений. Палитра инструментов на физическом уровне (см. рис. 2.3) содержит кнопки внесения представлений и установления связей между таблицами и представлениями. Для внесения представления нужно щелкнуть по кнопке в палитре инструментов, затем по свободному месту диаграммы. По умолчанию представление получает номер V_n, где n – уникальный порядковый номер представления. Для установления связи нужно щелкнуть по кнопке затем по родительской таблице и, наконец, по представлению (рис. 2.66). Связи с представлениями и прямоугольники представлений показываются на диаграмме пунктирными линиями.
Рис. 2.66. Создание представления
Для редактирования представления служит диалог View Editor (рис. 2.67). Для его вызова следует щелкнуть правой кнопкой мыши по представлению и выбрать в меню пункт View Editor.
Рис. 2.67. Диалог View Editor
Раскрывающийся список View позволяет выбрать для редактирования любое представление модели. Окно Name служит для редактирования имени, а Owner-владельца представления.
Диалог View Editor имеет следующие закладки:
Select (рис. 2.67). Имеет два списка: в правом отображаются колонки представления, в левом – колонки доступные для включения в представление. Кнопка New Expression позволяет задать выражение в качестве выходного столбца. Например, для представления V_43 на рис. 2.66 в качестве колонок созданы City и выражение с именем "Количество_клиен-тов_в_городе", которое представляет собой агрегативную функцию, подсчитывающую количество строк, Count(*). По умолчанию при создании связи ERwin включает в представление все колонки родительских таблиц.
From. Позволяет выбрать родительские таблицы представления. По умолчанию включаются таблицы, с которыми связано представление. Каждой таблице можно задать синоним (поле Alias), который будет использоваться при создании SQL-команды создания представления.
Where. Закладка содержит три поля – Where, Group By и Having. На основе этой информации Erwin генерирует SQL-команду создания представления, причем на основе содержания этих полей генерируются предложения SQL-запроса. Для представления V_43 в поле Where содержатся значения "Соип1гу='Россия"', Group By – "City", Having – "Count(*)>2". В результате представление будет содержать информацию о количестве клиентов в российских городах, при условии, что количество клиентов в этих городах больше двух.
SQL. Закладка содержит поле, в котором отображается SQL-запрос создания представления и окно выбора User-Defined SQL. По умолчанию опция User-Defined SQL выключена, и SQL-запрос генерируется автоматически на основе информации, занесенной в закладках Select, From и Where. Запрос можно задать вручную, включив эту опцию, но в этом случае список полей и связи представления на диаграмме отображаться не будут. Для представления V_42 на рис. 2.66 SQL-запрос будет выглядеть так:
"CREATE VIEW V_42 (CustomerName, CustomerAddress, City, OrderAmount, OrderDate,
OrderShipDate)AS
SELECT DISTINCT CUSTOMER.CustomerName, CUSTOMER.CustomerAddress, CUSTOMER.City,
ORDER.OrderAmount, ORDER.OrderDate, ORDER.OrderShipDate
FROM CUSTOMER, ORDER",
а для V_43 – так:
"CREATE VIEW V_43 (City, CustomerCount) AS
SELECT CUSTOMER.City, Countf)
FROM CUSTOMER
WHERE Country= Россия'
GROUP BY City
HAVING Count(*)>2"
В закладке Comment можно внести комментарий для представления.
Stored Procedure позволяет связать с представлением хранимые процедуры.
Pre and Post Script позволяет связать с представлением команды, выполняемые до и после генерации представления.
PowerBuflder служит для внесения расширенных атрибутов для генерации кода клиентского приложения на PowerBuilder.
UDP позволяет связать с представлением свойства, определяемые пользователем.
Для редактирования свойств колонок представления служит редактор View Column Editor (рис. 2.68). Для его вызова следует щелкнуть правой кнопкой мыши по представлению и выбрать в меню пункт View Column Editor.
Рис. 2.68. Диалог View Column Editor
Редактор содержит следующие закладки:
General. Позволяет ассоциировать колонку с доменом. По умолчанию колонка представления принадлежит тому же домену, что и колонка родительской таблицы.
Select. Так же как в диалоге View Editor (закладка Select, кнопка New Expression), здесь можно создать выражение (в том числе включающее аг-регативные функции) для колонки.
AS/400 или Access. Используются для задания специфических свойств колонок представлений в AS/400 или Access.
Comment содержит комментарий для каждой колонки.
UDP позволяет связать с колонкой свойства, определяемые пользователем.
Data Source. Позволяет связать источник данных с колонкой при проектировании хранилищ данных.
PowerBuilder или Visual Basic. Служит для внесения расширенных атрибутов для генерации кода клиентского приложения на PowerBuilder или Visual Basic.
2.3.4. Правила валидации и значения по умолчанию
ERwin поддерживает правила валидации для колонок, а также значение, присваеваемое колонкам по умолчанию. Правило валидации задает список допустимых значений для конкретной колонки и/или правила проверки допустимых значений. Значение по умолчанию – значение, которое нужно ввести в колонку, если никакое другое значение не задано явным образом во время ввода данных. С каждой колонкой или доменом можно связать значение по умолчанию (если выбранная СУБД поддерживает домены).
Если щелкнуть по кнопке “…”, расположенной справа от раскрывающегося списка Valid (см. рис. 2.64), появляется диалог Validation Rule Editor (рис. 2.69), который служит для задания правил валидации. В нем можно задать максимальное и минимальное значение и тип валидации (где проверять – на сервере или в клиентском приложении).
Например, в таблице CUSTOMER значение, вводимое в колонку. Age, должно быть больше 18, но меньше 180. Для описания этого правила можно создать правило валидации с именем "Проверка_возраста", которое содержит выражение: Age BETWEEN 18 AND 180. Использование этого правила валидации гарантирует, что диапазон вводимых значений будет от 18 до 180. СУБД выдаст сообщение об ошибке, если вводимый возраст находится вне границ заданного диапазона.
В верхней части редактора Validation Rule содержится список всех существующих правил валидации. Для создания нового правила валидации следует щелкнуть по кнопке New, ввести имя правила в поле Name диалога New Validation и щелкнуть по кнопке ОК. После этого можно ввести выражение для правила валидации. Поля Min и Мах служат для задания нижней и верхней границы диапазона значения.
Рис. 2.69. Диалог Validation Rule Editor
Кнопка Valid Value вызывает редактор Valid Value (рис. 2.70). Редактор Valid Value позволяет создавать список всех допустимых значений, которые можно хранить в колонке, и связать его с правилом валидации. Например если в таблице CUSTOMER имеется колонка Category, то можно задать список допустимых значений для соответствующей колонки, который может содержать значения «Местный», «Иногородний» и «Иностранный».
Раскрывающийся список в верхней части редактора Valid Value содержит все правила, валидации. Чтобы ввести новое значение в список допустимых значений, нужно щелкнуть по кнопке New и ввести значение. Если включить опцию Copy (окно выбора в верхней части редактора), новому правилу будет присвоен список допустимых значений или диапазон, связанный с имеющимся правилом валидации. В нижнем окне диалога Valid Value можно ввести определение для каждого значения. Чтобы изменить имеющееся значение, нужно щелкнуть по кнопке Update. Для удаления значения служит кнопка Delete. Изменить порядок значений в списке можно либо пользуясь методом drag&drop, либо при помощи кнопки Sort. В последнем случае значения будут отсортированы по возрастанию.
При выходе из редактора Valid Value (кнопка OK) ERwin автоматически изменяет правило валидации, используя введенные допустимые значения, например "%AttFieldName IN ('Местный', 'Иногородний', 'Иностранный')".'
Кнопка Set Expr диалога Validation Rule Editor позволяет сгенерировать правила валидации соответственно синтаксису выбранной СУБД с учетом границ диапазона или списка значений.
По умолчанию ERwin создает выражение – команду языка СУБД, используя значения, связанные с правилом валидации, и разделяя значения запятыми (например, С, D, М). В некоторых случаях правила синтаксиса СУБД требуют, чтобы каждое значение в команде заключалось в одинарные кавычки ('С', 'D', 'М'). Чтобы автоматически заключить каждое значение в одинарные кавычки, нужно включить опцию Quote.
Рис. 2.70. Диалог Valid Value Editor
Диалог Validation Rule Editor содержит также две закладки, в которых отображается текст правил валидации, генерируемый ERwin на сервере и для клиентского приложения (рис. 2.71).
На рис. 2.70 в качестве клиента выбран PowerBuilder. На закладке отображается текст правила валидации Client expression, текст ошибки РВ Error Msg, тип значения РВ Type и кнопка генерации кода клиентской части РВ Sync.
Рис. 2.71. Закладка PowerBuilder диалога Validation Rule Editor
Редактор Default/Initial Editor (рис. 2.72) позволяет создать значение, которое автоматически, по умолчанию, присваивается колонке. Для вызова редактора служит кнопка “…” справа от раскрывающегося списка Default диалога Column Editor (см. рис. 2.64). Например, дате приема сотрудника может быть присвоено значение по умолчанию «сегодняшнее число», т. е. автоматически задается, что все новые сотрудники зачисляются в день ввода информации о них в БД.
Рис. 2.72. Диалог Default/Initial Editor
Для создания нового значения по умолчанию следует щелкнуть по кнопке New, ввести имя правила в поле Name диалога New Default и щелкнуть по кнопке ОК. В окне Default Name показывается список всех имен значений по умолчанию. Колонка Type в этом списке отображает тип значения – присваивать его на клиентской части и/или на сервере. Для удаления и переименования значения служат соответственно кнопки Delete и Rename.
Поля Client и Server служат для внесения значения для клиентской части и сервера.
После создания правила валидации и значения по умолчанию их можно присвоить одной или нескольким колонкам или доменам.