Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Pohilko / Pohilko

.pdf
Скачиваний:
23
Добавлен:
20.04.2015
Размер:
1.47 Mб
Скачать

уникальным образом его определяют (ни один из этих двух атрибутов не может сам по себе уникальным образом определить конкретную копию фильма).

Неидентифицирующая связь – это такая связь, при которой экземпляр дочерней сущности не идентифицируется через свою ассоциацию с родительской сущностью. Атрибуты первичного ключа родительской сущности становятся неключевыми атрибутами дочерней.

Неидентифицирующая связь не ставит дочернюю сущность в зависимость от родительской. В ERwin такая связь обозначается пунктирной линией с жирной точкой на конце, соответствующем дочерней связи. При неидентифицирующей связи атрибуты первичного ключа родительской сущности мигрируют в область данных (неключевая область), которая расположена под чертой в дочерней сущности. Если атрибуты, которые мигрировали в неключевую область дочерней сущности, не нужны в этой сущности, то связь называется необязательной неидентифицирующей связью, что подразумевает, что мигрировавшие атрибуты не нужны дочерней сущности для ее идентификации и что она может существовать и без этих атрибутов. В ERwin необязательная неидентифицирующая связь обозначается пунктирной линией с жирной точкой на одном конце (дочернем) и ромбиком на другом (родительском).

При установке неидентифицирующей связи, нужно решить, могут ли атрибуты внешнего ключа, наследуемые от родителя, принимать значение NULL или нет. По умолчанию для неидентифицирующей связи задается режим «Nulls Allowed», что означает, что дочерняя сущность может существовать без родительской, и связь называется необязательной. «No Nulls» означает, что существование дочерней сущности зависит от родительской, и связь называется обязательной. В случае необязательной связи (Nulls Allowed) на родительском конце неидентифицирующей связи ERwin ставит знак – ромбик.

Одно из основных различий между идентифицирующей и неидентифицирующей связью в том, что только те внешние ключи, которые мигрируют через неидентифицирующую связь, могут принимать значения

NULL.

Кардинальность связи служит для обозначения отношения числа экземпляров родительской сущности к числу экземпляров дочерней. Родительская сущность может связываться с дочерней одним из четырех способов. В IDEF1X кардинальность бинарных отношений равна 1:n, где n может принимать значения:

- 0, 1 или более – обозначается «пустым местом» Каждая родительская сущность связана с 0, 1 или более экземпляров дочерней.

- 1 или более – обозначается буквой «Р» Каждая родительская сущность связана с 1 или более экземпляров дочерней.

- 0 или 1 – обозначается буквой «Z»

Каждая родительская сущность связана с 0 или 1 экземпляром дочерней. 61

- ровно n, где «n» - некоторое число

Каждая родительская сущность связана с ровно n экземплярами дочерней.

7.3.2 Создание сущностей и атрибутов

Создать сущность на диаграмме можно, выбрав в меню инструментов соответствующий значок и щелкнув потом на том месте диаграммы, куда нужно поместить сущность.

Создание атрибутов производится либо сразу же при создании сущности (автоматически переходит в режим внесения атрибутов), либо потом щелкнув правой кнопкой на сущности и выбрав в меню пункт Attributes… Вхождение в текущий выбранный режим (Entity properties, Attributes, Key groups)

осуществляется также двойным щелчком по сущности.

В редакторе атрибутов основные две закладки – это General и Datatype. General – можно указать тип домена атрибута, а также принадлежность его к ключу. Datatype – обязательность наличия данных в атрибуте (режим нулевых значений (нулей)) и конкретный тип данных для выбранной БД.

Примечание: Изменять атрибуты разных сущностей можно не выходя из редактора, путем выбора сущностей из выпадающего меню.

7.3.3 Создание связей

На Toolbox выберите инструмент, соответствующий нужному типу связи (идентифицирующая связь – простая линия с одной точкой на конце, неидентифицирующая связь – пунктирная линия, у которой может быть (но не обязательно) ромбик на одном конце и точка на другом). Нарисуйте связь: щелкните сначала по родительской, а затем по дочерней сущности.

Когда сформируете связь, то ключ родительской сущности автоматически появится в качестве части ключа дочерней (для идентифицирующей связи) или в качестве неключевого атрибута дочерней сущности (для неидентифицирующей связи), причем рядом с ним будет стоять (FK), то есть внешний ключ, Foreign Key. Эта операция изменения дочерней сущности вследствие создания связи называется миграцией ключа.

