- •Часть I
- •Введение
- •Общие сведения о среде Microsoft Office Visio 2007
- •Шаблоны
- •Проводник по моделям
- •Панели инструментов
- •Масштабирование изображения
- •Требования к оформлению отчётов по лабораторным работам
- •Работа 1. Разработка диаграммы классов
- •Создание диаграммы классов
- •Используемые фигуры
- •Задание свойств фигуры
- •Добавление атрибутов и операций класса
- •Добавление атрибутов
- •Добавление операций
- •Задание
- •Варианты заданий
- •Вопросы для самопроверки
- •Работа 2. Организация наследования в диаграмме классов
- •Наследование от класса
- •Наследование от интерфейсов
- •Абстрактные классы
- •Листовые классы
- •Виртуальные операции
- •Используемые фигуры
- •Задание
- •Варианты заданий
- •Вопросы для самопроверки
- •Работа 3. Разработка диаграммы прецедентов
- •Понятия актёра и прецедента
- •Отношения между прецедентами
- •Обозначение границ разрабатываемой системы
- •Создание диаграммы прецедентов
- •Используемые фигуры
- •Задание
- •Варианты заданий
- •Вопросы для самопроверки
- •Работа 4. Разработка диаграммы последовательностей
- •Элементы диаграммы последовательностей
- •Виды действий в сообщениях
- •Возврат
- •Создание
- •Уничтожение
- •Отправка
- •Создание диаграммы последовательностей
- •Используемые фигуры
- •Задание
- •Варианты заданий
- •Вопросы для самопроверки
- •Работа 5. Разработка структуры реляционной базы данных
- •Сущности и таблицы
- •Обеспечение целостности данных на уровне полей таблиц
- •Обеспечение целостности данных с помощью связей
- •Создание структуры реляционной базы данных
- •Задание свойств сущностей
- •Используемые фигуры
- •Задание
- •Варианты заданий
- •Вопросы для самопроверки
- •Оглавление
- •Библиографический список
Сущности и таблицы
Для перехода от вербального описания предметной области к её описанию в виде объектов реляционной базы данных применяется понятие сущности. Сущность по своей сути идентична классу, т.е. некоторому множеству объектов предметной области со схожими свойствами. Однако сущность, в отличие от класса не содержит описания действий (операций, методов), а содержит только атрибуты, характеризующие состояние объекта.
В качестве таких атрибутов могут выступать имя для человека или дата выпуска для автомобиля. На Рис. 7 .22 представлен другой пример описания части предметной области в виде сущности клиентов, описываемых фамилией, именем, отчеством, датой рождения и родом занятий. Описание предметной области в виде сущностей позволяет сформировать модель данных.
Рис. 7.22. Пример сущности, описывающей клиентов компании.
При проектировании и разработке баз данных переходят от сущностей к таблицам. При этом таблица представляет собой физическую реализацию сущности. Часто понятия сущности и таблицы объединяют.
Обеспечение целостности данных на уровне полей таблиц
Для обеспечения целостности данных, хранящихся в полях таблиц, применяются следующие возможности СУБД: типы данных, ограничения и триггеры.
Каждое поле таблиц предназначено для хранения данных указанного типа, в качестве примера использования таких типов данных можно привести целочисленные, вещественные или строковые. Использование типов данных для полей таблиц позволяет ограничить возможные значения данных, хранимые в этих полях. Типы данных полей баз данных определяются используемой СУБД. Многие типы данных СУБД совпадают с аналогичными типами данных различных языков программирования.
Помимо типов данных полей таблиц базы данных для обеспечения целостности хранимых данных используются другие средства, например, ограничения (constraints) и триггеры (triggers). Ограничения позволяют определять диапазоны допустимых значений для данных, например, данные даты рождения не должны превышать 1 января 1995 года или размер социальной выплаты не должен превышать размер 2 окладов сотрудника. Кроме того, ограничения позволяют запретить вводить повторяющиеся данные в различные строки одного столбца.
Триггеры представляют собой процедуры, написанные на языке управления СУБД, автоматически выполняемые при выполнении действий с записями таблицы. В качестве таких действий могут быть использованы: добавление, удаление и изменение данных. При этом триггер может быть настроен на срабатывание до выполнения действия или после выполнения действия. Допустимо создавать триггеры, срабатывающие при выполнении разных действий, например добавления и удаления.
Обеспечение целостности данных с помощью связей
Одним из самых мощных способов обеспечения целостности данных является использование связей между таблицами. Существуют три основных типа связей: один-к-одному, один-ко-многим и многие-ко-многим. В первом случае между записями таблиц устанавливается однозначное соответствие, во втором случае одной записи вторичной таблицы могут соответствовать несколько записей первичной таблицы. При использовании связи многие-ко-многим нескольким записям одной таблицы могут соответствовать несколько записей другой таблицы.
Самой распространённой связью является связь один-ко-многим. Именно эта связь используется для выполнения заданий данной работы. Следует отметить, что для получения связей один-к-одному и многие-ко-многим обычно используют комбинации нескольких связей один-ко-многим, примеры которых приведены в конце этого раздела.
Необходимым условием использования связей является наличие ключей в таблице. Для организации простейшей связи один-ко-многим необходимо наличие двух ключей – первичного и внешнего.
Первичный ключ таблицы (Primary Key PK) – это поле или группа полей, содержащее данные, уникально идентифицирующие каждую запись (строку) таблицы. При использовании одного ключевого поля значения в этом поле не могут повторяться, поскольку они должны идентифицировать каждую строку. При использовании в качестве ключа нескольких полей ограничение уникальности накладывается на комбинацию значений, содержащихся в этих полях.
Внешний ключ (Foreign Key FK) – это поле или группа полей, содержащее значение первичного ключа другой таблицы. Для внешнего ключа допустимы только значения, присутствующие в первичном ключе таблицы, с которой установлена связь.
Приведём пример использования такой связи. В качестве первой таблицы возьмём таблицу отделов, а в качестве второй таблицы – таблицу сотрудников, каждый из которых работает в одном отделе. При этом отдел будет характеризоваться названием, а сотрудник – именем.
Обозначим таблицу отделов «Отделы», а таблицу сотрудников – «Сотрудники». Исходя из задания, включим в таблицу «Отделы» строковое поле «НазваниеОтдела», а в таблицу «Сотрудники» – поле «ИмяСотрудника», также содержащее строковые значения. Для обеспечения возможности использования связей, добавим в таблицы первичные ключи, состоящие из одного поля. Для таблицы «Отделы» ключом сделаем целочисленное поле «НомерОтдела», а для таблицы «Сотрудники» – целочисленное поле «НомерСотрудника».
Для организации связи необходимо указать, к какому отделу принадлежит каждый из сотрудников. Следовательно, для организации связи в таблицу «Сотрудники» следует добавить внешний ключ в виде поля «НомерОтдела», связанный с первичным ключом таблицы «Отделы». Полученная связь показана в виде стрелки на Рис. 7 .23.
Рис. 7.23. Пример связи один-ко-многим между двумя таблицами.
В обычных связях один-ко-многим, рассматриваемых в рамках данной работы, сущности являются неравноправными. Иными словами, есть первичная (родительская) сущность и вторичная (дочерняя). Первичной является сущность, от которой в связи задействован первичный ключ, а вторичной – та сущность, в которую при этом добавляется вторичный ключ. Связь всегда указывает от дочерней сущности к родительской сущности. Так, в примере на Рис. 7 .23 первичной сущностью является сущность «Отделы», а вторичной – «Сотрудники».
Для получения связи один-к-одному обычно используют две связи многие-ко-многим, направленные навстречу между двумя таблицами, как показано на примере связи сущностей «Отделы» и «ПроизводительностьОтделов» на Рис. 7 .24. Такая связь определяет правило: одному отделу соответствует одно значение количества выпусков проектов. При этом сущности «Отделы» и «ПроизводительностьОтделов» могут быть объединены в одну сущность, однако в данном примере эти сущности разделены по соображениям производительности, поскольку большинство запросов направляются для получения названия отдела.
Рис. 7.24. Пример связи один-к-одному между двумя таблицами.
Для получения связи многие-ко-многим обычно используется дополнительная таблица связи, в которой создаются внешние ключи, указывающие на первичные ключи связываемых таблиц. При этом внешние ключи таблицы связи составляют её первичный ключ. Таким образом, благодаря записям в таблице связей формируются уникальные комбинации связываемых записей основных таблиц. Пример реализации связи многие-ко-многим приведён на Рис. 7 .25. Здесь реализовано правило: один сотрудник обладает некоторым набором навыков, однако разные сотрудники могут владеть одним и тем же навыком.
Рис. 7.25. Пример связи многие-ко-многим между двумя таблицами.
Следует отметить, что для создания первичного ключа в среде Visio необходимо явно указывать атрибут или атрибуты первичного ключа. Однако для создания внешнего ключа не требуется явное указание соответствующего поля, поскольку при создании связей среда Visio осуществляет поиск наиболее подходящего атрибута в качестве внешнего ключа, и, в случае отсутствия такого атрибута автоматически добавляет новый и обозначает его внешним ключом (FK).
