МЕТОДИЧЕСКИЕ УКАЗАНИЯ ДЛЯ ПРОВЕДЕНИЯ ПРАКТИЧЕСКОГО ЗАНЯТИЯ № 3 по профессиональному модулю ПМ.02 Разработка и администрирование баз данных МДК 02.03 «Удалённые базы данных»

МИНИСТЕРСТВО ЭНЕРГЕТИКИ, ПРОМЫШЛЕННОСТИ И СВЯЗИ СТАВРОПОЛЬСКОГО КРАЯ
Государственное бюджетное профессиональное образовательное учреждение «Ставропольский колледж связи имени Героя Советского Союза В.А. Петрова»


Цикловая комиссия вычислительной техники


УТВЕРЖДАЮ
Заместитель директора
по учебной работе
________ / Г.А. Белоусова /
«___» _________ 20___ г.



МЕТОДИЧЕСКИЕ УКАЗАНИЯ
ДЛЯ ПРОВЕДЕНИЯ ПРАКТИЧЕСКОГО ЗАНЯТИЯ № 3
по профессиональному модулю ПМ.02 Разработка и администрирование баз данных МДК 02.03 «Удалённые базы данных»
для специальности 09.02.03 « Программирование в компьютерных системах»

Тема: Связывание сущностей объектной области в ERwin



Согласовано
Методист
_____________И.В. Черкасова
«___»_____________ 201_г.

Разработчик: преподаватель Буценко Е.В.
Обсуждено на заседании цикловой комиссии «Вычислительная техника»
Протокол №___
«___»_______________20__г.
Председатель цикловой комиссии
____________ / И.В. Ерёмина/

Ставрополь, 2016

Тема: Связывание сущностей объектной области в ERwin
Цель занятия: - получить навыки задания связей между сущностями модели данных в ERwin.
- формировать следующие
умения:
У3- создавать объекты баз данных в современных системах управления базами данных и управлять доступом к этим объектам;
У4- работать с современными сase-средствами проектирования баз данных;
У5- формировать и настраивать схему базы данных.
знания:
З5- основных положений теории баз данных, хранилищ данных, баз знаний;
З7- современных инструментальные средства разработки схемы базы данных;
З9 - структуры данных СУБД;
З13- основ разработки приложений баз данных.
- овладение профессиональными компетенциями:
ПК 2.1. Разрабатывать объекты базы данных. 
ПК 2.2. Реализовывать базу данных в конкретной системе управления базами данных (СУБД). 
Связь с другими темами: [ Cкачайте файл, чтобы посмотреть ссылку ]. [ Cкачайте файл, чтобы посмотреть ссылку ]. [ Cкачайте файл, чтобы посмотреть ссылку ]. Проектирование реляционных баз данных. Основные принципы построения инфокоммуникационных сетей.

Перечень вопросов, используемых для подготовки к занятию:
Типы связей между сущностями.
Этапы разбиения модели на подмножество.
Создание отчета созданной модели.

Литература для подготовки к практическому занятию
Основные источники:
Фуфаев. Э. В., Фуфаев Д. Э. Разработка и эксплуатация удаленных баз данных. 3-е изд.- М: Академия, 2012.-256с.
Назарова, О. Б. Разработка реляционных баз данных с использованием CASE-средства All Fusion Data Modeler [Электронный ресурс]: учеб.- метод. пособие / О. Б. Назарова, О. Е. Масленникова. - 2-е изд., стер. - М.: ФЛИНТА, 2013. - 74 с.
Дополнительные источники:
Агальцов В.П. Базы данных. В 2-х т. Т. 2. Распределенные и удаленные базы данных: Учебник / В.П. Агальцов. – М. – 2013. – 272с. ISBN 978-5-8199-0394-0
http://www.intuit.ru/catalog/database/ - Национальный Открытый Университет «ИНТУИТ».

Перечень отрабатываемых учебных действий
Определить связи между сущностями.
Построить диаграммы объектных областей
Сохранить модель.
Выполнить задания самостоятельной работы
Создать и сохранить отчет.




