
Upravlenie_dannymi / Консп. лекций / ЛЕКЦИЯ9
.odtЛекция 9. Инфологическое проектирование БД (часть 4).
План лекции
-
Связь сущностей более чем через одно отношение.
-
Примеры разработки информационных моделей.
-
Альтернативный вариант изображения моделей.
-
Работа с пакетом Design/IDEF.
-
Создание новой страницы.
-
Выбор целевой СУБД.
-
Создание и определение сущности.
-
Добавление и определение атрибутов сущности.
-
Создание первичных и альтернативных ключей.
-
Создание и определение отношений связи: идентифицирующих, неидентифицирующих, неспецифических. Изменение характеристик отношения.
-
Создание дискриминатора.
-
Определение имени роли.
-
Порождение определения данных (DDL) на языке SQL.
Связь сущностей более чем через одно отношение
Один и тот же атрибут сущности-родителя может порождать в сущности-потомке более одного внешнего ключа. Так происходит при миграции атрибута в сущность-потомок более чем через одно отношение. В этом случае атрибут появляется внутри сущности более одного раза, что приводит к необходимости отличать одно появление от другого. Для этого каждому вхождению атрибута в дочернюю сущность может быть присвоено имя роли, показывающее, чем одно появление отличается от другого. В примере, показанном на рис.59, атрибут «Номер валюты» получил имена ролей «Проданная» и «Купленная».
Рис.1. Связь сущностей более чем через одно отношение
На рис. 59 приведены данные хранящиеся в таблицах ВАЛЮТА и ОПЕРАЦИИ С ВАЛЮТОЙ. Необходимо обратить внимание на то, что запись с номером 4 не может быть введена в таблицу ОПЕРАЦИИ С ВАЛЮТОЙ потому, что делается попытка ввести в колонке «Проданная» значение 5, но такая валюта не указана в таблице ВАЛЮТА.
Таблица Валюта
-
Номер валюты
Название валюты
1
Рубль
2
Доллар
3
Франк
4
Марка
---
---
Рис.2. Особенности ввода данных в связанные таблицы
Примеры разработки информационных моделей
1. В функциональной модели есть функция с названием ОТПУСК ТОВАРОВ. Информационная модель информационной поддержки выполнения этой функции изображена на рис. . Сведения о товарах хранятся в таблице ТОВАР, а сведения о фактах отпуска товаров – в таблице ОТПУСК_ ТОВАРОВ.
Рис.3. Данные хранящиеся в таблицах ТОВАР и ОТПУСК ТОВАРОВ
Рис.4
. Информационная модель для функции
ОТПУСК ТОВАРОВ
Таблица ТОВАР является справочником товаров хранящихся, например, на складе (рис.). Товар может быть отпущен со склада многократно. Для однозначной идентификации факта отпуска однотипных товаров в первичном ключе сущности ОТПУСК ТОВАРОВ используется дополнительный атрибут ДАТА ОТПУСКА.
2. Оформление заказа на товары (рис.). Клиенты некоторой фирмы заказывают товары. На заказываемые товары сотрудники фирмы оформляют заказ. В заказе в общем случае содержится несколько строк в которых указываются сведения о заказанных товарах и их количестве. Другой сотрудник фирмы комплектует заказ и упаковывает его. Еще один выполняет операцию погрузки и доставки товаров клиенту. Каждый сотрудник занимает определенную должность.
Рис.5. Пример разработки информационной модели
Альтернативный вариант изображения моделей. Сущность изображается в виде прямоугольников, а атрибуты в виде эллипсов «окружающих» прямоугольник сущности. Имя отношения записывается внутри ромба (Рис.64). Мощность отношения обозначается следующим образом:
0, 1 – мощность «ноль или один»;
1, 1 – мощность «один»;
1,* – мощность «один или много».
Рис.6. Альтернативный способ изображения сущностей, атрибутов и связей
Отношение читается так: «отдел состоит из одного или нескольких сотрудников».
Другой вариант:
Обязательность связи (класс принадлежности) иногда изображается в виде поля в прямоугольнике сущности.
Например, на рис.65,а изображена модель, в которой поля в сущностях не выделены, т.е. связь не обязательна. Отношение можно прочитать так: «Преподаватель читает 0, 1 или более курсов» и «Каждый курс читается 0 или 1 преподавателем».
На рис.65,б у сущности ПРЕПОДАВАТЕЛЬ выделено поле (класс ее принадлежности обязателен), т. е. «Каждый преподаватель читает 1 или несколько курсов» или «Курс читается 0 или 1 преподавателем».
На рис.65, в показан вариант обязательного участия каждой из сущностей. Эту модель можно прочитать так: «Каждый преподаватель читает 1 или несколько курсов» или «Курс читает 1 преподаватель».
Рис.7. Варианты указания обязательности связи
Одной из нотаций (Рис.66) является нотация Баркера. Используется в технологии создания ИС фирмы ORACLE (CASE – средство Oracle Designer)
Рис.8. Нотация Баркера
-
аналог неидентифицирующего отношения
- аналог
идентифицирующего отношения
Более подробно можно узнать в серии статей:
Рис.8.
Работа с пакетом Design/IDEF
Создание новой страницы. Запустите Design/IDEF. Выполните команду New в меню File. В диалоговом окне установки параметров выберите пункт IDEF1Х . В секции Startup Master Page Selection в выпадающем списке выберите пункт None , чтобы указать, что вы не будете использовать мастерскую-страницу.
Рис.9.
Щелкните мышью на кнопке OK. Будет создана новая страница.
Выбор целевой СУБД. Выберите в меню Edit команду Set options. Щелкните мышью на кнопке IDEF1Х. Выберите в списке Target Database наименование целевой СУБД, на которой будет реализована ваша база данных .
Рис.10.
Инструменты:
Создание
сущности.
Сущность создается командой Create/Entity
или с помощью кнопки
,
расположенной в палитре инструментов.
Поместите указатель в то место экрана,
в котором вы хотите расположить сущность
и щелкните мышью.
Откроется диалоговое окно Define Entity (рис.).
Рис.11.
Определение сущности. Design/IDEF автоматически назначает сущности ее уникальный идентификатор (Entity ID). Напечатайте имя сущности в поле Name, а в поле Alias – необязательный параметр (псевдоним) этой сущности. В поле Definition записывается текстовое описание сущности.
Добавление и определение атрибутов сущности. Щелкните мышью на кнопке ADD в диалоговом окне определения сущности. Откроется диалоговое окно определения атрибута (рис.).
Рис.12.
Введите имя атрибута в поле ввода Name. Поле Alias предназначено для необязательного параметра (псевдонима) атрибута. Далее необходимо выбрать тип данных (Data Type), указать длину поля (Length) и количество знаков после запятой (Precision).
Если данный атрибут является первичным ключом (или его частью), отметьте поле Primary Key.
Аналогично можно отметить поля альтернативных ключей (Alternate Key) или полей - дискриминаторов (Discriminator). Введите в поле ввода справа от метки Alternate Key номера всех альтернативных ключей, в которые входит данный атрибут. В поле Definition вводится текстовое описание атрибута.
После этого следует нажать кнопку OK, если введены все атрибуты сущности, или кнопку ADD, если необходимо добавить атрибуты.
После нажатия на кнопку OK становится активным окно определения сущности. В окне Attributes отображается список созданных атрибутов.
При завершении ввода информации о сущности необходимо нажать на кнопку OK.
Создание и определение отношений. После того как вы создали в модели несколько сущностей, вы можете установить отношения между ними.
Выберите команду Create/Relationship или щелкните мышью на кнопке Relationship расположенной в палитре инструментов.
Протяните дугу отношения соединив ею две сущности. Открывается диалоговое окно определения отношения (рис.). В нем в поле Relationship нужно ввести имя отношения с точки зрения родительской сущности. Вы можете также использовать поле Inverse, чтобы указать имя обратного отношения. Описание связи вводится в поле Definition.
Рис.13
Имеются три возможных типа отношений: Identifying (идентифицирующее), Non_identifying (неидентифицирующее) и Non_specific (неспецифическое). Если поле Null Allowed (нуль разрешен) отмечено, это означает, что экземпляр сущности-потомка может быть не связан ни с одним из экземпляров сущности-родителя. В списке Relationship Cardinality выбирается один из вариантов указания мощности отношения.
Изменение
характеристик отношения.
Дважды
щелкните мышью на дуге отношения.
Design/IDEF
откроет диалоговое окно определения
отношения. Вы можете быстро изменить
отношение между двумя сущностями с
идентифицирующего на неидентифицируещее
и наоборот. Для этого, сначала, щелкните
мышью на дуге отношения, чтобы выделить
ее, а затем щелкните на кнопке
,
расположенной в палитре инструментов.
Design/IDEF
внесет соответствующее изменение в
диаграмму.
Удаление отношения. Щелкните мышью на дуге отношения, чтобы выделить ее. Выделите команду Delete в меню Edit, или нажмите клавишу Delete. Если вы удалите идентифицирующее отношение или неидентифицирующее отношение, Design/IDEF автоматически удаляет все атрибуты, мигрировавшие в сущности-потомки в качестве ключей.
Создание дискриминатора. Если сущность имеет атрибут-дискриминатор, Design/IDEF вычерчивает объект-дискриминатор под сущностью.
Рис.14.
Рис.15
Рис.16
Вы
сможете изменить тип дискриминатора с
полного на неполный. Для этого необходимо
выделить дискриминатор и щелкнуть мышью
на кнопке
,
расположенной в палитре инструментов.
Рис.17
После того, как вы создадите сущности-категории для этого дискриминатора, протяните дуги отношений от дискриминатора к каждой сущности-категории. Для этих дуг имя определять не нужно.
Рис.18
Определение имени роли. Имя роли может быть определено для атрибута, являющихся внешним ключом. Войдите в диалоговое окно редактирования атрибута , являющегося внешним ключом, для которого вы хотите определить имя роли. Введите имя роли в поле Role Name и щелкните мышью на кнопке ОК.
Рис.19.
Рис.20.
Порождение определения данных (DDL) на языке SQL. Design/IDEF позволяет автоматически сгенерировать операторы определения данных на языке SQL, соответствующие разработанной вами IDEF1Х-модели. Выберите команду Export в меню File. Выберите пункт SQL Files (*.SQL) в списке выбора в разделе Format. Введите имя файла и укажите каталог, в котором будет сохранен файл. Щелкните мышью по кнопке ОК.
Рис.21.
Рис.22
CREATE TABLE PREPOD ( Prepod_ID INTEGER NOT NULL, Fam CHAR NULL, Adres CHAR NULL, Kafedra_ID INTEGER NULL ); CREATE UNIQUE INDEX IXPREPOD ON PREPOD ( Prepod_ID ASC ); CREATE TABLE KAFEDRA ( Kafedra_ID INTEGER NOT NULL, Nazvanie CHAR NULL ); CREATE UNIQUE INDEX IXKAFEDRA ON KAFEDRA ( Kafedra_ID ASC ); ALTER TABLE PREPOD ADD (PRIMARY KEY (Prepod_ID)); ALTER TABLE KAFEDRA ADD (PRIMARY KEY (Kafedra_ID)); ALTER TABLE PREPOD ADD (FOREIGN KEY (Kafedra_ID) REFERENCES KAFEDRA);
Список литературных источников
-
Построение моделей средствами пакета Design/IDEF: Методические указания к лабораторным работам / Рязан. гос. радиотехн. акад.; Сост.: В.В. Коваленко, М.В. Ерофеев, Е.Ю. Зубова, О.Г. Светников: Рязань: РГРТА, 2000. 40с.
-
Стандарт.Русская версия. Методология IDEF1X. МетаТехнология , 1993. 106с.