Товар
Код товара
№ отдела
Наименование Ед. измерения Цена ГОСТ
Название
Рис. 1.3. ER‑диаграмма полной атрибутивной модели
Переход от логической модели данных к физической заключается в том, что сущности преобразуются в таблицы, атрибуты и кортежи становятся соответственно столбцами и строками таблиц, домены отображаются в типы данных, принятые в конкретной СУБД. Таблицы, как и сущности, снабжаются первичными и внешними ключами и связываются между собой с помощью связей типа 1:1 и 1:М. Связи типа М:М при переходе к физической модели преобразуются в пары связей типа 1:М и связующие таблицы.
Если логическая модель представлена в виде ER-диаграммы, то переход к физической модели значительно упрощается. В этом случае с помощью CASE-средства, например ERwin, можно выбрать нужную СУБД и автоматически создать соответствующую физическую модель данных. Затем на ее основе ERwin может сгенерировать системный каталог базы данных или соответствующий SQL-скрипт (описание базы данных на языке SQL). Этот процесс называется прямым проектированием. Тем самым достигается масштабируемость – создав один раз логическую модель данных, можно генерировать физические модели данных под любую СУБД, которую поддерживает ERwin. С другой стороны, ERwin способен по содержимому системного каталога базы данных или SQL-скрипту воссоздать физическую и логическую модели данных. Этот процесс называется обратным проектированием. На основе логической модели, полученной в процессе обратного проектирования, можно сгенерировать физическую модель и системный каталог базы данных для другой СУБД. Тем самым решается задача по переносу структуры базы данных с одной СУБД на другую, например с SQL Server на Oracle или с Access на Sybase и т.д.
Создайте в ERwin новую модель данных. Тип модели (New Model Type) – Логическая/Физическая, целевая база данных (Target Database) – Access.
Логическая (Logical) модель должна включать в себя следующие 6 приведенных ниже сущностей (Entity). При этом первый атрибут в каждой сущности сделайте первичным ключом (Primary Key); атрибуты, отмеченные одной или двумя звездочками, – не создавайте, так как в дальнейшем они будут созданы автоматически в процессе установления связей между сущностями.
Сущность 1: Поставщик |
||
Атрибут (Attribute) |
Домен (Domain) |
Обязательный атрибут (Not Null) |
Код поставщика Имя поставщика Условия оплаты Код региона** Заметки |
Number String String Number Blob |
Да Да |
Сущность 2: Товар |
||
Атрибут (Attribute) |
Домен (Domain) |
Обязательный атрибут (Not Null) |
Код товара Наименование ЕдиницаИзм Цена Код валюты** |
Number String String Number String |
Да Да |
Сущность 3: Клиент |
||
Атрибут (Attribute) |
Домен (Domain) |
Обязательный атрибут (Not Null) |
Код клиента Имя клиента ФИО руководителя Код региона** |
Number String String Number |
Да Да |
Сущность 4: Заказ |
||
Атрибут (Attribute) |
Домен (Domain) |
Обязательный атрибут (Not Null) |
Код заказа Код клиента* Код товара* Количество Дата заказа Срок поставки Код поставщика** |
Number Number Number Number Datetime Datetime Number |
Да Да Да Да |
Сущность 5: Регион |
||
Атрибут (Attribute) |
Домен (Domain) |
Обязательный атрибут (Not Null) |
Код региона Страна Область Город Адрес Телефон Факс |
Number String String String String String String |
Да Да Да Да Да |
Сущность 6: Валюта |
||
Атрибут (Attribute) |
Домен (Domain) |
Обязательный атрибут (Not Null) |
Код валюты Имя валюты Шаг округления Курс валюты |
String String Number Number |
Да Да |
Каждую сущность снабдите кратким описанием ее назначения (Definition). Например, для первой сущности это может быть «Список поставщиков товаров», для второй – «Перечень предлагаемых товаров» и т.д.
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 расположением частей логической модели на экране, масштабом, уровнями просмотра этой модели, видимостью отдельных компонентов сущностей и связей, а также другими характеристиками.