Примечание: Поскольку ERwin автоматически производит миграцию ключей, Вам не нужно вводить внешние ключи. Если Вы это сделаете, то получите повторяющиеся атрибуты и колонки, что приведет к конфликтной ситуации в Вашем проекте.

Связи, как и сущности, могут иметь имена и метки. Эти метки называются глагольными фразами, они должны описывать, каким образом родительская сущность связана с дочерней. Редактор Relationship позволяет задать глагольную фразу, кардинальность и отношение к нулевым значениям для связи. Можно также задать в редакторе Relationship имя роли для атрибута – внешнего ключа.

62

Примечание: Для изменения свойств связи убедитесь, что режим «Relationship» активен в меню Editor, а затем дважды щелкните по той связи, которую Вы хотите отредактировать.

7.4Постановка задачи

1.Освоить основные элементы интерфейса ERwin. Создание новой модели, сущностей (entity), связей (relationship) и типов связей. Создание новых атрибутов сущностей.

2.На основании инфологической модели из предыдущих лабораторных работ построить модель (физическую и логическую) данных для будущей БД.

Определить сущности и создать их в модели. Определить и создать атрибуты сущностей. Определить ключевые атрибуты.

Определить связи между сущностями. Определить ссылочную целостность данных.

7.5Содержание работы:

1.Запустить ERwin. На запрос о создании новой модели или работе с сохраненной выбрать создание новой модели. Тип модели указать Logical/Physical. В качестве целевой БД выбрать Access версии 2000 или 2003. См. рис 7.1.

2.Взять за исходную инфологическую модель, созданную в предыдущих лабораторных работ, или создать новую, с количеством стержневых сущностей не менее 4

3.Для каждой сущности создайте аналогичную сущность в ERwin. Пример на рис.7.2.

63

Рис.7.1 Создание новой модели

Рис.7.2 Сущности с атрибутами

Рис.7.3 Вызов окна изменения

 

атрибутов

64

Рис.7.4 Окно создания/изменения атрибутов

В каждой сущности создайте необходимые атрибуты (рис. 7.3, рис. 7.4) в соответствии с инфологической моделью.

4.Также в соответствии с инфологической моделью определите атрибуты, которые будут определять ключ для данной сущности. Установка признака ключа осуществляется установкой опции Primary key на закладке

General.

Примечание: При выборе домена для атрибута часто бывает недостаточно лишь этой информации. Например, домен атрибута Number, но неясно, число это с плавающей точкой, целое или еще какое. Для этого на закладке Datatype редактора атрибутов выбирается конкретный тип данных, наиболее подходящий для хранения нужной информации.

Примечание: При создании нового атрибута рекомендуется задавать одно и то же имя как для логического уровня, так и для физического (имени столбца).

5.Далее определите, какие связи необходимы для соединения сущностей. Например, в соответствии с идеологией ER-моделирования, для связи стержневых сущностей с ассоциативными нужно выбрать идентифицирующие связи, причем родительскими будет являться стержневые сущности. Тогда ключевые атрибуты родительских сущностей мигрируют в дочернюю ассоциативную сущность и сами станут ключом для нее.

Для связи сущностей типа «Обозначение» и «Характеристика» применить нужно неидентифицирующую связь, т. к., например, название города не входит

включевые атрибуты сущности Product.

Примечание: Возможны специфические задачи, для которых вышеописанные правила задания связей будут нарушаться.

6.

Определите для каждой связи возможность существования NULL-

значений

и кардинальность. Подробнее о том, как выбирать, см. выше.

 

65

Например, для связи сущностей City и Firm мы не можем допустить, что для фирмы не определен ее тип. Тогда свойство для Null-значений установить как Nulls not allowed. Что касается кардинальности, то допустим, что возможно существование типа фирмы, но фирмы такого типа еще нет, тогда кардинальность будет «0, 1 или более», т. к. данному типу не соответствует ни одной дочерней записи. А для связи между City и Product свойство Nullзначений можно установить в Nulls allowed, т. к., например, можно допустить существование продукта, для которого не важно, в каком городе он произведен (или неизвестно). Кардинальность установить в «1 или более», т. к. для каждого внесенного в базу города должен существовать продукт, который в этом городе производится.

