- •Кафедра экономической информатики
- •Базы данных
- •Содержание
- •Введение
- •Лабораторная работа №1. Логические и физические модели данных
- •Методические указания
- •Задание к работе
- •Раздел I. Создание сущностей в eRwin
- •Раздел II. Создание связей между сущностями, подмножеств модели и хранимых отображений. Переход к физической модели данных
- •Раздел III. Выполнение операции прямого проектирования
- •Раздел IV. Выполнение операции обратного проектирования
- •Лабораторная работа №2. Усложненные диаграммы «сущность-связь»
- •Методические указания
- •Задание к работе
- •Раздел I. Создание сущностей логической модели
- •Раздел II. Создание связей между сущностями и иерархии наследования
- •Раздел III. Выполнение вариантов трансформы категориальной связи
- •Раздел IV. Выполнение методов синхронизации системного каталога базы данных и текущей модели
- •Лабораторная работа №3. Работа в среде субд «ms sql Server 2005»
- •Методические указания
- •Задание к работе
- •Раздел I. Создание базы данных и ее объектов
- •Раздел II. Управление пользователями и правами доступа к данным
- •Лабораторная работа №4. Создание базы данных и ее объектов с помощью команд языка Transact-sql
- •Методические указания и задания к выполнению
- •Раздел I. Создание базы данных и ее объектов
- •Раздел II. Ввод данных в таблицы базы данных
- •Insert into Заказ (КодКлиента, КодТовара, Количество)
- •Inner join Поставщик
- •Inner join Товар
- •Раздел III. Управление пользователями и правами доступа к данным.
- •Раздел IV. Анализ полученных результатов
- •Лабораторная работа №5. Манипулирование данными с помощью команд языка Transact-sql
- •Методические указания
- •Раздел I. Выборка данных из таблиц и представлений.
- •Раздел II. Обновление данных в таблицах и представлениях.
- •Раздел III. Удаление данных из таблиц и представлений.
- •Раздел IV. Изменение структуры таблицы.
- •Раздел V. Удаление таблицы из базы данных.
- •Задание к работе
- •Лабораторная работа №6. Программирование на языке Transact-sql
- •Методические указания
- •Раздел I. Основы программирования на языке Transact-sql.
- •Раздел II. Создание и работа с хранимыми (на сервере) процедурами.
- •If @Страна is not null
- •If @Город is not null
- •If @Город is not null
- •Insert into Валюта
- •Values(@Код, @Имя, @Шаг, @Курс)
- •If @Страна is not null
- •If @Город is not null
- •Into ##Регион
- •Раздел III. Создание и работа с определяемыми пользователем функциями.
- •Insert @rowset (КодРегиона, Страна, Область, Город)
- •Задание к работе
- •Лабораторная работа №7. Курсоры и триггеры в языке Transact-sql
- •Методические указания
- •Раздел I. Использование курсоров в языке Transact-sql
- •If @НачалоИнтервала is null
- •If @КонецИнтервала is null
- •Раздел II. Создание триггеров в языке Transact-sql.
- •If update(ДатаЗаказа)
- •If update(Цена)
- •If update(Цена)
- •Inserted.Цена * Валюта.КурсВалюты
- •Задание к работе
- •Литература Основная
- •Базы данных
- •220013, Минск, п. Бровки, 6.
Раздел II. Создание связей между сущностями, подмножеств модели и хранимых отображений. Переход к физической модели данных
1. Создайте между сущностями связи типа 1 : М (один ко многим) таким образом, чтобы в результате сущности оказались дополнены атрибутами, отмеченными выше звездочками.
Связь 1:М между парой сущностей, одна из которых рассматривается как родительская, а другая – как дочерняя, создается следующим образом: на панели инструментов нужно нажать одну из двух кнопок создания связи 1:М (идентифицирующей – Identifying relationship или неидентифицирующей – Non-identifying relationship), после чего щелкнуть мышью на родительской сущности, а затем – на дочерней. При этом между сущностями появляется связь и в дочернюю сущность будет автоматически добавлены атрибуты, дублирующие ключевые атрибуты родительской сущности. Эти атрибуты получают название внешнего ключа (FK) и будут включены в состав ключевых (идентифицирующая связь) или неключевых (неидентифицируюшая связь) атрибутов дочерней сущности. Выше в сущностях атрибуты внешних ключей отмечены звездочками, причем одна звездочка указывает на идентифицирующую связь 1:М, а две – на неидентифицирующую связь 1:М.
Например, чтобы в сущности Поставщик появился атрибут Код региона нужно создать неиндефицирующую связь 1:М между родительской сущностью Регион и дочерней сущностью Поставщик.
2. Создайте между сущностями Поставщик и Товар связь типа М:М (многие ко многим). Эта связь создается следующим образом: на панели инструментов нужно нажать кнопку создания связи М:М (Many-to-many relationship), после чего щелкнуть мышью на одной сущности, а затем – на другой.
Для удобства разместите сущности в рабочей области так, чтобы связи между ними не пересекались между собой.
3. Выделите подсветкой одну из связей между сущностями и затем с помощью команды меню Model►Relationships откройте окно Relationships и дайте имя этой, а затем и остальным связям, используя для этого подходящие глаголы или глагольные формы. Для связей 1:М достаточно указать имя, характеризующее отношение или от родительской сущности к дочерней (Parent-to-Child) или от дочерней сущности к родительской (Child-to-Parent). Для связи М:М следует указывать имена как Parent-to-Child так и Child-to-Parent.
Например связи М:М между сущностями Поставщик и Товар можно дать такие имена: «Поставляет» (Parent-to-Child) и «Поставляется» (Child-to-Parent).
4. Измените заданное по умолчанию правило ссылочной целостности RESTRICT (Ограничить) на правило CASCADE (Каскадировать) для двух связей: для связи между сущностями Клиент и Заказ и для связи между сущностями Товар и Заказ. Для этого в окне Relationships перейдите на вкладку RI Actions, выберите вверху с помощью выпадающего списка Relationship нужную связь и далее поменяйте правило RESTRICT на правило CASCADE в каждом из списков: Parent Delete и Parent Update.
5. С помощью команды меню Model►Subject Areas откройте окно Subject Areas и создайте помимо существующего основного множества Main Subject Area еще два подмножества модели: Subject Area 1 и Subject Area 2, включив (вкладка Members) в первое из них сущности Клиент, Поставщик, Регион, а во второе – Товар со всеми непосредственно связанными с ней (Level = 1) сущностями. После этого просмотрите поочередно все три модели, используя для переключения между ними кнопку с выпадающим списком Create Subject Area, расположенную на панели инструментов.
6. С помощью команды меню Format►Stored Display Settings откройте окно Stored Displays и создайте для каждого из подмножеств модели Subject Area 1 и Subject Area 2 по два новых хранимых отображения (Display2 и Display3), отличающиеся друг от друга и от исходного отображения Display1 расположением частей логической модели на экране, масштабом, уровнями просмотра этой модели, видимостью отдельных компонентов сущностей и связей, а также другими характеристиками.
7. Сохраните модель данных на жестком диске в файле Склад.erwin.
8. Переключитесь на Main Subject Area / Display1, а затем с помощью команды меню Model►Relationships откройте окно Relationships и опробуйте настройку характеристик связей между сущностями, таких как имя связи (Verb Phrase), мощность (Cardinality), имя роли (RoleName), правила ссылочной целостности (RI Actions). Опробуйте режимы показа на диаграмме указанных выше характеристик связей с помощью команд меню: Format►Relationship Display►... В конце восстановите первоначальные настройки характеристик связей между сущностями (это можно сделать, если закрыть без сохранения текущую диаграмму модели с помощь команды меню File►Close, а затем снова открыть командой File►Open).
9. Опробуйте варианты показа на диаграмме различных уровней логической модели (команды меню: Format►Display Level►…) и различных способов отображения атрибутов в сущностях (команды меню: Format►Entity Display►…).
10. С помощью команды меню Model►Domain Dictionary откройте окно Domain Dictionary и создайте на основе домена Number новые домены Денежный и Точность. Далее свяжите атрибут Цена (сущность Товар) с новым доменом Денежный, а атрибут Шаг округления (сущность Валюта) - с новым доменом Точность.
11. С помощью команды меню Model►Key Groups откройте окно Key Groups и, используя кнопку New, создайте для сущностей дополнительно к имеющемуся первичному ключу еще и возможные альтернативные ключи (Alternate Key) и возможные инверсионные входы (Inversion Entry). Включите режим их отображения на диаграмме.
Факт вхождения отдельных атрибутов в состав ключей и инверсионных входов можно также увидеть в окне Attributes, которое открывается с помощью команды меню Model►Attributes. Для этого надо перейти на вкладку Key Group и начать последовательно перемещаться по списку атрибутов, расположенному слева.
12. Переключившись в режим показа физической модели, уберите пробелы в названиях полей (сделав первую букву второго слова прописной), а также проверьте и, в случае необходимости, скорректируйте их типы и длины, ориентируясь на специфику типов данных СУБД Access. В частности, поле Цена должно иметь тип Currency, а поля Шаг округления и Количество - тип Single.
13. В физической модели с помощью команды меню Model►Columns откройте окно 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. Сохраните текущую модель данных на жестком диске.