
- •5.6.7. Пример разработки модели бд с помощью eRwin
- •5.6.7.1. Постановка задачи
- •5.6.7.2. Создание логической модели бд
- •5.6.7.3. Создание физической модели бд и генерация схемы бд
- •Глава 6* Системы, основанные на знаниях 6.1. Знания и их представление
- •6.1.1. Знания
- •Увеличение сложности решаемых задач приводит к тому, что программы становятся все сложнее для понимания, и поэтому затрудняется их разработка.
- •Алгоритм решения задачи неизвестен или не может быть использован из-за ограниченности ресурсов компьютера;
- •Задача не может быть определена в числовой форме;
- •Цели задачи не могут быть выражены в терминах точно определенной целевой функции.
на родительскую сущность и один раз нажимает левую клавишу мыши, а затем - на дочернюю сущность и вновь нажимает клавишу мыши.
Заметим, что при переключении на уровень физической модели облик данной панели меняется (рис. 5.6.14): вместо кнопки создания категорийной связи появляется кнопка создания представления (view) таблицы, а вместо кнопки создания связи многие-ко-многим - кнопка задания связи между таблицей и представлением. Кнопка создания сущности на физическом уровне носит название кнопки создания независимой таблицы.
I
W I""""
1 I •*'"*•
1 wwi
¥ ■ .— ■■ , J .1 ... |l—llJ II ИИ |Д I
Рис. 5.6.14. Дополнительная панель инструментов на уровне физической модели
Как логическая, так и физическая модель содержат несколько уровней отображения (названия для физической модели заключены в круглые скобки): 7. Уровень "сущности" ("таблицы") - внутри прямоугольников отображается имя сущности (для логической модели) или имя таблицы (для физического представления модели); служит для удобства обзора большой диаграммы или размещения прямоугольников сущностей на диаграмме.
-
Уровень "атрибуты " ("колонки "). При переходе от предметной области к модели требуется вводить информацию о том, что составляет сущность. Эта информация вводится путем задания атрибутов (на физическом уровне - колонок таблиц). В этом режиме прямоугольник-сущность делится линией на две части: в верхней части отображаются атрибуты (колонки), составляющие первичный ключ, а в нижней - остальные атрибуты.
-
Уровень "описание сущности " ("комментарии ") служит для презентации диаграммы другим людям.
-
Уровень "первичные ключи " - внутри прямоугольников-сущностей показываются только атрибуты/колонки, составляющие первичный ключ.
-
Уровень "пиктограммы". Для презентационных целей каждой таблице может быть поставлена в соответствие пиктограмма. На уровне физической модели заменяется уровнем упорядочения.
Переключение между уровнями отображения производится при помощи кнопок панели инструментов или при помощи всплывающего меню, возникающего при нажатии правой клавиши мыши на пустом месте диаграммы (рис 5.6.15).
Рис. 5.6.15. Пример переключения между уровнями отображения
Все объекты, представленные надаатрамме, могут редактироваться средствами, принятыми в Windows, - группировка, копирование, удаление, перемещение, использование системного буфера.
Нажатие клавиши мыши над сущностью приводит к появлению окна одного из многочисленных редакторов ERwin, среди которых:
-
редактор сущностей в целом (определение сущности, дополнительная информация, триггеры, индексы, характеристики таблицы, хранимые процедуры, связанные с таблицей);
-
редактор атрибутов (определение атрибутов, колонки таблицы в физическом представлении модели, репозитарий средства 4GL, например, расширенные атрибуты в PowerBuilder).
Подробнее редакторы, а также некоторые другие элементы интерфейса будут рассмотрены по ходу изложения в следующем пункте.
5.6.7. Пример разработки модели бд с помощью eRwin
5.6.7.1. Постановка задачи
В гипотетическом пункте обмена валют создается локальная информационная система (ИС), призванная автоматизировать процесс учета сделок купли-продажи валюты. Создаваемая система должна обеспечить ввод, хранение и поиск информации о сделках, совершенных в данном пункте обмена. Каждой сделке присваивается уникальный цифровой код. Информация о сделке должна содержать сведения о дате и времени сделки, суммах покупаемой и продаваемой валют, фамилии, имени, отчестве и номере паспорта клиента, а также о фамилии, инициалах и учетном номере личного дела кассира в отделе кадров. Система должна позволять вычислить денежный оборот за один или несколько дней, а также осуществлять поиск информации о сделках по номеру
5.6.7.2. Создание логической модели бд
Проведем анализ предметной области с целью выделить основные сущности. Поскольку речь идет об учете сделок купли-продажи валюты, ясно, что в модели должна присутствовать сущность СДЕЛКА. Согласно правилам, на ER-диаграмме названия сущностей записываются большими буквами. Напомним, что название сущности - это название типа, а не множества объектов. Поэтому оно чаще всего выражается существительным в единственном числе (ср. СДЕЛКИ).
Понятие сделка подразумевает участие по крайней мере двух совершающих ее сторон, а также наличие предмета сделки. Т.к. участниками сделки являются клиент и кассир, а предметом сделки является валюта, необходимо ввести еще три сущности: ВАЛЮТА, КЛИЕНТ и КАССИР.
Внесем перечисленные сущности в диаграмму. Названия сущностей можно редактировать непосредственно на диаграмме, как это показано на рис. 5.6.16.
Для внесения дополнительных сведений необходимо воспользоваться редактором сущностей. Перейти в него можно при помощи всплывающего меню (рис 5.6.17), возникающего при нажатии правой клавиши мыши над любой из сущностей.
случаях и роль.
Для задания связей между указанными сущностями сначала составим описание данной предметной области при помощи ряда истинных высказываний
на естественном языке.
Любой КЛИЕНТ должен совершить одну или несколько СДЕЛОК.
Каждую СДЕЛКУ должен совершать только один КЛИЕНТ.
Любой КАССИР может обслуживать одну или несколько СДЕЛОК, но может не обслуживать и ни одной (например, только принят на работу).
Каждую СДЕЛКУ должен обслуживать только один КАССИР.
Любая ВАЛЮТА может покупаться и продаваться при разных СДЕЛКАХ.
При совершении СДЕЛКИ должна покупаться одна ВАЛЮТА и продаваться другая ВАЛЮТА.
Анализ приведенных высказываний позволяет выделить четыре связи (названия связей - глаголы):
КЛИЕНТ совершает СДЕЛКУ.
КАССИР обслуживает СДЕЛКУ.
ВАЛЮТА покупаться при СДЕЛКЕ.
ВАЛЮТА продается при СДЕЛКЕ.
Все четыре связи являются связями "один-ко-многим". Во всех четырех случаях сущность СДЕЛКА является дочерней.
Все связи неидентифицирующие, т.к. любой экземпляр сущности СДЕЛКА может быть однозначно идентифицирован по коду сделки, т.е. вне зависимости от экземпляров других сущностей.
Все связи, кроме первой, могут иметь мощность 0, 1 или более. Первая связь не может иметь мощность 0, т.к. в данном случае любой человек становится КЛИЕНТОМ только тогда, когда он совершает хотя бы одну сделку.
Во всех четырех связях родительские сущности не могут принимать пустые значения, т.к. при отсутствии экземпляра хотя бы одной из родительских сущностей экземпляр сущности СДЕЛКА перестает описывать сделку по обмену валюты.
Эти параметры задаются при помощи редактора связей (рис. 5.6.19). Вызвать этот редактор можно двойным нажатием левой клавиши мыши над связью.
Задание ограничений ссылочной целостности, а также указание ролей производится на закладке Rolename/RI Action панели диалога редактора связей (рис. 5.6.20).
Указание ролей понадобится лишь для связей между сущностями ВАЛЮТА и СДЕЛКА (см. пример на рис. 5.6.4).
После задания связей между сущностями диаграмма будет выглядеть следующим образом (см. рис. 5.6.21).
Рис. 5.6.21. Логическая модель со связями
Теперь для каждой сущности необходимо указать первичные ключи и неключевые атрибуты. Кроме того, для некоторых, возможно, понадобится задание альтернативных ключей и инверсных входов.
Хорошим источником информации в этом случае может стать перечень требований к хранимой информации, приведенный в задании. Рассмотрим по очереди каждую из сущностей.
Сведения о клиенте должны состоять из его фамилии, имени, отчества и номера его паспорта. Очевидно, что они и будут атрибутами сущности КЛИЕНТ. Первичным ключом можно было бы выбрать номер паспорта, поскольку он однозначно идентифицирует любой из экземпляров этой сущности. Однако номер паспорта не является числом, т.к., кроме цифр, содержит и буквы, и, следовательно, для его хранения будет использоваться строка минимум из 13 символов, что не совсем удобно. Поэтому введем для каждого КЛИЕНТА уникальный номер, который и будет первичным ключом. А атрибут "номер паспорта клиента" сделаем альтернативным ключом, чтобы обеспечить возможность быстрого поиска информации о сделках по его значениям, согласно заданию.
Сведения о кассире должны включать фамилию, инициалы и учетный номер кассира - они и будут атрибутами сущности КАССИР. Поскольку учетный номер личного дела кассира может содержать не только цифры, как и в предыдущем случае, введем для каждого экземпляра уникальный номер, который и будет первичным ключом.
По тем же соображениям сущность ВАЛЮТА будет содержать два атрибута: код валюты и название валюты, первый из которых будет первичным ключом.
Что касается сущности СДЕЛКА, то часть атрибутов она унаследует от родительских сущностей и остается лишь добавить следующие: "дата сделки", "время сделки", "сумма покупаемой валюты" и "сумма продаваемой валюты". Очевидно, что первичным ключом, следует выбрать уникальный цифровой код сделки. Поскольку в задании сказано, что создаваемая система должна позволять вычислить денежный оборот за один или несколько дней, полезно было бы сделать атрибут "дата сделки" инверсным входом, т.к. он довольно часто будет использоваться для доступа к данным.
Для задания первичных ключей и атрибутов используется редактор атрибутов. Перейти в него можно, воспользовавшись всплывающим меню, представленным на рис. 5.6.17. Панель диалога этого редактора изображена на рис. 5.6.22.
Для задания альтернативных ключей и инверсных входов следует воспользоваться редактором ключей. Переход в него осуществляется так же, как и в редактор атрибутов. Общий вид этого редактора приведен на рис. 5.6.23.
На этом процесс создания логической модели завершается, а сама модель приобретает вид, представленный на рис 5.6.24.