Материалы практического занятия
1 Теоретическое обоснование
Для построения логической модели данных, прежде всего, необходимо определить набор сущностей и задать связи между ними. В результате проектирования была создана диаграмма, содержащая три сущности (рисунок 1). Рассмотрим методику определения связи между ними.
Связь в ERwin трактуется как функциональная зависимость между двумя сущностями (в частности, возможна связь сущности с самой собой).
Если рассматривать диаграмму ERwin как графическое представление правил предметной области, то сущности являются существительными, а связи ( глаголами. Например, между сущностями ОТДЕЛ и СОТРУДНИК существует связь «состоит из» (ОТДЕЛ состоит из СОТРУДНИКОВ).
В ERwin связи между сущностями представлены пятью основными элементами информации:
тип связи;
родительская и дочерняя (зависимая) сущности;
мощность связи;
допустимость пустых (null) значений;
требования по обеспечению ссылочной целостности.
ERwin поддерживает следующие основные типы связей: идентифицирующая, неидентифицирующая, полная категория, неполная категория, «многие-ко-многим».
Связь называется идентифицирующей, если экземпляр дочерней сущности идентифицируется через ее связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в первичный ключ дочерней сущности. Дочерняя сущность при идентифицирующей связи всегда является зависимой.
Связь называется неидентифицирующей, если экземпляр дочерней сущности идентифицируется иначе, чем через связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в состав неключевых атрибутов дочерней сущности.
Идентифицирующая связь изображается сплошной линией; неидентифицирующая ( пунктирной линией. Линии заканчиваются точкой со стороны дочерней сущности.
При установлении связи происходит миграция атрибутов первичного ключа родительской сущности в соответствующую область атрибутов дочерней сущности. Поэтому такие атрибуты не вводятся вручную.
На рисунке 1 приведен пример неидентифицирующей связи. Первичный ключ сущности ОТДЕЛ «Номер отдела» мигрировал в область неключевых атрибутов (поскольку связь неидентифицирующая) сущности СОТРУДНИК. На диаграмме атрибуты, наследованные от родительской сущности, помечаются символами FK, заключенными в скобки.

Рисунок 1 ( Пример неидентифицирующей связи
Поскольку атрибуты первичного ключа родительской сущности по умолчанию мигрируют со своими именами, ERwin считает, что в зависимой сущности атрибуты внешнего ключа появляются только один раз. Чтобы избежать этого ограничения, ERwin позволяет ввести для них роли, т.е. новые имена, под которыми мигрирующие атрибуты будут представлены в дочерней сущности. В случае неоднократной миграции атрибута такое переименование необходимо. Например, при создании модели сделки по обмену валюты сущность СДЕЛКА (рисунок 2) должна иметь два различных атрибута для кодов проданной и купленной валюты.

Рисунок 2 ( Пример использования ролей
В данном случае первичный ключ сущности ВАЛЮТА («Код валюты») имеет две роли в дочерней сущности. Ситуация, когда экземпляру одной сущности соответствует один или несколько экземпляров второй сущности, а экземпляру второй сущности соответствует один или несколько экземпляров первой сущности, отражается в логической модели связью многие-ко-многим между данными сущностями. На диаграмме связь изображается сплошной линией с точками на концах. Например, для заключения сделки в некоторой фирме клиент обращается к любому из свободных сотрудников этой фирмы. В то же время сотрудник фирмы может обслуживать нескольких клиентов. Поэтому тип связи между сущностями КЛИЕНТ и СОТРУДНИК должен быть многие-ко-многим (рисунок 3).

Рисунок 3 ( Пример связи «многие-ко-многим»
Заметим, что связь типа многие-ко-многим возможна только на логическом уровне. Преобразование связи данного типа на физическом уровне будет рассмотрено в следующем пункте. Однако добавим, что связей многие-ко-многим рекомендуется избегать. В рассмотренном примере этого можно добиться, если ввести дополнительную сущность СДЕЛКА (рисунок 4).

Рисунок 4 ( Пример устранения связи многие-ко-многим
Некоторые сущности определяют целую категорию объектов одного типа. В ERwin в таком случае создается сущность для определения категории и для каждого элемента категории, а затем вводится для них связь категоризации. Родительская сущность категории называется супертипом, а дочерние ( подтипом.
Общая часть атрибутов сущностей-подтипов, включая первичный ключ, помещается в сущность-супертип. Различная часть (например, данные о почасовой оплате для временных работников или данные о зарплате и отпуске для штатных работников) помещается, в сущности-подтипы. В сущности ( супертипе вводится атрибут-дискриминатор, позволяющий различать конкретные экземпляры сущности-подтипа.
В зависимости от того, все ли возможные сущности-подтипы включены в модель, категорийная связь является полной или неполной. В ERwin полная категория изображается окружностью с двумя подчеркиваниями, а неполная ( окружностью с одним подчеркиванием.
На рисунке 5 категорийная связь между сущностью СОТРУДНИК и сущностями ПОСТОЯННЫЙ СОТРУДНИК и СОВМЕСТИТЕЛЬ является неполной, если предположить, что существует еще один тип сотрудников ( консультант.

Рисунок 5 ( Пример неполной категории
Включение в модель сущности КОНСУЛЬТАНТ приводит к тому, что категорийная связь становится полной (рисунок 6).

Рисунок 6 ( Пример полной категории
Мощность связи представляет собой отношение количества экземпляров родительской сущности к соответствующему количеству экземпляров дочерней сущности. Мощность связи определяется только для идентифицирующих и неидентифицирующих связей и записывается как 1:n. ERwin, в соответствии с методологией IDEF1X, предоставляет четыре варианта для параметра n, которые изображаются дополнительным символом у дочерней сущности (рисунок 7)

Рисунок 7 ( Обозначение кратности связи
Допустимость пустых (NULL) значений в неидентифицирующих связях ERwin изображает пустым ромбиком на дуге связи со стороны родительской сущности.
В целях контроля ссылочной целостности (под ссылочной целостностью в ERwin понимается обеспечение требования, чтобы значения внешнего ключа экземпляра дочерней сущности соответствовали значениям первичного ключа в родительской сущности) для каждой связи могут быть заданы требования по обработке операций INSERT/UPDATE/DELETE для родительской и дочерней сущности. ERwin предоставляет следующие варианты обработки этих событий:
отсутствие проверки;
проверка допустимости;
запрет операции;
каскадное выполнение операции (DELETE/UPDATE);
установка пустого (NULL-значения) или заданного значения по умолчанию.
Для выполнения работы необходим персональный компьютер со следующими характеристиками: процессор с тактовой частотой 800 МГц и выше,
Для выполнения лабораторной работы необходима операционная система WINDOWS 2000/ XP/Vista/7 и CASE-средство AllFusion ERwin
2 Методика и порядок выполнения работы
Задание 1. Связывание сущностей объектной модели «Блюда в меню»
Открыть проект, созданный в работе 2 (pr02.er1 и сохранить его, например, под именем pr02_2.er1).
Как уже упоминалось выше, различают зависимые и независимые сущности. Мы задали для сущности «Виды блюд» собственный уникальный ключ «код вида». Таким образом, сущность «Виды блюд» является независимой (стержневой) сущностью и связана с сущностью «Блюда» неидентифицирующей связью.
Для того чтобы создать эту связь на диаграмме, щелкните указателем мыши по кнопке «NonIdentifying Relationship» (неидентифицирующая связь) в палитре инструментов, затем щелкните по очереди по прямоугольникам сущностей «Виды блюд» и «Блюда» на диаграмме. Между этими сущностями появится пунктирная линия неидентифицирующей связи. Посреди линии связи проставляется генерируемая по умолчанию глагольная фраза ( R/1 (рисунок 8).

Рисунок 8 ( Неидентифицирующая связь
Перейдите на уровень атрибутов и обратите внимание на то, что у сущности «Блюда» добавился атрибут первичного ключа от сущности «Виды блюд», который помечен буквами «FK». Говорят, что атрибут «мигрировал», пометка FK (foreign key) означает, что атрибут является частью внешнего ключа (рисунок 9).

Рисунок 9 ( Миграция атрибутов
Для идентифицирующей связи внешний ключ всегда входит в первичный ключ дочерней сущности, для неидентифицирующей
· не входит.
Назначьте связи глагольную фразу. Для этого выделите связь, щелкнув по ней указателем мыши, затем нажмите правую кнопку мыши и в контекстном меню выберите пункт «Relationship Properties » (свойства отношений).
Общий вид окна редактора связей показан на рисунке 10.

Рисунок 10 – Общий вид окна редактора связей
Редактор связей похож на остальные редакторы объектов ER-диаграмм.
В верхней части окна находится выпадающий список, содержащий полное название связи. В нашем случае осмысленная глагольная фраза для связи еще не определена, поэтому в этом поле значится «Виды блюд R/1 Блюда». Здесь же находятся две кнопки New... и Delete, с помощью которых можно добавить на схеме новую связь или удалить существующую. Кроме того, в редакторе имеется пять страниц с закладками.
Первая закладка «General» (общие свойства). Здесь задаются основные свойства связи ( глагольная фраза, тип и степень связи.
Область, озаглавленная Verb Phrase (глагольная фраза) содержит два поля, в которых вводится глагольная фраза, характеризующая связь. ERwin позволяет задать фразу для прямого и обратного направления связи: Parent-To-Child (Родительская-Дочерняя сущность) и Child-To-Parent (Дочерняя-Родительская сущность). Если для связи заданы прямая и обратная глагольные фразы, то они изображаются на диаграмме через символ «/». По умолчанию генерируется только прямая глагольная фраза (для направления Parent-To-Child). Щелкните указателем мыши по полю Parent-To-Child и введите с клавиатуры фразу «состоит из».
Степень связи задается в области, озаглавленной Cardinality. Переключатель позволяет выбрать одну из следующих степеней связи:
Zero, One or More (ноль, один или более) ( каждый экземпляр родительской сущности связан с нулем, одним или более экземпляров дочерней сущности. Выражение «связан с нулем экземпляров» означает, что родительский экземпляр может быть не связан ни с одним экземпляром дочерней сущности.
One or More (P) (один или более) ( каждый экземпляр родительской сущности связан с одним или более экземпляром дочерней сущности.
Zero or One (Z) (ноль или один) ( каждый экземпляр родительской сущности связан с нулем или с одним экземпляром дочерней сущности.
Exactly (точно) ( каждый экземпляр родительской сущности связан с заданным количеством экземпляров дочерней сущности. Рядом находится поле, где необходимо ввести это количество.
Тип связи выбирается в области Relationship Type: идентифицирующая (Identifying) или неидентифицирующая (Non-Identifying). Кроме того, для неидентифицирующей связи задается обязательность (Nulls), которая показывает, может ли атрибут внешнего ключа принимать значение NULL в таблице БД. Это свойство используется потом при генерации физической схемы базы данных.
В нашем примере при анализе предметной области мы выяснили, что блюдо не может существовать отдельно от вида блюд (т.е. не относиться ни к какой категории), поэтому установите этот переключатель в позицию No Nulls. Тем самым накладывается условие, что у существующего экземпляра блюда всегда должна быть ссылка на вид блюд, к которому оно принадлежит.
Вторая закладка Definition (определение). На этой странице вводится определение связи. Текст определения связи, как и в случае сущности, зависит от стандартов, принятых на предприятии, и должен облегчать восприятие модели.
Третья закладка Rolename (Имя роли). Имя роли (Rolename) ( это дополнительная характеристика, которая может присваиваться мигрирующему атрибуту первичного ключа (рисунок 11).

Рисунок 11 ( Закладка Rolename (Имя роли)
Это особенно удобно в тех случаях, когда сущность связана со многими другими сущностями или сама с собой «циклической» связью. Тогда, если задать имя роли мигрирующему атрибуту, то в дочерней сущности он будет изображаться под этим именем. Режим показа ролей переключается в контекстном меню диаграммы (Entity Display Show Migrated Attributes).
Четвертая закладка «RI Actions» (установки ссылочной целостности). Закладка предназначена для задания параметров ссылочной целостности проектируемой базы данных (рисунок 12).

Рисунок 12 – Закладка RI Action
Установки ссылочной целостности ( это логические конструкции, которые выражают бизнес-правила использования данных. Они определяют, какие действия должна выполнить СУБД при удалении, вставке или изменении строки таблицы (экземпляра сущности). Заданные таким образом действия могут использоваться впоследствии при автоматической генерации триггеров, поддерживающих целостность данных. Существуют следующие виды действий или правил, определяемых в логической модели (таблица 1).
Таблица 1 – Правила ссылочной целостности
Действие
Свойства действия

RESTRICT
Запрет удаления, вставки или изменения экземпляра сущности

CASCADE
При удалении экземпляра родительской сущности удаление всех экземпляров дочерней сущности, ссылающихся на удаляемый родительский экземпляр

SET NULL
При удалении экземпляра родительской сущности атрибутам внешнего ключа всех экземпляров дочерней сущности, присваивается значение NULL

SET DEFAULT
То же самое, что и в предыдущем случае, только вместо значения NULL присваивается значение по умолчанию

NONE
Никаких действий не предпринимается

Эти правила задаются на вставку, удаление и изменение экземпляра как родительской, так и дочерней сущности. Таким образом, каждая связь должна обладать набором из шести правил, которые вводятся в поля, объединенные общим заголовком RI Actions. При добавлении связи в диаграмму ERwin по умолчанию устанавливает для нее набор правил, которые можно редактировать в диалоге Model Properties (Свойства модели) на вкладке RI Defaults (Model Model Properties), рисунок 13.

Рисунок 13 – Закладка RI Defaults диалогового окна Model Properties
Правила, присваиваемые связи по умолчанию, можно изменить, выбрав нужное значение из выпадающего списка. При нажатии на кнопку Rebind (переназначить) новые установки переносятся в текущую модель, если же просто выйти из диалога, не делая переназначения, то измененные установки будут влиять только на новые модели.
Каждый тип связи имеет, в зависимости от вида действия, свой набор допустимых правил, приведенный в таблице 2.
Таблица 2 ( Набор допустимых правил для различных типов связей
Вид
действия
Тип связи (Relationship Type)


Идентифицирующая (Identifying)
Неидентифицирующая (NonIdentifying,
Nulls Allowed)
Неидентифицирующая (NonIdentifying,
No Nulls)
Категориальная связь (Subtype)

Child Delete
(удаление дочернего объекта)
RESTRICT,
CASCADE, NONE
RESTRICT,
CASCADE, NONE
RESTRICT,
CASCADE, NONE SET NULL, SET DEFAULT
RESTRICT, CASCADE, NONE SET
DEFAULT

Child Insert
(вставка дочернего объекта)
RESTRICT,
CASCADE, NONE
RESTRICT,
CASCADE, NONE
restrict,
cascade,
NONE SET NULL,
SET DEFAULT
RESTRICT, CASCADE, NONE SET
DEFAULT

Child
Update
(изменение дочернего объекта)
RESTRICT,
CASCADE, NONE
RESTRICT,
CASCADE, NONE
RESTRICT, CASCADE, NONE SET NULL, SET DEFAULT
RESTRICT, CASCADE, NONE SET
DEFAULT

Parent
Delete
(удаление родительского объекта)
RESTRICT,
CASCADE, NONE
RESTRICT,
CASCADE, NONE
RESTRICT,
CASCADE, NONE SET NULL, SET DEFAULT
RESTRICT, CASCADE, NONE SET
DEFAULT

Parent Insert
(вставка родительского объекта)
RESTRICT,
CASCADE, NONE
RESTRICT,
CASCADE, NONE
RESTRICT, CASCADE, NONE SET NULL,
SET DEFAULT
RESTRICT, CASCADE. NONE SET
DEFAULT

Parent
Update
(изменение родительского объекта)
RESTRICT,
CASCADE, NONE
RESTRICT,
CASCADE, NONE
RESTRICT,
CASCADE, NONE SET NULL, SET DEFAULT
RESTRICT, CASCADE, NONE SET
DEFAULT

Установки для связи «Виды блюд ( Блюда», присвоенные по умолчанию, запрещают вставку и изменение экземпляра дочерней сущности, а также удаление и изменение родительской сущности. Это означает, что не допускается удаление или изменение вида блюд, если имеются блюда, принадлежащие этому виду, а также ввод блюда без указания вида блюда или со ссылкой на несуществующий вид.
Пятая закладка – UDP (Параметры, устанавливаемые пользователем). Закладка UDP, как и у предыдущих объектов диаграммы, позволяет присвоить связи свой набор пользовательских свойств.
5. Итак, мы создали неидентифицнрующую связь между сущностями «Виды блюд» и «Блюда» с условием No Nulls. Очевидно, связь того же типа должна существовать между сущностями «Блюда» и «Рецепты», так как рецепт обязательно должен описывать технологию приготовления блюда. Внесите эту связь в диаграмму, выполнив те же действия, что и в предыдущем случае. Вызовите редактор связей и измените глагольную фразу на «описывает», остальные установки связи оставьте неизменными. Обратите внимание, что атрибут «код блюда» мигрировал в состав неключевых атрибутов сущности «Рецепты» (рисунок 14).

Рисунок 14 – Атрибут «Код блюда» мигрировал в состав
неключевых атрибутов сущности «Рецепты»
После установки связей диаграмма на уровне сущностей будет иметь вид, показанный на рисунке 15.

Рисунок 15 ( ER-диаграмма объектной области «Блюда в меню» после
установки связей
В зависимости от типа связи изображаются на диаграмме по-разному. Графическое изображение зависит и от принятой методологии построения диаграммы. Например, в нотации IDEF1X, используемой в этом примере, принято изображение связей, показанное на рисунке 16.
Помимо типа связи, на диаграмме могут отображаться и установки ссылочной целостности ( для этого необходимо выбрать в контекстном меню диаграммы пункт Relationship Display и подпункт Referential Integrity.
Обозначение ссылочной целостности на схеме представляет собой две алфавитные группы, разделенные символом двоеточия «:». Первый символ обозначает действие, к которому относится правило целостности: D ( удаление (delete), I ( вставка (insert), U ( изменение (update).
Вторая группа обозначает правило: R ( RESTRICT, С ( CASCADE, SN ( SET NULL, SD ( SET DEFAULT. Таким образом, запрет удаления обозначается D:R, а установка NULL при изменении ( U:SN. Обозначения проставляются у родительского или дочернего конца связи, в зависимости от того, к какой сущности они относятся. С включенными установками ссылочной целостности диаграмма выглядит так, как показано на рисунке 15.

Рисунок 16 ( Изображение связей в нотации IDEF1X
На диаграмме теперь определена одна из трех выделенных объектных областей, ( «Блюда в меню». Другие объектные области рассмотрим на последующих лабораторных занятиях.
6. На вкладке «Уровень сущностей» сохраните модель, например, под именем pr3.er1.

Задание 2. Концептуализация предметной области
В ходе выполнения предыдущих работ были определены атрибуты и установлены связи между сущностями, входящими в объектную область «Блюда в меню». Чтобы закончить концептуализацию предметной области, необходимо выделить сущности других объектных областей: «Поставка продуктов» и «Организация процесса питания». Сущности объектных областей «Поставка продуктов» и «Организация процесса питания» представлены в таблице 3.

Таблица 3 – Сущности объектных областей «Поставка продуктов» и
«Организация процесса питания»
Объектная область
Сущность

Поставка продуктов
Продукты


Поставщики

Организация процесса питания
Трапезы


Меню


Выбор*

1. Внесите сущности объектной области «Поставка продуктов» «Продукты» и «Поставщики» в диаграмму (таблица 3), используя методику, описанную в методических указаниях к выполнению лабораторной работы 5.
2. Внесите сущности объектной области «Организация процесса питания» «Трапезы» «Меню» и «Выбор» в диаграмму (таблица 3).
3. После введения этих изменений диаграмма должна выглядеть, как показано на рисунке 17.

Рисунок 17 – Набор сущностей, смоделированных в пределах всех трех
объектных областей

Задание 3. Определить атрибуты и установление связей между сущностями, входящими в объектные области «Поставка продуктов» и «Организация процесса питания»
Методика определения атрибутов и связей между сущностями, входящими в объектные области «Поставка продуктов» и «Организация процесса питания», аналогична той методике, которая была использована при моделировании объектной области «Блюда в меню». Рассмотрим порядок определения атрибутов и установления связей между сущностями, входящими в объектные области «Поставка продуктов» и «Организация процесса питания». Подобное рассмотрение позволит, с одной стороны, получить законченную модель схемы данных для разрабатываемой базы данных информационной подсистемы пансионата, а с другой стороны, закрепить навык определения атрибутов и связей между сущностями в среде ERwin.
Открыть проект ( pr3.er1), в котором были созданы сущности объектных областей «Поставка продуктов» и «Организация процесса питания». Атрибуты сущностей, относящиеся к области «Поставка продуктов», приведены в таблице 4.
Таблица 4 ( Атрибуты сущностей, входящие в объектную области «Поставка продуктов»
Сущность
Атрибут
Ключ
Имя домена
Тип




логическое
физическое


Продукты
код продукта
13 EMBED PBrush 1415
код продукта
t_prod_id
число


продукт

название продукта
t_ prod _name
строка


белки

белки
t_albumen
число


жиры

жиры
t_fat
число


углев

углев
t_carboh
число


K

K
t_K
число


CA

CA
t_CA
число


NA

NA
t_NA
число


B2

B2
t_B2
число


PP

PP
t_PP
число


C

C
t_C
число

Поставщики
код поставщика
13 EMBED PBrush 1415
код поставщика
t_suppl_id
число


название

название поставщика
t_suppl_name
строка


статус

статус
t_stat
строка


город

город поставщика
t_city
строка


адрес

адрес поставщика
t_address
строка


телефон

телефон поставщика
t_tel
строка

Задайте атрибуты сущностей «Продукты» и «Поставщики» (таблица 9.1), предварительно создав соответствующие домены.
Рассмотрим связи между этими сущностями. Рассмотрим более подробно, как связаны сущности «Продукты» и «Поставщики». Один и тот же продукт может быть поставлен разными поставщиками, с другой стороны, один поставщик поставляет много разных продуктов. Поэтому одно строке в таблице «Продукты» соответствует много строк в таблице «Поставщики» и наоборот, одной строке в таблице «Поставщики» соответствует много строк в таблице «Продукты». Следовательно, при непосредственном связывании этих двух сущностей нужно выбрать связь «многие ко многим». Но эта связь существует только на логическом уровне модели; при переходе на физический уровень она будет развязана ERwin автоматически: вместо непосредственного связывания в модель будет введена еще одна сущность, по поводу которой связаны две исходные сущности в предметной области, но с которой у них существуют связи «один ко многим». Лучше не доверять эту процедуру ERwin , который выполнит ее достаточно формально, а выполнить ее на этапе логического проектирования самостоятельно.
Итак, введем с помощью инструмента в модель еще одну сущность «Поставки», которая будет связана с сущностями «Продукты» и «Поставщики». Это позволит вместо установки связи «многие ко многим» связать идентифицирующими связями исходные сущности с новой. Чтобы установить идентифицирующие связи, выберите в палитре инструментов «идентифицирующую связь» , щелкните по сущности «Продукты», затем – по сущности «Поставки». Потом повторите ту же процедуру связывания с сущностями «Поставщики» и «Поставки». Присвойте первой связи глагольную фразу «входят в», второй – «выполняют» (рисунок 19). Благодаря миграции атрибутов при установлении связей атрибуты первичных ключей родительских сущностей «Продукты» и «Поставщики» вошли в состав первичного ключа дочерней сущности «Поставки», одновременно являясь в ней внешними ключами. Сформированный первичный ключ дочерней сущности «Поставки» нужно проверить на уникальность: получим ли мы точно одну строку этой таблицы, задав значение кодов поставщика и продукта? Ответить на этот вопрос придется отрицательно: ведь один и тот же поставщик может поставить один и тот же продукт несколько раз (в разные дни). Поэтому для выполнения требования уникальности дополним первичный ключ сущности «Поставка» атрибутом «Дата» (т.е. дата поставки). В число неключевых атрибутов включим: атрибуты «Цена» и «К_во» (цена единицы продукта на момент поставки и количество продуктов в поставке). Информация о сущности «Поставки» содержится в таблице 5.

Таблица 5 ( Новая сущность объектной области «Поставка продуктов»
Сущность
Атрибут
Ключ
Имя домена
Тип




логическое
физическое


Поставки
Код продукта
13 EMBED PBrush 1415 *
код продукта
t_prod_id
число


Код поставщика
13 EMBED PBrush 1415*
код поставщика
t_suppl_id
число


Дата
13 EMBED PBrush 1415
дата поставки
t_DateP
дата


Цена

цена продукта
t_cost
число


К_во

количество продукта в поставке
t_quantity
число

* атрибуты первичного ключа одновременно являются внешними
Данные о связях сущностей объектной области приведены в таблице 6.
Таблица 6 ( Связи для сущностей, входящих в объектную область
«Поставка продуктов»
Родительская сущность
Дочерняя сущность
Тип связи
Степень
связи
Нулевые значения
Глагольная фраза

Продукты
Поставки
Идентифицирующая
0 или 1 к 0,
1 или более
No NULLS
входят в

Поставщики
Поставки
Идентифицирующая
0 или 1 к 0,
1 или более
No NULLS
выполняют

После внесения всех элементов диаграмма области поставки продуктов должна выглядеть, как показано на рисунке 18.

Рисунок 18 ( Диаграмма объектной области «Поставка продуктов»
Создайте атрибуты сущностей объектной области «Организация процесса питания» (таблица 7).
Таблица 7( Атрибуты сущностей, входящих в объектную область
«Организация процесса питания»
Сущность
Атрибут
Ключ
Имя домена
Тип




логическое
физическое


Трапезы
код трапезы
13 EMBED PBrush 1415
код трапезы
t_meal_id
число


трапеза

название трапезы
t_meal_name
строка

Меню
строка
13 EMBED PBrush 1415
строка меню*
t_menu_id
число


датаМ

дата меню
t_dateM
дата

Выбор
место**

13 EMBED PBrush 1415
номер места в столовой
t_place_id

число

Атрибут «строка» в таблице 7 представляет собой порядковый номер строки меню, востребованной на каком-либо месте в столовой, поэтому для описания экземпляра сущности «Выбор» обязательно необходимо указывать меню. Поэтому сущности «Меню» и «Выбор» связаны идентифицирующей связью, причем родителем является «Меню» (рисунок 19). Кроме того, строка меню должна относиться к некоторой трапезе (завтраку, обеду и т.д.), поэтому установим неидентифицирующую обязательную связь между сущностями «Трапезы» и «Меню» (родительский конец связи – «Трапезы»). Связь выбрана неидентифицирующая, т.к. сущность «Меню» может быть самостоятельно идентифицирована с помощью собственного ключа (номер строки меню).


Рисунок 20 ( Диаграмма объектной области «Организация процесса питания»

Теперь на диаграмме (рисунок 21) отображены все объектные области, и она выглядит как совокупность не связанных друг с другом групп сущностей.

Рисунок 21 ( ER-диаграмма после определения объектных областей
Анализ ER-диаграммы, представленной на рисунке 21, свидетельствует о том, что на ней недостает еще одной сущности, объединяющей объектные группы «Поставка продуктов» и «Блюда в меню». Эта сущность (ее можно назвать «Состав») должна содержать информацию о том, какие продукты входят в состав блюд, имеющихся в рецептурном справочнике пансионата. Кроме того, необходимо также хранить информацию о весе продукта, входящего в блюдо. Для этого введем в модель сущность «Состав» с атрибутом «Вес», соединив ее идентифицирующими связями с родительскими сущностями «Продукты» и «Блюда» (таблица 8).
Таблица 8( Сущность «Состав»
Сущность
Атрибут
Ключ
Имя домена
Тип




логическое
физическое


Состав
код блюда
13 EMBED PBrush 1415*
код блюда
t_prod_id
число


код продукта
13 EMBED PBrush 1415*
код продукта
t_dish_id
число


вес

вес
t_weigh_id
число

* атрибуты первичного ключа одновременно являются внешними
Хотя «Состав» является ключевой связующей сущностью модели, собственных атрибутов у нее всего один ( все остальные атрибуты представляют собой мигрировавшие ключи связанных с ней сущностей (таблица 9).
Кроме того, в соответствии с анализом предметной области, в модели должна быть взаимосвязь между объектными областями «Блюда в меню» и «Организация процесса питания», которой в модели пока нет. Заметим, что в меню должна быть информация о том блюде, которое представлено в его строке. Поэтому установим неидентифицирующую связь от сущности «Блюда» (родительский конец) к сущности «Меню» (неидентифицирующую, поскольку независимая сущность «Меню» уникально идентифицируется собственным ключом «строка», т.е. номером строки). В результате миграции при установлении связи в сущности «Меню» появится внешний ключ «Код блюда», не входящий в первичный ключ. Информацию о новой связи поместим в таблицу 9.
Таблица 9( Связи с сущностью «Состав»
Родительская сущность
Дочерняя сущность
Тип связи
Степень связи
Нулевые значения
Глагольная фраза

Продукты
Состав
Идентифицирующая
0 или 1 к 0, 1 или более
NO NULLS
входят в

Блюда
Состав
Идентифицирующая
0 или 1 к 0, 1 или более
NO NULLS
включают в

Таблица 10 – Связь между объектными областями «Блюда в меню» и
«Организация процесса питания»
Родительская сущность
Дочерняя сущность
Тип связи
Степень связи
Нулевые значения
Глагольная фраза

Блюда
Меню
Неидентифицирующая
0 или 1 к 0, 1 или более
NOT NULLS
включено в


После введения этих изменений диаграмма должна выглядеть, как показано на рисунках 22 и 23.
На вкладке «Уровень сущностей» сохраните модель, например, под именем pr3_3.er1.
Выполните индивидуальное задание по определению связей между сущностями, входящими в объектные области модели ERwin для предметной области, указанной в варианте индивидуального задания.

Рисунок 22( ER-диаграмма базы данных «Столовая №1». Уровень сущностей

Рисунок 23 - ER-диаграмма базы данных «Столовая №1». Уровень атрибутов
В ходе выполнения работы были определены атрибуты и установлены связи между сущностями, входящими в объектные области «Блюда в меню», «Поставка продуктов», «Организация процесса питания». Готовая ER-диаграмма базы данных получилась достаточно громоздкой, особенно на уровне атрибутов. С такой моделью трудно работать. В целях упрощения работы со сложными моделями CASE-средство ERwin позволяет разбивать модель на подмножества (Subject Area).
В данный момент модель имеет только одно подмножество ( главное (Main Subject Area), для которого создано два хранимых отображения ( «Уровень сущностей» и «Уровень атрибутов». Так как модель становится труднообозримой, особенно на уровне атрибутов (или колонок), то ее можно разбить на несколько подмножеств ( объектных областей, каждая из которых будет содержать часть сущностей модели.
Задание 4. Разделить модель на подмножества
Откройте проект, созданный ранее, например, pr3_3.er1, и сразу сохраните его под новым именем (например, pr3_4.er1).
Выберите в главном меню ERwin пункт Model
· Subject Areas... (рисунок 24).

Рисунок 24 – Выбор в меню ERwin пункта Model
· Subject Areas...
Диалоговое окно редактора (рисунок 25) содержит в верхней части список заданных в модели подмножеств. По умолчанию в нем имеется одно главное подмножество ( Main Subject Area, которое не может быть удалено.

Рисунок 25 – Редактор подмножеств модели
Остальные подмножества могут добавляться и удаляться по усмотрению разработчика. Для этого справа от списка имеется три кнопки:
New ( вызывает диалог, в котором следует задать имя нового подмножества. Вновь введенное подмножество добавляется в список.
Rename ( позволяет переименовать подмножество.
Delete ( удаляет подмножество из списка, а после выхода из редактора нажатием «ОК» ( из модели.
Добавьте в список два новых подмножества:
Закупочно-производственная сфера (рисунок 26).
Организация процесса питания.

Рисунок 26 – Добавление в список нового подмножества
«Закупочно-производственная сфера»
Редактор подмножеств модели после выполнения третьего пункта примет вид, представленный на рисунке 27.

Рисунок 27 – Редактор подмножеств модели после добавления в список
двух новых подмножеств
В нижней части окна редактора имеется несколько страниц (вкладок), позволяющих редактировать свойства подмножеств.
General (общие свойства). В поле Author вводится имя автора, ведущего данное подмножество модели (см. рисунок 27). Кроме того, на этой же странице имеется флаг Filter Dangling Relationships from Schema Gen (Отфильтровать висячие связи при генерации схемы).
Суть этой опции заключается в следующем: когда создается подмножество модели, мы включаем в него часть таблиц и других объектов главного подмножества, чтобы можно было работать с меньшими группами таблиц. По умолчанию, когда ERwin генерирует схему для текущего подмножества, он формирует ссылки на таблицы, которые не вошли в это подмножество, особенно в запросах, связанных с внешними ключами и триггерами. Установка данного флага отключает генерацию этих ссылок.
Members (члены). Выбор объектов, которые следует включить в заданное подмножество. Для этого имеется два списка Available Entities (Доступные сущности) и Included Entities (Включенные сущности). В зависимости от переключателя Display Names (Показывать имена) в нижней части страницы, списки содержат логические или физические имена сущностей (рисунок 27).
Перемещение объектов между списками производится при помощи кнопок, приведенных в таблице 11.
Таблица 11 – Кнопки перемещения объектов между списками
Кнопка
Назначение кнопки

13EMBED PBrush1415
Перенос выделенного объекта


Перенос всех объектов, содержащихся в соответствующем списке

13EMBED PBrush1415
Перенос выбранного объекта «гнездом», вместе со связанными с ним объектами. При этом появляется диалог (рисунок 27), позволяющий задать режим отбора объектов: 1) все, входящие в иерархию связи (all);
2) объекты, входящие в иерархию не больше заданного уровня


Рисунок 28 – Вкладка Members. Выбор объектов подмножества модели
Режим выбирается как для объектов, находящихся выше по иерархии (Ancestors), так и для потомков (Descendants), например, если выбрать сущность «Трапезы» и установить для потомков уровень 1 , то будут выбраны сущности «Трапезы» и «Меню». Если для сущности «Трапезы» установить уровень 2, то в выборку попадут уже сущности «Трапезы», «Меню» и «Выбор»

Рисунок 29 – Диалог отбора объектов
Text blocks (Текстовые блоки). Каждое подмножество может обладать на диаграмме своим подмножеством текстовых блоков ( комментариев, включаемых в схему для улучшения ее читаемости. Текстовые блоки заносятся в диаграмму при помощи кнопки . Метод выбора текстовых блоков такой же, как и у рассмотренных выше объектов модели ( на странице имеется два списка и ряд кнопок для перемещения выбранных позиций между списками.
Definition (Определение). Позволяет ввести текстовый комментарий к подмножеству модели.
UDP (Пользовательские свойства). Подключение к подмножеству модели специально заданных пользователем свойств.
Задайте для введенных подмножеств сущности (таблица 12).
Таблица 12 ( Подмножества и входящие в них объекты
Подмножество модели
Объекты

Закупочно-производственная сфера
Виды блюд, Блюда, Рецепты, Продукты,
Поставщики, Поставки, Состав

Организация процесса питания
Трапезы, Меню, Выбор

После нажатия кнопки ОК заданные подмножества будут созданы в модели. Переключение между подмножествами легко осуществляется при помощи выпадающего списка на панели кнопок (рисунок 29).

Рисунок 30 – Выпадающий список на панели кнопок (выбор подмножеств модели)
Созданные подмножества показаны на рисунках 32, 33. Для удобства можно создать для каждого подмножества хранимые отображения «Уровень сущностей» и «Уровень атрибутов», как это было сделано ранее для главного подмножества.
Подмножества модели отображаются в проводнике модели (рисунок 30), вкладка .

Рисунок 31 – Подмножество «Организация процесса питания»

Рисунок 32 – Подмножество «Закупочно-производственная сфера»

Рисунок 33 – Отображение подмножеств в проводнике модели
Если в этом контекстном меню выбрать команду Go To, то можно перейти к подмножеству модели, которое будет отображено в окне дизайнера модели (рисунок 34).

Рисунок 34 – Контекстное меню подмножества модели
Сохраните модель, например, под именем pr3_4.er1.
Самостоятельная работа

Задание 1. Документировать результаты разработки модели в ERwin
Инструментом генерации отчетов в ERwin служит Report Browser. Он эффективен и прост в использовании.
Созданный генератором Report Browser отчет выводится в виде таблицы, включающей выборку по объектам модели и их свойствам. Содержащиеся в выборке данные могут различным образом сортироваться и фильтроваться.
Создавать собственные отчеты пользователю позволяет содержащаяся в генераторе отчетов Report Browser иерархическая структура, в которой хранится большое количество предопределенных отчетов, объединенных по типам.
Различают:
создание отчета ( задание параметров выборки;
выполнение отчета ( получение этой выборки.
Результаты выполнения отчетов в виде таблицы могут печататься и экспортироваться в распространенные форматы.
Диалог Data Browser (рисунок 1) вызывается кнопкой панели инструментов или выбором пункта меню «Tools | Data Browser».

Рисунок 1 ( Окно генератора отчетов Data Browser
Генератор отчетов Data Browser включает свое собственное главное меню и панель инструментов.
Панель инструментов (рисунок 2) содержит кнопки, позволяющие генерировать отчеты и работать с ними.

Рисунок 2 ( Панель инструментов генератора отчетов Report Data
Основную часть окна генератора отчетов занимает область выборки «Result Set». После выполнения отчета здесь выводится таблица с данными. Слева от нее находится дерево отчетов, под которым расположено мемо-поле «Report Description» (описание отчета).
В нижней части окна имеется панель контроля дерева (рисунок 3), позволяющая настраивать вид дерева, удалять его узлы и редактировать отчеты.

Рисунок 3 ( Панель контроля дерева отчетов
Дерево отчетов содержит предопределенные отчеты, упорядоченные по типам получаемых данных. Пользователь может редактировать предопределенные отчеты, а также создавать свои отчеты. Для выполнения отчета следует:
выбрать его в дереве отчетов или в выпадающем списке, находящемся на панели инструментов;
нажать на кнопку выполнения.
Например, создадим отчет о сущностях модели с указанием атрибутов и первичных ключей.
Для этого нужно выбрать кнопку (новый) и в появившемся диалоге выбрать отчет (Report), рисунок 4.

Рисунок 4
· Создание нового отчета
Создание нового отчета производится в появившемся диалоге Reports (Отчеты) (рисунок 5). Начинают с ввода имени отчета в поле «Name». После этого следует выбрать категорию объектов, по которой будет формироваться выборка.

Рисунок 5
· Выбор категории отчета
Список категорий зависит от того, какой режим модели выбран переключателем ( «Logical» (логический) или «Physical» (физический). После выбора категории в окне на странице «Options» появится иерархический список, пункты которого задают содержание отчета.
Некоторые пункты списка можно раскрыть, щелкнув мышью по символу . Для того, чтобы какой-либо пункт списка был включен в отчет, следует проставить «птичку» рядом с этим пунктом. Позиции списка, которые можно будет редактировать в отчете, помечены символом .
Помимо пунктов, задающих включение тех или иных колонок в результирующую выборку отчета, имеются разделы списка, определяющие фильтр и сортировку данных отчета Filter. Этот раздел содержит возможные фильтры, накладываемые на результат. Для выбора фильтра необходимо проставить флажок рядом с соответствующим пунктом иерархического списка.
В нашем примере выбираем нужные опции в появившемся слева списке: имя сущности, имя атрибутов сущности и имя атрибутов первичного ключа (рисунок 6).

Рисунок 6
· Выбор опций отчета
Справа на той же странице имеется переключатель, позволяющий выбрать режим работы со списком:
Edit. Редактирование списка. При этом в дереве выводятся все доступные для выбранной категории пункты.
Show Selected Only (показывать только выбранные). В этом режиме список содержит только элементы, помеченные в режиме редактирования.
Кнопки, находящиеся справа от списка:
Show Selected (показать выбранные) ( раскрывает только те папки, которые содержат выбранные элементы. Также показываются и невыбранные элементы, находящиеся в этих папках.
Collapse All (свернуть все) ( сворачивает все папки списка.
Clear All (очистить все) ( сбрасывает все флажки выбора, установленные пользователем.
После нажатия кнопки ОК отчет готов к выполнению.
Выполнить отчет можно, нажав кнопку или с помощью контекстного меню (пункт Execute report r_1’, рисунок 7).

Рисунок 7
· Выполнение отчета
Результат выполнения отчета выводится в правом окне генератора отчетов в виде таблицы (рисунок 8). В верхней части таблицы указывается тип отчета, имя диаграммы, дата/время получения отчета и число строк в выборке.

Рисунок 8 ( Результат выполнения отчета
Для печати полученного отчета необходимо нажать кнопку «Печатать выборку» на панели инструментов.
Для экспортирования данных отчета следует выбрать пункт меню «Export ...».
В диалоге экспорта (рисунок 9) пользователю предлагается выбрать
Формат экспорта (Export format). Доступны следующие форматы:
Стандартный HTML формат. Результат может просматриваться любым браузером Интернета, а также импортироваться стандартными офисными приложениями, такими как MS Excel и MS Word.
CSV. Текстовый формат, табличные значения разделены запятыми. Воспринимается большинством табличных процессоров, например MS Excel.
DDE. Экспорт в любое приложение, поддерживающее механизм передачи данных Dynamic Data Exchange, например MS Word.
RPTwin. Передача данных в RPTwin, расширенный генератор отчетов фирмы Logic Works.

Рисунок 9 ( Диалог экспорта отчета
Визуальное представление отчета. Параметры этого представления задаются групповым переключателем «Presentation».
Tabular (табличное). Отчет экспортируется в табличном виде, точно так же, как он представлен на экране.
Tabular with duplicates (табличное с дубликатами). То же, что и предыдущее представление, однако таблица будет содержать дубликаты значений, исключенные для улучшения восприятия.
Master Detail («главный-подчиненный»). Выборка экспортируется в формате, который использует комбинацию заголовков и таблиц. При этом генератор отчетов сам определяет, какие значения должны печататься в заголовках, а какие в таблицах, используя связи между компонентами диаграммы.
Indented («список с вставками») ( Отчет выводится в виде списка, в который после объектов диаграммы могут быть вставлены данные зависимых объектов. Для определения зависимости объектов Report Browser использует связи, заданные в диаграмме.
Item per line (одно значение в строке). Выборка печатается по строкам, каждая из которых содержит только одно значение таблицы.
Направление экспорта данных (Export to).
File. Экспорт в файл.
Clipboard. Экспорт данных в буфер обмена.

Задание 2. Создать отчет о созданной модели
Открыть модель.
Сохранить модель (например, под именем pr3s.er1).
Создайте и выполните отчеты в генераторе Report Data для заданных параметров выборки (по указанию преподавателя).

Контрольные вопросы
Как различают зависимые и независимые сущности на диаграмме ERwin?
Какая связь между сущностями называется неидентифицирующей?
Что такое физическая и логическая модель данных?
Какая связь между сущностями называется идентифицирующей?
Поясните смысл утверждения о том, что некоторый атрибут «мигрировал»?
Что обозначает символика «FK» на диаграмме ERwin?
Какими возможностями обладает редактора связей?
Каково изображение связей в нотации IDEF1X?
Что такое супертип?
Что такое подтип?
Каков набор допустимых действий или правил, определяемых в логической модели для идентифицирующей связи?
Каков набор допустимых действий или правил, определяемых в логической модели для неидентифицирующей связи?
Как производится обозначение ссылочной целостности на диаграмме ERwin?
Какие связи между сущностями были использованы при выполнении индивидуального задания?
Какие основные выводы можно сделать по результатам выполнения индивидуального задания?

Форма отчета по практическому занятию: Отчет оформляется в электронном виде (текстовый или html- документ) по шаблону и должен включать:
Название работы.
Цель работы.
Формулировку индивидуального задания и результат его выполнения.
Краткие выводы по результатам выполнения работы.

Список литературы для самостоятельной работы
Электронная библиотека: http://www. e.lanbook.com/









13 PAGE \* MERGEFORMAT 143015




Рисунок 86Рисунок 87Рисунок 91Рисунок 93Рисунок 96Рисунок 97Рисунок 98Рисунок 99Рисунок 100Рисунок 102Root Entry

Приложенные файлы

  • doc pr03
    Размер файла: 1 MB Загрузок: 1

Добавить комментарий