Экземпляр зависимой сущности определяется только через отношение к родительской сущности. При установлении идентифицирующей связи атрибуты первичного ключа родительской сущности автоматически переносятся в состав первичного ключа дочерней сущности. Эта операция дополнения атрибутов дочерней сущности при создании связи называется миграцией атрибутов. В дочерней сущности новые атрибуты помечаются как внешние ключи - (FK).
При установлении неидентифицирующей связи дочерняя сущность остается независимой, а атрибуты первичного ключа родительской сущности мигрируют в состав неключевых компонентов дочерней. Неидентифицирующая связь служит для связи независимых сущностей. Идентифицирующая связь показывается на диаграмме сплошной линией с жирной точкой на дочернем конце связи, неидентифицирующая - пунктирной. Для неидентифицирующей связи можно указать обязательность (Nulls в закладке General диалога Relationship Editor). В случае обязательной связи (No Nulls) при генерации схемы БД атрибут внешнего ключа получит признак NOT NULL, несмотря на то, что внешний ключ не войдет в состав первичного ключа дочерней сущности. В случае необязательной связи (Nulls Allowed) внешний ключ может принимать значение NULL. Необязательная неидентифицирующая связь помечается прозрачным ромбом со стороны родительской сущности.
Имя связи (Verb Phrase) - фраза, характеризующая отношение между родительской и дочерней сущностями. Для связи один-ко-многим идентифицирующей или неидентифицирующей достаточно указать имя, характеризующей отношение от родительской к дочерней сущности (Parent-to-Child). Для связи многие-ко-многим следует указывать имена как Parent-to-Child, так и Child-to-Parent. Для отображения имени следует в контекстном меню, которое появляется, если щелкнуть правой кнопкой мыши по любому месту диаграммы, не занятому объектами модели, выбрать пункт Display Options/Relationship и затем включить опцию Verb Phrase.
Имя роли или функциональное имя (Rolename) - это синоним атрибута внешнего ключа, который показывает, какую роль играет атрибут в дочерней сущности. Задать имя роли можно в закладке Rolename/RI Actions диалога Relationship Editor.
Правила ссылочной целостности (Referential Integrity (RI)) - логические конструкции, которые выражают бизнес-правила использования данных и представляют собой правила вставки, замены и удаления. Задать правила ссылочной целостности можно в закладке Rolename/RI Actions диалога Relationship Editor. При генерации схемы БД на основе опций логической модели будут сгенерированы правила декларативной ссылочной целостности, которые должны быть предписаны для каждой связи, и триггеры, обеспечивающие ссылочную целостность.
Связь
многие-ко-многим возможна только на
уровне логической модели данных. Такая
связь обозначается сплошной линией с
двумя точками на концах. Связь
многие-ко-многим должна именоваться
(Verb Phrase) двумя фразами - в обе стороны.
Это облегчает чтение диаграммы. Для
разрешения неспецифического
отношения многие-ко-многим надо
использовать кнопку
- many
to
many
transform.
При этом каждое неспецифическое отношение
преобразуется в два специфических
отношения с введением новых сущностей.
2.7.4 Создание ключей.
Каждый экземпляр сущности должен быть уникален и отличаться от других атрибутов.
Первичный ключ (primary key) - это атрибут или группа атрибутов, однозначно идентифицирующие экземпляр сущности. Атрибуты первичного ключа на диаграмме не требуют специального обозначения - это те атрибуты, которые находятся в списке атрибутов выше горизонтальной линии. При внесении нового атрибута в диалоге Attribute Editor для того, чтобы сделать его атрибутом первичного ключа, нужно включить флажок Primary Key в нижней части закладки General. На диаграмме ключевой атрибут можно внести в состав первичного ключа, воспользовавшись режимом переноса атрибутов (кнопка в палитре инструментов).
В одной сущности может оказаться несколько атрибутов или наборов атрибутов, претендующих на роль первичного ключа. Такие претенденты называются потенциальными ключами (candidate key).
Ключи могут быть сложными, т.е. содержащими несколько атрибутов. Сложные первичные ключи не требуют специального обозначения - это список атрибутов выше горизонтальной линии. При выборе первичного ключа предпочтение должно отдаваться более простым ключам, т.е. ключам, содержащим меньшее количество атрибутов. Многие сущности имеют только один потенциальный ключ. Такой ключ становится первичным. Некоторые сущности могут иметь более одного возможного ключа. Тогда один из них становится первичным, а остальные - альтернативными ключами. Альтернативный ключ (Alternative Key) - это потенциальный ключ, не ставший первичным.
Каждому ключу соответствует индекс, имя которого также присваивается автоматически. Имена ключа и индекса при желании можно изменить вручную. На диаграмме атрибуты альтернативных ключей обозначаются как (Akn.m.), где n - порядковый номер ключа, m - порядковый номер атрибута в ключе. Когда альтернативный ключ содержит несколько атрибутов, (Akn.m.) ставится после каждого.
Внешние ключи (Foreign Key) создаются автоматически, когда связь соединяет сущности: связи образуют ссылку на атрибуты первичного ключа в дочерней сущности и эти атрибуты образуют внешний ключ в дочерней сущности (миграция ключа). Атрибуты внешнего ключа обозначаются символом (FK) после своего имени. Зависимая сущность может иметь один и тот же ключ из нескольких родительских сущностей. Сущность может также получить один и тот же внешний ключ несколько раз от одного и того же родителя через несколько разных связей. Когда ERwin обнаруживает одно из этих событий, он распознает, что два атрибута одинаковы, и помещает атрибуты внешнего ключа в зависимой сущности только один раз. Это комбинирование или объединение идентичных атрибутов называется унификацией. Есть случаи, когда унификация нежелательна. Например, когда два атрибута имеют одинаковые имена, но на самом деле они отличаются по смыслу, и необходимо, что бы это отличие отражалось в диаграмме. В этом случае необходимо использовать имена ролей внешнего ключа.
2.8 Физический уровень представления БД.
Физический уровень представления модели зависит от выбранного сервера. Для выбора СУБД служит редактор Target Server (меню Server/Target Server... доступно только на физическом уровне). ERwin поддерживает практически все распространенные СУБД, всего более 20 реляционных и нереляционных БД. Диалог Target Server позволяет задать тип данных и опцию NULL для новых колонок, а также правила ссылочной целостности, принимаемые по умолчанию. Группа кнопок Default Non-Key Null Option позволяет разрешить или запретить значения NULL для неключевых колонок. По умолчанию ERwin генерирует имена таблиц и индексов по шаблону на основе имен соответствующих сущностей и ключей логической модели. Окна Table Name Macro и Index Name Macro позволяют изменить шаблон генерации имен. Кнопка Reset Names вызывает диалог Globally Reset DBMS Property, который позволяет заменить все имена таблиц, связей, индексов, колонок и соответствующих свойств, заданных вручную, на значения по умолчанию. Имена таблиц и колонок по умолчанию будут сгенерированы на основе имен сущностей и атрибутов логической модели. Если в имени сущности или атрибута встречается пробел, он будет заменен на символ "_". При смене СУБД ERwin предлагает автоматически преобразовать тип данных, связанный с каждым атрибутом, на ближайший, доступный для новой СУБД.
2.8.1 Прямое и обратное проектирование
Процесс генерации физической схемы БД из логической модели данных называется прямым проектированием (Forward Engineering). При генерации физической схемы ERwin включает триггеры ссылочной целостности, хра-нимые процедуры, индексы, ограничения и другие возможности, доступ-ные при определении таблиц в выбранной СУБД.
Процесс
генерации логической модели из физической
БД называется обратным проектированием
(Reverse Engineering). ERwin позволяет создать модель
данных путем обрат-ного проектирования
имеющейся БД. После того как модель
создана, мож-но переключиться на другой
сервер (модель будет конвертирована) и
про-извести прямое проектирование
структуры БД для другой СУБД. Кроме
режима прямого и обратного проектирования
ERwin поддерживает синхронизацию между
логической моделью и системным каталогом
СУБД на протяжении всего жизненного
цикла создания ИС.
Для генерации
системного каталога БД следует выбрать
пункт меню Tasks/Forward
Engineer/Schema Generation
или нажать кнопку
на панели инструментов. Появляется
диалог Schema
Generation.
Диалог Schema Generation имеет три закладки:
Options. Служит для задания опций генерации объектов БД - триггеров, таблиц, представлений, колонок, индексов и т. д. Для задания опций генерации какого-либо объекта следует выбрать объект в левом списке закладки. после чего включить соответствующую опцию в правом списке.
В закладке Summary отображаются все опции, заданные в закладке Options. Список опций в Summary можно редактировать так же, как и в Options.
Comment. Позволяет внести комментарий для каждого набора опций. Каждый набор опций может быть именован (окно Option Set, кнопки New, Rename и Delete) и использован многократно.
Кнопка Preview вызывает диалог Schema Generation Preview, в котором отображается SQL-скрипт, создаваемый ERwin для генерации системного каталога СУБД. Нажатие на кнопку Generate приведет к запус-ку процесса генерации схемы. Кнопка Print предназначена для вывода на печать создаваемого ERwin SQL-скрипта. Кнопка Report сохраняет тот же скрипт в ERS или SQL текстовом файле. Эти команды можно в дальнейшем редактировать любым текстовым редактором и выполнять при помощи соответствующей утилиты сервера.
Кнопка Generate запускает процесс генерации схемы. Возникает диалог связи с БД, устанавливается сеанс связи с сервером и начинает выполняться SQL-скрипт. При этом возникает диалог Generate Database Schema. Для выполнения обратного проектирования следует выбрать пункт меню Tasks/Reverse Engineer. При этом возникает диалог ERwin Template Selection, в ко-тором нужно выбрать шаблон диаграммы, затем диалог выбора СУБД и, наконец, диалог задания опций обратного проектирования Reverse Engineer - Set Options.
В диалоге Reverse Engineer - Set Options можно задать следующие опции: Группа Reverse Engineer From позволяет задать источник обратного проектирования - БД или SQL(DDL)-скрипт. При помощи кнопки Browse можно выбрать текстовый файл, содержащий SQL-скрипт.
Группа Items to Reverse Engineer позволяет задать объекты БД, на основе которых будет создана модель. При помощи списка выбора Option Set, a также кнопок New, Update и Delete можно создавать и редактировать име-нованные конфигурации объектов БД, которые могут быть использованы многократно при других сеансах обратного проектирования.
Группа
Reverse Engineer
(доступна
только при обратном проектировании из
БД) позволяет включить в модель системные
объекты (окно выбора System Objects) и установить
фильтр на извлекаемые таблицы по их
владельцу. В процессе работы модель
может изменяться и дополняться. С другой
стороны, системный каталог БД может
редактироваться другими проектировщиками.
В результате спустя некоторое время
после последнего сеанса обратного
проектирования могут возникнуть
расхождения между реальным состоянием
системного каталога и моделью данных.
Для
синхронизации
системного каталога БД
и текущей модели следует выбрать пункт
меню Tasks/Complete
Compare или нажать кнопку
на
панели инструментов. Возникает диалог
Complete Compare - Set
Options, который
во многом похож на описанный выше диалог
Reverse Engineer-Set
Options. Разница
заключается в том, что в отличие от
обратного проек-тирования сравнивать
текущую модель можно не только с БД или
SQL-скриптом, но и с другой моделью ERwin,
хранящейся в файле или репозитории
ModelMart.
Изучить теоретический материал, подготовиться к выполнению лабораторной работы.
Разработать и построить диаграмму по базе данных с учетом особенностей проектирования.
Выполнить автоматическое создание (экспорт) БД из case-средства ERwin в СУБД SQL Server 2000.
Что такое диаграмма "сущность-связь" (ERD), ее основные элементы, типы связей.
Что является уникальными идентификаторами типов сущности.
В чем заключается нормализация ER-диаграмм.
Каково назначение пакета ERwin и его основные функции?
Опишите этапы построения информационной модели.
Как устранить неспецифические отношения "многие ко многим"? Что при этом происходит?
Из каких элементов состоит диаграмма "сущность-связь" в Erwin? Их особенности.
Какие типы ключей используются в пакете ERwin, каково их назначение?
Какой смысл в прямом и обратном проектировании базы данных? Что создается в результате этих процессов?
1. Создать БД, содержащую информацию о студентах ВУЗа: ф.и.о. студента, год рождения, факультет, кафедра, группа, номер зачетки, число специальностей на факультете, год основания факультета, число студентов на факультете, декан факультета, название специальности, код специальности, год основания специальности, число групп данной специальности, заведующий кафедрой.
2. Создать БД, содержащую информацию о книгах в библиотеке: название, автор, издательство, год издания, жанр, количество страниц, год и место рождения автора, язык, на котором пишет автор, число произведений, созданных автором, тираж книги, адрес и дата основания издательства, рейтинг издательства (100 балльный).
3. Создать БД, содержащую информацию о фильмах в фильмотеке: название фильма, жанр, кинокомпания, режиссер, длительность, год основания кинокомпани, страна и численность работающих, рейтинг фильм (10 балльный), год, место рождения и место жительства режиссера, число фильмов режиссера.
4. Создать БД, содержащую информацию о записях в фонотеке: композиция, исполнитель, альбом, автор текста, продолжительность, страна исполнителя, жанр, количество альбомов, год выпуска альбома, выпускающая компания, продолжительность и число композиций в альбоме.
5. Создать БД, содержащую информацию о компьютерах: наименование, фирма, страна, оборот фирмы, служба поддержки и рейтинг фирмы, стоимость компьютера, модель процессора, объем ОЗУ, тип НЖМД, покупатель компьютера, место жительства и телефон покупателя.
6. Создать БД, содержащую информацию о напитках в супермаркете: название, тип, тара, цена, код страны, крепость, срок хранения, температура хранения, название страны, валюта, курс по отношению к рублю, стоимость перевозки одной тонны.
7. Создать БД, содержащую информацию о продуктах в магазинах: наименование, цена за 1 кг, дата изготовления, производитель, магазин, адрес, телефон и директор магазина, поставщик, адрес и телефон поставщика, количество обслуживаемых магазинов, репутация.
8. Создать БД, содержащую информацию о косметических изделиях: наименование, цена, качество, магазин, фирма, адрес и телефон магазина, номер лицензии, рейтинг, страна и директор фирмы, телефон службы поддержки, рейтинг фирмы.
9. Создать БД, содержащую информацию об автомобилях на авторынке: модель, цвет, цена, фирма-изготовитель, год выпуска, двигатель, кузов, марка бензина, максимальная скорость, страна, год основания фирмы, телефон службы поддержки, рейтинг.
10. Создать БД, содержащую информацию о лекарственных средствах: название препарата, группа, форма выпуска, состав, способ введения, заболевание, дозировка, длительность приема, средняя длительность течения заболевания, ф.и.о. больного, возраст, вес, рост, дата заболевания, сопутствующие заболевания.