Создание логической модели БД
Проведем анализ ПрО с целью выделить основные сущности. Поскольку речь идет об учете сделок купли-продажи акций, ясно, что в модели должна присутствовать сущность СДЕЛКА (Тransaction). Понятие сделка подразумевает участие по крайней мере двух совершающих ее сторон, а также наличие предмета сделки. Так как участниками сделки являются клиент и кассир, а предметом сделки являются акции, при чем клиенты могут быть двух категорий − ФИЗИЧЕСКОЕ ЛИЦО (Natural person) и ЮРИДИЧЕСКОЕ ЛИЦО (Legal entity), необходимо ввести еще сущности: АКЦИЯ (Share), ФИЗИЧЕСКОЕ ЛИЦО (Natural person), ЮРИДИЧЕСКОЕ ЛИЦО (Legal entity) и КАССИР (Teller). Таким образом, получаем модель, состоящую из пяти сущностей − АКЦИЯ, КАССИР, СДЕЛКА, ФИЗИЧЕСКОЕ ЛИЦО и ЮРИДИЧЕСКОЕ ЛИЦО. Теперь для каждой сущности необходимо указать первичный ключ и неключевые атрибуты. Источником информации в этом случае должен стать перечень требований, приведенных в задании. Рассмотрим каждую из сущностей. Атрибутами сущностей ФИЗИЧЕСКОЕ ЛИЦО и ЮРИДИЧЕСКОЕ ЛИЦО будут ˂фамилия˃, ˂имя˃, ˂отчество˃ и ˂номер паспорта˃. Кроме общих атрибутов сущность ФИЗИЧЕСКОЕ ЛИЦО содержит атрибут ˂идентификационный код˃, а сущность ЮРИДИЧЕСКОЕ ЛИЦО – ˂номер доверенности˃. Эти атрибуты следует определить как ключевые, т.к. они однозначно будут идентифицировать сущности. Из атрибутов сущности КАССИР − ˂учетный номер˃ и ˂фамилия и инициалы˃ − первичным ключом будет ˂учетный номер˃. Для сущности АКЦИЯ формально определим три атрибута: ˂код акции˃, ˂наименование акции˃ и ˂номинал˃, из которых первый будет первичным ключом. Что касается сущности СДЕЛКА, то часть атрибутов у нее будет внешними ключами: ˂код продаваемой акции˃, ˂код покупаемой акции˃, ˂учетный номер кассира˃, ˂идентификационный номер физического лица˃, ˂номер доверенности юридического лица˃, а часть будет добавлена: ˂уникальный цифровой код сделки˃ в качестве первичного ключа, ˂количество купленных акций˃, ˂количество проданных акций˃ и ˂дата и время сделки˃. Для создания новой модели в Clay Mark II необходимо в окне редактора модели в режиме логического представления разместить все необходимые сущности. Переключения между логическим и физическим представлением осуществляется с помощью кнопок (рисунок 6.7).
Рисунок 6.7 – Редактор модели БД Для добавления сущности в модель используется кнопка Add Table (рисунок 6.8). Рисунок 6.8 – Кнопка добавления сущности (таблицы) Нажав кнопку Add Table и кликнув в любом свободном месте редактора модели, будет размещен прямоугольник с именем по умолчанию TABLE_1. Если дважды щелкнуть на нем левой кнопкой мыши, будет открыто окно редактирования параметров сущности (таблицы) (рисунок 6.9). Рисунок 6.9 – Редактор параметров сущности На этапе логического проектирования можно редактировать только параметры: логическое имя, первичный ключ. Эта информация будет отображаться в режиме просмотра логической модели БД (рисунок 6.10). Рисунок 6.10 – Редактирование параметров сущности Для редактирования атрибутов сущности предназначена вкладка Columns редактора сущностей (рисунок 6.11). Рисунок 6.11 – Редактор атрибутов сущности Как видно из рисунка, пользователю доступны следующие действия: - добавить новый атрибут (колонку) в конец списка – Add New, или перед текущим атрибутом – Insert New); - удалить атрибут; - добавить описание; - ввести имя; - задать логическое имя; - указать тип данных (Data Type); - определить значение по умолчанию (Default); - указать обязательность ввода значений (Mandatory); - определить атрибут как первичный ключ (Primary Key). На диаграмме атрибуты, составляющие первичный ключ, принято располагать в верхней части прямоугольника сущности. Они отделяются от прочих атрибутов линией подчеркивания. После добавления таблиц логическая модель примет вид, как показано на рисунке 6.12. Рисунок 6.12 – Логическая модель Следующим шагом в процессе создания логической модели должно стать определение связей между сущностями. Для задания связи между двумя сущностями необходимо указать направление связи (родительская и дочерняя сущности), мощность связи, допустимость пустых (null) значений, требования по обеспечению ссылочной целостности, а в некоторых случаях и роли. Для определения параметров связей между указанными сущностями сначала составим описание ПрО при помощи ряда истинных высказываний на естественном языке: - любой КЛИЕНТ должен совершить одну или несколько СДЕЛОК; - каждую СДЕЛКУ должен совершать только один КЛИЕНТ; - любой КАССИР может обслуживать нуль, одну или несколько СДЕЛОК; - каждую СДЕЛКУ должен обслуживать только один КАССИР; - любая АКЦИЯ может покупаться и продаваться при разных СДЕЛКАХ; - при совершении СДЕЛКИ АКЦИИ могут только покупаться, только продаваться или покупается один тип АКЦИЙ и продается другой тип АКЦИЙ или наоборот. Анализ приведенных высказываний позволяет выделить четыре связи. 1. КЛИЕНТ совершает (make a bargain) СДЕЛКА. 2. КАССИР обслуживает (serve) СДЕЛКА 3. АКЦИЯ покупается при (is purchased) СДЕЛКА. 4. АКЦИЯ продается при (is soled) СДЕЛКА. Все четыре связи являются связями "один-ко-многим". Во всех четырех случаях сущность СДЕЛКА является дочерней. При определении этих связей необходимо учесть, что любая сделка становится фактом только в том случае, если в наличии имеются действующие лица и предмет сделки. Отсюда следует, что во всех четырех связях внешние ключи, ссылающиеся на родительские сущности, не могут принимать пустые значения. В то же время могут быть экземпляры родительских сущностей, на которые не ссылается ни один из экземпляров сущности СДЕЛКА, например, могут быть акции, которые не использовались ни в одной из сделок. Таким образом, все связи, кроме первой, могут иметь мощность 0, 1 или более. Первая связь не может иметь мощность 0, т.к. в данном случае любой человек становится КЛИЕНТОМ только тогда, когда он совершает хотя бы одну сделку. Для установления связей между сущностями используется кнопка Foreign Key Reference (рисунок 6.13). Рисунок 6.13 – Кнопка добавления связи между сущностями (таблицами) Для установления связи между сущностями надо последовательно щелкнуть левой клавишей мыши по кнопке соответствующего типа на панели инструментов (рисунок 6.13), по прямоугольнику дочерней сущности и затем − по прямоугольнику родительской сущности. Параметры связей задаются при помощи редактора связей (рисунок 6.14). Вызвать этот редактор можно двойным щелчком левой клавиши мыши по линии связи. Рисунок 6.14 – Редактор связи В открывшемся окне необходимо выбрать поле, являющееся внешним ключом у дочерней сущности, определить ограничение ссылочной целостности, задать имя связи и логическое имя. На вкладке Decorations задаются степени концов связи и, если нужно, определяются роли сущностей, участвующих в связи (рисунок 6.15). Рисунок 6.15 – Редактирование степени связи и ролей сущностей В результате выполнения описанных действий ER-модель примет вид, как показано на рисунке 6.16. Рисунок 6.16 – Логическая модель На этом процесс создания логической модели БД завершается
|