Материал: BD_Laboratornyi_774_praktikum

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

7. Сохраните модель данных на жестком диске в файле Склад.erwin.

8. Переключитесь на Main Subject Area / Display1, а затем с помощью команды меню ModelRelationships откройте окно Relationships и опробуйте настройку характеристик связей между сущностями, таких как имя связи (Verb Phrase), мощность (Cardinality), имя роли (RoleName), правила ссылочной целостности (RI Actions). Опробуйте режимы показа на диаграмме указанных выше характеристик связей с помощью команд меню: Format►Relationship Display►... В конце восстановите первоначальные настройки характеристик связей между сущностями (это можно сделать, если закрыть без сохранения текущую диаграмму модели с помощь команды меню FileClose, а затем снова открыть командой FileOpen).

9. Опробуйте варианты показа на диаграмме различных уровней логической модели (команды меню: Format►Display Level►…) и различных способов отображения атрибутов в сущностях (команды меню: Format►Entity Display►…).

10. С помощью команды меню ModelDomain Dictionary откройте окно Domain Dictionary и создайте на основе домена Number новые домены Денежный и Точность. Далее свяжите атрибут Цена (сущность Товар) с новым доменом Денежный, а атрибут Шаг округления (сущность Валюта) - с новым доменом Точность.

11. С помощью команды меню ModelKey Groups откройте окно Key Groups и, используя кнопку New, создайте для сущностей дополнительно к имеющемуся первичному ключу еще и возможные альтернативные ключи (Alternate Key) и возможные инверсионные входы (Inversion Entry). Включите режим их отображения на диаграмме.

Факт вхождения отдельных атрибутов в состав ключей и инверсионных входов можно также увидеть в окне Attributes, которое открывается с помощью команды меню ModelAttributes. Для этого надо перейти на вкладку Key Group и начать последовательно перемещаться по списку атрибутов, расположенному слева.

12. Переключившись в режим показа физической модели, уберите пробелы в названиях полей (сделав первую букву второго слова прописной), а также проверьте и, в случае необходимости, скорректируйте их типы и длины, ориентируясь на специфику типов данных СУБД Access. В частности, поле Цена должно иметь тип Currency, а поля Шаг округления и Количество - тип Single.

13. В физической модели с помощью команды меню ModelColumns откройте окно Columns, перейдите на вкладку Constraint и задайте для тех полей, где это возможно, правила валидации (Validation Constraint) и/или значения по умолчанию (Default). Например, для полей Цена, Количество и КурсВалюты правило валидации заключается в выборе только неотрицательных значений, что обеспечивается вводом выражения: >= 0. Для поля ШагОкругления – в выборе значений из множества {50, 1, 0.01}, что обеспечивается вводом выражения: IN (50, 1, 0.01). Значением по умолчанию для поля Страна будет "Беларусь"; для поля УсловияОплаты – "Предоплата"; для поля ШагОкругления0.01; для поля ЕдиницаИзм – "штука"; для поля КодВалюты (только из таблицы Товар) – "BYR"; для поля ДатаЗаказаDate(), т.е. текущая дата; для поля СрокПоставкиDate() + 14, т.е. через две недели от текущей даты.

14. В физической модели (окно Columns, вкладка ...Access) настроите свойство Формат (Format), установив его для поля Количество равным #,##0.000 и для поля КурсВалюты – равным #,##0. Настройте также свойство Маска ввода (Mask) для полей Телефон и Факс, установив его равным (999) 999-99-99.

15. В окне Model Properties, которое вызывается командой меню Model►Model Properties, на вкладке General установите флажок Auto apply Supertype-Subtype Identity transform. В физической модели выделите мышью связь М:М между таблицами Поставщик и Товар, после чего нажмите кнопку Many to Many Transform на панели инструментов и запустите мастер преобразования связи М:М. В результате эта связь будет преобразована в две связи 1:М путем создания дополнительной связующей таблицы. При этом в логической модели преобразований не будет и останется прежняя связь М:М.

Примечание 1. Если в окне Model Properties на вкладке General не устанавливать флажок Auto apply Supertype-Subtype Identity transform, то указанное выше преобразование связи будет выполнено также и в логической модели.

Примечание 2. Если в окне Model Properties на вкладке General установить флажок Auto apply Many-to-Many transform, то Erwin будет автоматически выполнять упомянутую выше трансформу связи М:М при переключении с логической модели на физическую.

16. Сохраните текущую модель данных на жестком диске.

Раздел III. Выполнение операции прямого проектирования

1. Запустите СУБД Access и создайте новую пустую базу данных Склад.mdb, после чего закройте Access.

