удалить из него, например, атрибут ТабельныйНомер, то не будет обеспечиваться однозначная идентификация, так как в один день один вид выплат могли получить несколько работников.
ЗАМЕЧАНИЕ. Для удобства работы ключи принято подчеркивать. Лучше привыкнуть к этому сразу.
СВЯЗЬ - соединение между двумя или более сущно-
стями
Связь между двумя сущностями называется БИНАРНОЙ. Это наиболее простой и широко распространенный тип связи. Связь между тремя сущностями называется ТЕРНАРНОЙ. В общем случае связи могут быть П-АРНЫМИ.
Единственный определяющий признак связи - это, как правило, глагол.
ПРИМЕРЫ: РАБОТНИКИ—ВЫПОЛНЯЮТ—РАБОТЫ. СТУДЕНТЫ—СДАЮТ—ЭКЗАМЕНЫ.
Связи отражают взаимосвязанность хранящихся в БД данных. Без учета связей невозможно будет построить запросы, включающие данные из нескольких таблиц. С помощью связей можноопределить, какие работники выполняют каждую работу и какие работы выполняются каждым работником; какие студенты сдают каждый из экзаменов и какие экзамены сдаются каждым студентом.
Именно введение связей делает хранение данных в БД столь гибким и универсальным2.
СТЕПЕНЬ СВЯЗИ. Что такое степень связи, проще всего пояснить на примере.
2 Хранение информации о связях всегда было одной из главных проблем в СУБД. Они строились на различных моделях данных, главное отличие между которыми заключалось в способе отражения связей. Известны, в частности, иерархические, сетевые и реляционные модели данных. В первых двух для связей использовались специальные структуры данных. В реляционной модели данных информация о сущностях и связях хранится в едином формате реляционных таблиц, что обусловило широкое ее распространение.
41
ПРИМЕР. Для связи РАБОТНИКИ—ВЫПОЛНЯЮТ—РАБОТЫ
Возможны следующие степени связи:
1:1 - один работник выполняет одну работу;
1:n - один работник выполняет несколько работ, но каждая работа выполняется одним работником;
n:1 - несколько работников выполняют одну работу, но каждый работник выполняет только одну работу;
n:m - один работник выполняет несколько работ и одна работа выполняется несколькими работниками.
КЛАСС ПРИНАДЛЕЖНОСТИ СУЩНОСТИ. Воз-
можны следующие классы принадлежности: ОБЯЗАТЕЛЬ-
НЫЙ и НЕОБЯЗАТЕЛЬНЫЙ.
Если нет, и никогда не может быть работника, который не выполняет ни одной работы, то класс принадлежности сущности РАБОТНИКИ является обязательным. В фирме «МакроСофт» часть работников может и не заниматься договорами. Тогда класс принадлежности сущности РАБОТНИКИ - необязательный.
Иллюстрация новых понятий дана на рис. 7.1. Сущность РАБОТНИКИ имеет четыре экземпляра, а РАБОТЫ - пять. Имеется четыре экземпляра связей, показывающих, кто какую работу выполняет. Из рисунка следует, что класс принадлежности является необязательным для работ, так как имеются работы, которые никем не выполняются, и обязательным для работников, так как все работники заняты на различных работах. Степень связи - n (для работников) :1 (для работ).
ПРАВИЛО ОПРЕДЕЛЕНИЯ СТЕПЕНИ СВЯЗИ: одну работу могут делать НЕСКОЛЬКО РАБОТНИКОВ (n : ... ), но один работник может делать ОДНУ РАБОТУ (... : 1).
42
Рис. 7.1. Связи между Работниками и Работами
Степень связи и класс принадлежности сущностей определяются фундаментальными свойствами тех объектов, данные о которых предполагается хранить в БД, поэтому к определению этих характеристик следует отнестись очень внимательно. Выводы, сделанные по рис. 3.1, являются только предварительными и требуют уточнения у Заказчика.
Ошибка, допущенная в этом вопросе, скорее всего приведет впоследствии к значительным и дорогостоящим переделкам БД и программного обеспечения.
ПРИМЕР. Для малого предприятия «МакроСофт» важно установить, какая информация будет храниться в создаваемых БД: будут ли в таблицу РАБОТНИКИ занесены все сотрудники или только работающие по договорной тематике; будут ли учитываться все работы или только работы врамках договоров;может лиодинработник выполнять несколько работ; сохраняются ли сведения об уже выполненных работах; записываются ли в БД работы, для которых еще не выбран исполнитель и т. п.
43
Графическое изображение сущностей, связей и ключей называется ER-диаграммой.
ПРИМЕР. Рис.7.2отображает ER-диаграммудля рис.7.1. Ключом сущности РАБОТНИКИ является табельный номер работника, обозначаемый НТаб, а ключом сущности РАБОТЫ - номер работы НРаб.
Рис. 7.2. ER-диаграмма для рис.7.1
При построении ER-диаграмм используются следующие правила.
Сущности обозначаются прямоугольниками.
Связи обозначаются ромбами, соединенными линиями (без стрелок!) с соответствующими сущностями.
Названия сущностей и связей пишутся внутри обозначающих их элементов.
Обязательность связи (слева на рис.3.2) обозначается небольшим прямоугольником; иногда в его центре рисуется жирная точка, или просто жирной точкой.
Необязательность связи (справа на рис.3.2) не имеет дополнительных обозначений.
Степень связи указывается около сущностей, которые она связывает.
Ключи сущностей располагаются около значков сущностей.
Ключи связей не отображаются.
Итак, первый шаг проектирования - построение ER-диаграмм. В общем случае каждая сущность может быть связана с несколькими другими. Для каждой связи требуется
44
определить класс принадлежности каждой из сущностей и степени каждой связи.
Пример построения ER-диаграмм
На основании собранных исходных данных Разработчик информационной системы для фирмы «МакроСофт» может сформировать сущности, то есть определить список объектов, представляющих интерес для Заказчика. Это: ЗАКАЗЫ, РАБОТНИКИ, РАЗРАБОТКИ, КОМПЬЮТЕРЫ, КОМПЛЕКТУЮЩИЕ, ПОСТАВЩИКИ. Рис.7.3 - первая попытка сформировать связи между этими сущностями на основе имеющейся информации, опыта и «здравого смысла».
Естественными в данном случае будут следующие допущения, касающиеся степеней связи и классов принадлежностей сущностей:
один заказ может иметь компьютеры различных конфигураций и одна конфигурация компьютера может присутствовать в различных заказах;
то же относится и к комплектующим;
в состав компьютера обязательно входит несколько типов комплектующих (иначе просто не собрать компьютер), однако есть комплектующие, не входящие ни в одну конфигурацию (например, дискеты);
одни и те же комплектующие могут входить в различные конфигурации;
каждый поставщик обязательно что-то поставляет, иногда - несколько типов комплектующих (интересно хранить сведения только о фирмах, поставляющих что-либо);
все комплектующие кем-то поставляются, может быть, несколькими поставщиками (сама фирма не занимается изготовлением комплектующих).
Все это отражено на рис 7.3.
45