7.Задайте глагольные фразы (verb phrases) для каждой связи. Глагольные фразы служат для семантической связности модели, т. е. для того, чтобы модель легко «читалась» и была ясна роль каждой связи в модели. Например для связи между сущностями City и Product глагольная фраза будет:

от родительской к дочерней – City has_a_production_of Product (В Городе есть производство Продукта), а от дочерней к родительской – Product is_produced_in City (Продукт производится в Городе). Задание глагольных фраз осуществляется в окне редактирования связей (рис.7.6.).

8.Установите свойства отображения модели так, что были видны глагольные фразы (Verb phrases).

Примечание: Для удобства восприятия не рекомендуется задавать слишком много опций для отображения.

Рис.7.5 Параметры отображения

Рис.7.6 Редактор связей

сущностей

 

66

Рис.7.7 Модель данных предметной области

Общий вид модели изображен на рис. 7.7.

7.6Форма отчетности

1.Представить преподавателю инфологическую модель ПО.

2.Представить реализованную в ER-модель данных.

3.Продемонстрировать и обосновать свойства связей между сущностями с точки зрения обеспечения целостности данных.

4.Ответить на контрольные вопросы.

7.7Контрольные вопросы

1.Что такое ER-модель? Назначение.

2.Смысл моделирования данных.

3.ER-диаграммы. Сущности. Атрибуты. Отношения.

4.Родительские и дочерние таблицы (сущности).

5.Виды связей между сущностями.

6.Отличия и смысл каждого вида связей.

7.Ключи. Виды ключей. Миграция.

8.Кардинальность связи. Режим нулей.

67

8. СТРУКТУРИРОВАННЫЙ ЯЗЫК ЗАПРОСОВ (SQL)

8.1 Тема

Структурированный язык запросов (SQL)

8.2 Цель

Получение начальных сведение о построения запросов на языке SQL.

8.3 Общие сведения

Язык SQL (Structured Query Language – структурированный язык запросов) ориентирован на операции с данными, представленными в виде логически взаимосвязанных совокупностей таблиц.

SQL является информационно-логическим языком, предназначенным для описания, изменения и извлечения данных, хранимых в реляционных базах данных. SQL нельзя назвать языком программирования.

Изначально SQL был основным способом работы пользователя с базой данных и позволял выполнять следующий набор операций:

создание в базе данных новой таблицы;

добавление в таблицу новых записей;

изменение записей;

удаление записей;

выборка записей из одной или нескольких таблиц (в соответствии с заданным условием).

При всех своих изменениях SQL остается единственным механизмом связи между прикладным программным обеспечением и базой данных. В то же время, современные СУБД, а также, информационные системы, использующие СУБД, предоставляют пользователю развитые средства визуального построения запросов, с которыми вы знакомились в лабораторной работе №4.

Каждое предложение SQL — это либо запрос данных из базы, либо обращение к базе данных, которое приводит к изменению данных в базе.

68

Рис.8.1 Создание запроса в режиме SQL

Рис. 8.2 Пример запроса

Рис. 8.3 Пример запроса с условием (1)

69

Рис. 8.4 Пример запроса с условием (2)

Пример предложение на языке SQL показан на рисунках 8.2 – 8.4. В примере продемонстрирован оператор SELECT – возвращающий набор данных из базы данных.

8.4 Синтаксис операторов запроса языка SQL

SELECT – оператор языка SQL, возвращающий набор данных (выборку) из базы данных, удовлетворяющих заданному условию.

Шаблон для его использования:

SELECT список полей FROM список таблиц WHERE условия…

1 2 3

1– поля таблицы, которые отображаются, если используется знак звездочка *, то это означает, что отбор производится по всем полям таблиц;

2– Имя таблицы или список таблиц через запятую;

3– критерий отбора (пример код = 1 или материал = ‘эмаль’).

Критериев отбора может быть множество, для записи множества критериев используются операторы AND и OR.

INSERT — оператор языка SQL, который позволяет добавить строки в таблицу, заполняя их значениями. Значения можно вставлять перечислением с помощью слова values, перечислив их в круглых скобках через запятую или оператором select.

Шаблон для его использования:

INSERT INTO <название таблицы> ([<Имя столбца>, ... ]) VALUES (<Значение>,...)

UPDATE — оператор языка SQL, позволяющий обновить значения в заданных столбцах таблицы.

Шаблон для его использования: UPDATE [Таблица]

SET <присваивание1 [, присваивание2, ...]>

70