2. В ERwin из режима показа физической модели с помощью команды меню ToolsForward Engineer/Schema Generation (или соответствующей кнопки на панели инструментов) откройте окно Forward Engineer Schema Generation и нажмите кнопку Generate. В появившемся окне Access Connection задайте имя пользователя (User Name) равным Admin, а также с помощью кнопки Browse (первой сверху) задайте полное имя созданной базы данных Склад.mdb. Далее нажмите кнопку Connect и выполните процесс прямого проектирования (Forward Engineer) с наполнением файла базы данных Склад.mdb метаданными согласно созданной физической модели данных. После завершения процесса прямого проектирования с помощью команды меню DatabaseDatabase Connection откройте окно Access Connection и разорвите соединение с базой данных Склад.mdb путем нажатия кнопки Disconnect.

3. Запустите СУБД Access, откройте базу данных Склад.mdb и просмотрите структуры полученных таблиц и наличие в них первичных ключей.

4. Убедитесь, что для полей Цена, Количество, КурсВалюты и ШагОкругления установлено свойство «Условие на значение», а для полей Страна, УсловияОплаты, ШагОкругления, ЕдиницаИзм, КодВалюты (из таблицы Товар), ДатаЗаказа и СрокПоставки – установлено свойство «Значение по умолчанию», которые соответствуют правилам валидации (Valid) и значениям по умолчанию (Default) в физической модели данных.

5. Убедитесь, что для поля Количество (таблица Заказ) и для поля КурсВалюты (таблица Валюта) установлено свойство Формат. Убедитесь, что в таблице Регион для полей Телефон и Факс установлено свойство «Маска ввода». Эти свойства должны соответствовать аналогичным свойствам в физической модели данных.

6. Откройте окно Схема данных и проанализируйте структуру связей между таблицами. Схема данных должна выглядеть примерно так, как показано на рис. 1.4.

Рис. 1.4. Схема данных для базы данных Склад

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

Раздел IV. Выполнение операции обратного проектирования

1. Закройте СУБД Access, после чего в ERwin закройте текущую модель данных с помощью команды меню FileClose.

2. В ERwin с помощью команды меню ToolsReverse Engineer запустите мастер выполнения процесса обратного проектирования. На его странице Reverse EngineerSelect Template задайте тип новой модели – Логическая/Физическая, целевую базу данных – Access. На следующей странице Reverse EngineerSet Options в древовидной структуре Items to Reverse Engineer найдите объект View и отключите его (сбросьте флажок) вместе со всеми подчиненными ему элементами. В появившемся окне Access Connection задайте имя пользователя (User Name) равным Admin, а также с помощью кнопки Browse (первой сверху) задайте полное имя созданной ранее в Access базы данных Основные средства.mdb. Далее нажмите кнопку Connect и выполните процесс обратного проектирования (Reverse Engineer), в результате чего будет создана модель данных, соответствующая системному каталогу базы данных Основные средства.mdb. После завершения процесса обратного проектирования с помощью команды меню DatabaseDatabase Connection откройте окно Access Connection и разорвите соединение с базой данных путем нажатия кнопки Disconnect.

3. Убедитесь, что полученная модель данных соответствует схеме данных созданной ранее базы данных Основные средства.mdb.

4. Сохраните модель данных на жестком диске в файле Основные средства.erwin.

Лабораторная работа №2. Усложненные диаграммы «сущность-связь»

Цель работы

  1. Ознакомиться со способом формирования рекурсивных связей.

  2. Освоить построение иерархии наследования и вариантов ее трансформы на уровне физической модели.

  3. Изучить процессы синхронизации системного каталога базы данных и модели данных.

Задачи

  1. Формирование неидентифицирующих рекурсивных связей типа 1:М.

  2. Создание на уровне логической модели иерархии наследования.

  3. Выполнение трансформ категориальной связи иерархии наследования при переходе на уровень физической модели.

  4. Синхронизация системного каталога базы данных и модели данных после внесения изменений в структуру базы данных.

  5. Синхронизация системного каталога базы данных и модели данных после внесения изменений в модель данных.

Методические указания

Связь называется рекурсивной, если одна и та же сущность является и родительской и дочерней одновременно. При задании рекурсивной связи атрибут должен мигрировать в качестве внешнего ключа в состав неключевых атрибутов той же сущности. Атрибут не может появиться дважды в одной сущности под одним именем, поэтому обязательно должен получить другое имя – имя роли. На рис. 2.1 сущность Сотрудник имеет первичный ключ Таб №. Информация о руководителе сотрудника содержится в той же сущности, поскольку руководитель работает в той же организации. Чтобы сослаться на руководителя сотрудника следует создать рекурсивную связь (на рис. 2.1 связь «руководит») и присвоить имя роли «Руководитель». Необходимо отметить, что рекурсивная связь может быть только неидентифицирующей. В противном случае внешний ключ должен был бы войти в состав первичного ключа и получить свойство NOT NULL. Это сделало бы невозможным построение иерархии, так как у дерева подчиненности должен быть корень – сотрудник, который никому не подчиняется в рамках данной организации.

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

Сотрудник

Таб №

Фамилия

Имя

Отчество

Руководитель.Таб № (FK)

руководит

Рис. 2.1. Рекурсивная связь

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