
- •Разработка приложений с помощью
- •Учебное пособие
- •Тема 1. Знакомство с оболочкой Access Запуск программы
- •Оболочка Access
- •Создание новой базы данных
- •Окно базы данных
- •Тема 2. Проектирование таблиц базы данных Создание базы данных
- •Создание таблиц
- •Определение полей таблицы
- •Задание свойств полей
- •Определение ключевого поля
- •Создание связей между таблицами.
- •Вопросы и упражнения
- •Тема 3. Ввод и редактирование записей
- •Ввод данных непосредственно в таблицу
- •Ввод данных с использованием поля со списком
- •Импортирование таблиц в свою базу данных
- •Пояснения.
- •Вопросы и упражнения
- •Тема 4. Создание простых форм
- •Автоматическое создание формы в столбец.
- •Создание формы в режиме мастера форм.
- •Создание формы в режиме конструктора
- •Вопросы и упражнения
- •Тема 5. Разработка сложных форм
- •Создание сложной формы.
- •Создание вычисляемых полей
- •Добавление управляющих элементов в форму.
- •Вопросы и упражнения
- •Тема 6. Создание запросов с помощью Мастера
- •Формирование простых запросов
- •Перекрестный запрос
- •Поиск повторяющихся записей
- •Поиск записей, не имеющих подчиненных
- •Вопросы и упражнения
- •Тема 7. Формирование запросов с помощью Конструктора
- •Конструирование запроса
- •Выполнение запроса
- •Ввод условий отбора
- •Сортировка записей в выборке
- •Проведение группировки и групповых вычислений
- •Вычисляемые поля в запросах
- •Запрос с параметрами
- •Запрос на обновление
- •Основы sql
- •Вопросы и упражнения
- •Тема 8. Создание макросов
- •Создание макроса
- •Примеры макросов
- •Макрос: Макрос2
- •Отладка макросов
- •Вопросы и упражнения
- •Тема 9. Проектирование выходных документов с помощью отчетов
- •Разделы отчета
- •Создание отчета при помощи стандартного средства Отчет
- •Создание отчета с помощью Мастера отчетов
- •Формирование отчета с помощью конструктора
- •Макрос: Формирование Книги продаж
- •Макрос: МакросФормир
- •Вопросы и упражнения
- •Тема 10. Создание главной кнопочной формы
- •10.20. Установка параметров для отображения главной кнопочной формы при запуске базы данных
- •Тема 11 Этапы разработки приложений
- •Индивидуальные практические задания
- •Задания повышенной сложности
- •Приложения Приложение 1. Моделирование баз данных с помощью пакета eRwin Основные функции пакета
- •Создание логической модели
- •Создание физической модели
- •Прямое и обратное проектирование
- •Создание отчетов в пакете Erwin
- •Приложение 2. Тесты
- •Словарь терминов
- •Список литературы
- •Оглавление
Приложения Приложение 1. Моделирование баз данных с помощью пакета eRwin Основные функции пакета
С помощью CASE-средств можно автоматизировать работу по созданию базы данных на основе созданных логической модели и физической моделей данных.
ERwin – это программное средство, использующее методологию IDEF1X для концептуального моделирования баз данных (БД). Пакет ERwin реализует проектирование схемы БД и генерацию ее описания на языке целевой СУБД (ORACLE, Informix, Ingres, Sybase, Access и др.), а также реинжиниринг существующей БД.
Возможны две точки зрения на информационную модель и, соответственно, два уровня модели (рис. П.1). Первый – логический уровень (точка зрения пользователя) – прямое отображение фактов из реальной жизни. Например, сотрудники, отделы, продукция и компьютеры являются реальными объектами. Они именуются на естественном языке, с любыми разделителями слов (пробелы, запятые и т.д.).
На физическом уровне модели рассматривается использование конкретной СУБД, определяются типы данных (например, целое или вещественное число), индексы для таблиц. ERwin предоставляет возможности создавать как логические, так и физические модели баз данных. При этом термин «логическая модель» соответствует концептуальной модели.
Рис. П.1. Диалоговое окно создания новой модели в ERwin
Этапы построения базы данных:
определение сущностей;
определение зависимостей между сущностями;
задание первичных и альтернативных ключей;
определение атрибутов сущностей;
приведение модели к требуемому уровню нормальной формы;
переход к физическому описанию модели: назначение соответствий «имя сущности – имя таблицы», «атрибут сущности – столбец таблицы»;
задание триггеров, процедур и ограничений;
генерация базы данных.
ERwin создает визуальное представление (модель данных) для решаемой задачи. Это представление может использоваться при детальном анализе, уточнении и распространении документации, необходимой в цикле разработки. Однако пакет ERwin – не только инструмент для рисования, он автоматически создает базу данных: таблицы, индексы, хранимые процедуры, триггеры для обеспечения ссылочной целостности и другие объекты, необходимые для управления данными.
Создание логической модели
Создание сущности
Для внесения
сущности в состав модели необходимо на
панели инструментов (ERwin Toolbox) щелкнуть
по кнопке
,
затем – по тому месту на диаграмме, где
необходимо расположить новую сущность.
Щелкнув правой кнопкой мыши по сущности
и выбрав из всплывающего меню пункт
Entity Editor, можно вызвать диалоговое окно
Entity Editor (рис. П.2), в котором указываются
имя, описание и комментарии сущности.
Рис. П.2. Диалоговое окно для определения сущности
Каждую сущность необходимо полностью определить с помощью текстового описания на закладке Definition. Такие определения полезны не только на логическом уровне, где они позволяют понять характер объекта, но и на физическом уровне, поскольку их можно экспортировать как часть схемы и использовать в реальной БД. Закладки Note, Note2, Note3, UDP (User Defined Properties – Свойства, определенные пользователем) служат для внесения дополнительных комментариев и определений к сущности.
На закладке Icon каждой сущности можно поставить в соответствие разные значки для ее отображения в режиме просмотра модели на уровне иконок и на всех других уровнях.
Закладка
UDP в диалоговом окне Entity Editor позволяет
указать свойства, определяемые
пользователем (User Defined Properties). При нажатии
на расположенную здесь кнопку
(вместо нее можно также воспользоваться
пунктом Edit/UDPs в главном меню) вызывается
диалоговое окно User Defined Property Editor.
Параметры символов для обозначения сущностей и атрибутов можно задать в диалоговом окне Default Fonts and Colors (рис. П.3), которое вызывается из контекстного меню (правой кнопкой мыши на свободном пространстве модели).
Рис. П.3. Диалоговое окно Default Fonts and Colors
Создание атрибутов
Для описания атрибутов следует после щелчка правой кнопкой мыши по сущности выбрать в появившемся меню пункт Attribute Editor. В результате откроется диалоговое окно Attribute (рис. П.4).
Рис. П.4. Диалоговое окно Attributes
При щелчке по кнопке New открывается диалоговое окно New Attribute (рис. П.5), где можно указать имя нового атрибута, имя соответствующей ему колонки в физической модели и домен, который будет использоваться при определении типа колонки на уровне этой модели.
Рис. П.5. Диалоговое окно для задания нового атрибута
Для атрибутов первичного ключа на закладке General в окне Attribute (рис. П.4) необходимо выбрать опцию Primary Key.
Закладки Definition, Note и UDP несут те же функции, что и при определении сущности, но на уровне атрибутов.
Для большей наглядности диаграммы с каждым атрибутом можно связать свою иконку. Это делается при помощи списка выбора Icon в закладке General.
Очень важно дать атрибуту правильное имя: атрибуты должны именоваться существительным в единственном числе и иметь четкое смысловое значение.
В соответствии с синтаксисом IDEF1X, имя атрибута должно быть уникальным не только в рамках сущности, но и по всей модели.
Тип связи (идентифицирующая/неидентифицирующая)
В IDEF1X различают зависимые и независимые сущности, причем тип сущности определяется ее связью с другими сущностями. Идентифицирующая связь устанавливается между независимой (родительский конец связи) и зависимой (дочерний конец связи) сущностями. Когда рисуется идентифицирующая связь, ERwin автоматически преобразует дочернюю сущность в зависимую (изображается прямоугольником со скругленными углами – рис. П.6).
Рис. П.6. Изображение сущностей и связи при построении логической модели
Экземпляр зависимой сущности определяется только через отношение к родительской сущности. При установлении идентифицирующей связи атрибуты первичного ключа родительской сущности автоматически переносятся в состав первичного ключа дочерней сущности. Эта операция дополнения атрибутов дочерней сущности при создании связи называется миграцией атрибутов. В дочерней сущности новые атрибуты помечаются как внешние ключи – (FK).
При установлении неидентифицирующей связи дочерняя сущность остается независимой, а атрибуты первичного ключа родительской сущности мигрируют в состав неключевых компонентов дочерней. Неидентифицирующая связь служит для связи независимых сущностей.
Идентифицирующая связь показывается на диаграмме сплошной линией с жирной точкой на дочернем конце связи, неидентифицирующая – пунктирной линией.
Для неидентифицирующей связи можно указать обязательность (опция Nulls на закладке General в диалоговом окне Relationship Editor). В случае обязательной связи (No Nulls) при генерации схемы БД атрибут внешнего ключа получит признак NOT NULL, несмотря на то, что внешний ключ не войдет в состав первичного ключа дочерней сущности. В случае необязательной связи (Nulls Allowed) внешний ключ может принимать значение NULL. Необязательная неидентифицирующая связь помечается прозрачным ромбом со стороны родительской сущности.
Создание связи
В
палитре инструментов (ERwin Toolbox) предусмотрены
следующие кнопки, которые позволяют
создавать новые связи:
– для идентифицирующей связи;
– для неидентифицирующей связи;
– для связи «многие-ко-многим». После
выбора соответствующей кнопки следует
щелкнуть сначала по родительской
сущности, а затем – по дочерней.
Чтобы произвести редактирование свойств связи, необходимо щелкнуть правой кнопкой мыши по линии связи и в контекстном меню выбрать пункт Relationship Editor. При этом открывается диалоговое окно, в котором закладка General позволяет задать мощность, имя и тип связи.
Мощность связи (Cardinality) обозначает отношение числа экземпляров родительской сущности к числу экземпляров дочерней.
Различают четыре типа мощности:
1) общий случай, когда одному экземпляру родительской сущности может соответствовать любое положительное число экземпляров дочерней сущности (не помечается никаким символом);
2) символом P помечается случай, когда одному экземпляру родительской сущности соответствует не менее одного экземпляра дочерней сущности (нулевое значение исключено);
3) символом Z помечается случай, когда одному экземпляру родительской сущности соответствует не более одного экземпляра дочерней сущности (множественные значения исключены);
4) цифрой помечается случай, когда одному экземпляру родительской сущности соответствует заранее заданное число экземпляров дочерней сущности.
По умолчанию символ, обозначающий мощность связи, на диаграмме не показывается. Для отображения этого символа следует вызвать контекстное меню щелчком правой кнопки мыши по любому месту диаграммы, не занятому объектами модели, выбрать пункт Display Options/Relationship и затем включить опцию Cardinality.
Имя связи (Verb Phrase) – это фраза, которая характеризует отношение между родительской и дочерней сущностями. Для идентифицирующей или неидентифицирующей связи «один-ко-многим» достаточно указать имя, характеризующее отношение родительской сущности к дочерней (Parent-to-Child). Для связи «многие-ко-многим» следует указывать имена как Parent-to-Child, так и Child-to-Parent. Чтобы на диаграмме все связи отображались вместе со своими именами (рис. П.6), следует в контекстном меню, которое появляется при щелчке правой кнопкой мыши по любому месту диаграммы, не занятому объектами модели, выбрать пункт Display Options/Relationship и затем включить опцию Verb Phrase.
Правила ссылочной целостности (Referential Integrity – RI)
Это логические конструкции, которые выражают бизнес-правила использования данных и представляют собой правила вставки, замены и удаления. Задать правила ссылочной целостности можно на закладке Rolename/RI Actions в диалоговом окне Relationship Editor.
При генерации схемы БД на основе этих опций логической модели будут сгенерированы правила декларативной ссылочной целостности, предписанные для каждой связи, и триггеры, обеспечивающие ссылочную целостность.
Связь «многие-ко-многим»
возможна только на уровне логической
модели данных. Такая связь обозначается
сплошной линией с двумя точками на
концах. Для внесения этой связи следует
сначала нажать кнопку
на палитре инструментов (ERwin Toolbox), а
затем по очереди щелкнуть по обеим
связываемым сущностям.
Чтобы облегчить чтение диаграммы, связь «многие-ко-многим» должна именоваться в обе стороны, т.е. двумя фразами (Verb Phrase).
Создание ключей
Каждый экземпляр сущности должен быть уникальным и отличаться от других экземпляров значениями своих атрибутов.
Первичный
ключ (primary
key) –
это атрибут или группа атрибутов,
однозначно идентифицирующих экземпляр
сущности. На диаграмме атрибуты первичного
ключа не требуют специального обозначения
– они находятся в списке атрибутов выше
горизонтальной линии. Если при внесении
нового атрибута нужно сделать его
атрибутом первичного ключа, то в
диалоговом окне Attribute Editor следует
включить флажок Primary Key в нижней части
закладки General. Ключевой атрибут можно
внести в состав первичного ключа и
непосредственно на диаграмме,
воспользовавшись операцией переноса
атрибутов (кнопка
в палитре инструментов).
В одной сущности может оказаться несколько атрибутов (или наборов атрибутов), претендующих на роль первичного ключа. Таких претендентов называют потенциальными ключами (candidate key). Многие сущности имеют только один потенциальный ключ, который и становится первичным. Некоторые сущности могут иметь более одного возможного ключа. Тогда один из них становится первичным, а остальные – альтернативными ключами. Альтернативный ключ (Alternative Key) – это потенциальный ключ, не ставший первичным.
Ключи могут быть сложными, т.е. содержащими несколько атрибутов. Сложные первичные ключи не требуют специального обозначения – это список атрибутов выше горизонтальной линии.
При выборе первичного ключа предпочтение должно отдаваться более простым ключам, т.е. ключам, содержащим меньшее количество атрибутов.
Каждому ключу соответствует индекс, имя которого также присваивается автоматически. Имена ключа и индекса при желании можно изменить вручную.
Внешние ключи (Foreign Key – FK) создаются автоматически при организации связей между сущностями, когда происходит так называемая миграция ключа и в дочерней сущности появляются ссылки на атрибуты первичного ключа. Эти новые атрибуты дочерней сущности образуют внешний ключ. Атрибуты внешнего ключа обозначаются символом (FK) после своего имени (рис. П.7).
Рис. П.7. Изображение сущностей и связей в логической модели
Домены
Доменом называют совокупность значений, из которых берутся значения атрибутов. Каждый атрибут может быть определен только на одном домене, но на каждом домене допускается определение нескольких атрибутов. В понятие домена входит не только тип данных, но и область значений данных. Например, можно объявить домен «Возраст» как положительное целое число, а затем определить атрибут «Возраст сотрудника» как принадлежащий этому домену.
Каждый домен в ERwin определяется только один раз, после этого он может использоваться как в логической, так и в физической модели.
На логическом уровне домены можно объявить без конкретных физических свойств. На физическом уровне они получают специфические свойства, которые можно изменить вручную. Наример, на логическом уровне домен «Возраст» может иметь тип Number, а на физическом уровне этому домену будет присвоен тип INTEGER.
При создании логической модели работа с доменами осуществляется в диалоговом окне Domain Dictionary Editor. Его можно вызвать из главного меню (пункт Edit/Domain Dictionary), а также из окна Attribute Editor с помощью кнопки, расположенной в верхней левой части закладки General.
В режиме Domain Dictionary Editor для создания нового домена нужно выполнить следующие действия:
щелчком по кнопке New открыть диалоговое окно New Domain;
выбрать родительский домен из списка Domain Parent. Новый домен создается на основе домена, который ранее объявлен пользователем, либо с использованием изначально существующего. По умолчанию ERwin имеет четыре предопределенных домена: String, Number, Blob, Datetime. Новый домен наследует все свойства родительского домена, но в дальнейшем эти свойства можно переопределить;
набрать имя домена в поле Logical Name. С помощью поля Physical Name можно также указать имя домена на физическом уровне. Если физическое имя не указано, то по умолчанию оно принимает значение логического имени;
щелкнуть по кнопке OK.
Диалоговое окно Domain Dictionary Editor позволяет связать домен с иконками двух типов:
Domain Icon – для отображения домена в общем списке доменов;
Icon Inherited by Attribute – для отметки в модели тех атрибутов, которые определены на данном домене.
Каждый домен может быть описан (закладка Definition), а также снабжен комментарием (закладка Note) или свойством, определенным пользователем (закладка UDP).
ERwin имеет специальный инструмент Independent Attribute Browser, который значительно облегчает создание в модели новых атрибутов с использованием описаний доменов. Соответствующее диалоговое окно вызывается (и скрывается) при нажатии комбинации клавиш CTRL+B. В списке этого окна нужно сначала выбрать домен, а затем с помощью мыши перенести его в какую-либо сущность, где будет создан новый атрибут, которому присваивается имя, указанное в поле Name Inherited by Attribute диалогового окна Domain Dictionary Editor. Если значение этого поля не задано, то по умолчанию новый атрибут принимает имя домена.
На физическом уровне диалоговое окно Domain Dictionary Editor позволяет редактировать физические свойства доменов. На соответствующей закладке, имя этой зависит от выбранного сервера БД, можно задать:
конкретный тип данных (в соответствии с определением домена);
правила присвоения NULL-значений;
правила валидации (проверки допустимых значений) и установки значений по умолчанию.
Правила валидации и значения по умолчанию должны быть предварительно описанными и поименованными. Для вызова диалоговых средств редактирования правил валидации и значений по умолчанию служат кнопки справа от соответствующих списков выбора (Valid и Default).