Добавлен: 21.10.2018
Просмотров: 1466
Скачиваний: 13
6
Определение 5. Связь - это некоторая ассоциация между двумя сущностями.
Одна сущность может быть связана с другой сущностью или сама с собою.
Связи позволяют по одной сущности находить другие сущности, связанные с
нею.
Если бы назначением базы данных было только хранение отдельных, не
связанных между собой данных, то ее структура могла бы быть очень простой.
Однако одно из основных требований к организации базы данных – это
обеспечение возможности отыскания одних сущностей по значениям других,
для чего необходимо установить между ними определенные связи. А так как в
реальных базах данных нередко содержатся сотни или даже тысячи сущностей,
то теоретически между ними может быть установлено более миллиона связей.
Наличие такого множества связей и определяет сложность инфологических
моделей.
Например, связи между сущностями могут выражаться следующими
фразами - "СОТРУДНИК может иметь несколько ДЕТЕЙ", "каждый
СОТРУДНИК обязан числиться ровно в одном ОТДЕЛЕ".
Графически связь изображается линией, соединяющей две сущности:
Каждая связь имеет два конца и одно или два наименования.
Наименование обычно выражается в неопределенной глагольной форме:
"иметь", "принадлежать" и т.п. Каждое из наименований относится к своему
концу связи. Иногда наименования не пишутся ввиду их очевидности.
Каждая связь может иметь один из следующих типов связи:
Связь типа один-к-одному означает, что один экземпляр первой
сущности (левой) связан с одним экземпляром второй сущности (правой).
Связь один-к-одному чаще всего свидетельствует о том, что на самом деле мы
имеем всего одну сущность, неправильно разделенную на две.
Связь типа один-ко-многим означает, что один экземпляр первой
сущности (левой) связан с несколькими экземплярами второй сущности
(правой). Это наиболее часто используемый тип связи. Левая сущность (со
стороны "один") называется родительской, правая (со стороны "много") -
дочерней. (см. рис. графического изображения связи)
7
Связь типа много-ко-многим означает, что каждый экземпляр первой
сущности может быть связан с несколькими экземплярами второй сущности, и
каждый экземпляр второй сущности может быть связан с несколькими
экземплярами первой сущности. Тип связи много-ко-многим является
временным типом связи, допустимым на ранних этапах разработки модели. В
дальнейшем этот тип связи должен быть заменен двумя связями типа один-ко-
многим путем создания промежуточной сущности.
Каждая связь может иметь одну из двух модальностей связи:
Модальность "может" означает, что экземпляр одной сущности может
быть связан с одним или несколькими экземплярами другой сущности, а может
быть и не связан ни с одним экземпляром.
Модальность "должен" означает, что экземпляр одной сущности обязан
быть связан не менее чем с одним экземпляром другой сущности.
Связь может иметь разную модальность с разных концов.
Описанный графический синтаксис позволяет однозначно читать
диаграммы, пользуясь следующей схемой построения фраз:
<Каждый экземпляр СУЩНОСТИ 1> <МОДАЛЬНОСТЬ СВЯЗИ>
<НАИМЕНОВАНИЕ СВЯЗИ> <ТИП СВЯЗИ> <экземпляр СУЩНОСТИ 2>.
Каждая связь может быть прочитана как слева направо, так и справа
налево. Например, связь, представленная на рисунке выше 4 читается так:
Слева направо: "каждый сотрудник может иметь несколько детей".
Справа налево: "Каждый ребенок обязан принадлежать ровно одному
сотруднику".
Получение реляционной схемы из ER-схемы
Шаг 1. Каждая простая сущность превращается в таблицу. Простая сущность
- сущность, не являющаяся подтипом и не имеющая подтипов. Имя сущности
становится именем таблицы.
Шаг 2. Каждый атрибут становится возможным столбцом с тем же именем;
может выбираться более точный формат. Столбцы, соответствующие
необязательным атрибутам, могут содержать неопределенные значения;
столбцы, соответствующие обязательным атрибутам, - не могут.
Шаг 3. Компоненты уникального идентификатора сущности превращаются в
первичный ключ таблицы. Если имеется несколько возможных уникальных
идентификатора, выбирается наиболее используемый. Если в состав
уникального идентификатора входят связи, к числу столбцов первичного
ключа
добавляется
копия
уникального
идентификатора
сущности,
находящейся на дальнем конце связи (этот процесс может продолжаться
8
рекурсивно). Для именования этих столбцов используются имена концов
связей и/или имена сущностей.
Шаг 4. Связи многие-к-одному (и один-к-одному) становятся внешними
ключами. Т.е. делается копия уникального идентификатора с конца связи
"один",
и
соответствующие
столбцы
составляют
внешний
ключ.
Необязательные связи соответствуют столбцам, допускающим неопределенные
значения; обязательные связи - столбцам, не допускающим неопределенные
значения.
Шаг 5. Индексы создаются для первичного ключа (уникальный индекс),
внешних ключей и тех атрибутов, на которых предполагается в основном
базировать запросы.
3. Разработка таблиц и схемы базы данных
Для создания данной системы управления данными понадобятся
следующие таблицы (перечислить названия таблиц), которые необходимо
связать для обеспечения непротиворечивости данных.
Для создания таблицы в СУБД MySQL используется команда CREATE
TABLE. C ее помощью описывается структура таблицы включает названия
полей, их тип данных, описание и значения некоторых свойств, которые
зависят от типа данных.
Описать структуру каждой таблицы и представить данные, которые они
содержат.
Задать связи между таблицами и представить даталогическую схему
данных.
4. Запросы системы
Запросы позволяют отбирать необходимую информацию из таблиц и
представлять ее в табличном виде. Запросы создаются с помощью команды
SELECT.
Существует четыре типа запросов для различных целей:
Запросы на выборку отображают данные из одной или нескольких таблиц
в виде таблицы.
Перекрестные запросы собирают данные из одной или нескольких
таблиц в формате, похожем на формат электронной таблицы. Эти запросы
используются для анализа данных и создания диаграмм, основанных на
суммарных значениях числовых величин из некоторого множества записей.
Запросы на изменение используются для создания новых таблиц из
результатов запроса и для внесения изменений в данные существующих
таблиц. С их помощью можно добавлять или удалять записи из таблицы и
9
изменять записи согласно выражениям, задаваемым в режиме конструктора
запроса.
Многотабличные запросы, в свою очередь, делятся по типу
используемого соединения таблиц:
- внутреннее соединение по одному полю,
- внутреннее соединение по нескольким полям,
- косвенное соединение таблиц,
- внешнее соединение
- рекурсивное соединение
- соединение по отношению
Для данной системы было создано N запросов. Запросы создавались в
режиме конструктора. В окне конструктора запросов добавляем необходимые
таблицы, затем перетаскиваем нужные поля из таблиц в строку «поле» нижнего
окна, где автоматически фиксируется начальное местоположение каждого поля
(таблицы). В строке «Условия» задаем условия отбора записей. В строке
«Групповая операция» выбираем агрегатные функции. После ввода всех
параметров запроса сохраняем его в базе данных, предварительно задав ему
свое имя.
Запрос 1 создается по данным таблиц (название таблиц) и является
запросом (указать тип запроса). Представить запрос в виде команды SELECT и
результаты его выполнения.
Таким образом описываются все запросы.
5. Выводы
Содержат основные выводы о проделанной работе:
- в данной работе была исследована предметная область по теме - название
темы;
- построена инфологическая модель;
- разработана даталогическая модель базы данных средствами MySQL,
включающая N таблиц и связи между ними;
- разработаны N запросов для отображения данных из таблиц.
10
Требования к БД:
наличие таблиц и связей между ними в соответствии с инфологической
моделью проектируемой предметной области,
наличие не менее 10 запросов всех типов, реализуемых средствами
СУБД MySQL:
1. С использованием внутреннего соединения по одному полю.
2. С использованием косвенно связанных таблиц.
3. С использованием таблиц, связанных более чем по одному полю.
4. С использованием внешнего соединения таблиц.
5. С использованием рекурсивного соединения.
6. С использованием соединений по отношению.
7. С использованием функций агрегирования.
8. Перекрестный запрос.
9. Запрос на изменение.
10. С вычисляемым полем.