Процесс проектирования БД является весьма сложным. По сути, он заключается в определении перечня данных, хранимых на физических носителях (магнитных дисках и лентах), которые достаточно полно отражают информационные потребности потенциальных пользователей в конкретной предметной области. Проектирование БД начинается с анализа предметной области и возможных запросов пользователей. В результате этого анализа определяется перечень данных и связей между ними, которые адекватно—с точки зрения будущих потребителей — отражают предметную область. Завершается проектирование БД определением форм и способов хранения необходимых данных на физическом уровне.
Весь процесс проектирования БД можно разбить на ряд взаимосвязанных этапов, каждый из которых обладает своими особенностями и методами проведения. На рис. 5.3 представлены типовые этапы.
На этапе инфологического (информационно-логического) проектирования осуществляется построение семантической модели, описывающей сведения из предметной области, которые могут заинтересовать пользователей БД. Семантическая модель (semantic model) — представление совокупности о предметной области понятий в виде графа, в вершинах которого расположены понятия, в терминальных вершинах — элементарные понятия, а дуги представляют отношения между понятиями.
Сначала из объективной реальности выделяется предметная область, т. е. очерчиваются ее границы. Логический анализ выделенной предметной области и потенциальных запросов пользователей завершается построением инфологической модели — перечня сведений об объектах предметной области, которые необходимо хранить в БД, и связях между ними.
Анализ информационных потребностей потенциальных пользователей имеет два аспекта: определение собственно сведений об объектах предметной области; анализ возможных запросов к БД и требований по оперативности их выполнения.
Анализ возможных запросов к БД позволяет уточнить связи между сведениями, которые необходимо хранить. Пусть, например, в БД по учебному процессу института хранятся сведения об учебных группах, читаемых курсах и кафедрах, а также связи «учебные группы—читаемые курсы» и «читаемые курсы —кафедры». Тогда запрос о том, проводит ли некоторая кафедра занятия в конкретной учебной группе, может быть выполнен только путем перебора всех читаемых в данной группе курсов.
Хранение большого числа связей усложняет БД и приводит к увеличению памяти ЭВМ, но часто существенно ускоряет поиск нужной информации. Поэтому разработчику БД (администратору БД) приходится принимать компромиссное решение, причем процесс определения перечня хранимых связей, как правило, имеет итерационный характер.
Этап датологического проектирования подразделяется на логическое (построение концептуальной модели данных) и физическое (построение физической модели) проектирование.
Главной задачей логического проектирования является представление выделенных на предыдущем этапе сведений в виде данных в форматах, поддерживаемых выбранной СУБД.
Задача физического проектирования — выбор способа хранения данных на физических носителях и методов доступа к ним с использованием возможностей, предоставляемых СУБД.
Инфологическая модель «сущность—связь» (entity-relationship model; ER-model) П.Чена представляет собой описательную (неформальную) модель предметной области, семантически определяющую в ней сущности и связи [44].
Относительная простота и наглядность описания предметной области позволяет использовать ее в процессе диалога с потенциальными пользователями с самого начала инфологического проектирования. Построение инфологической модели П.Чена, как и любой другой модели, является творческим процессом, поэтому единой методики ее создания нет. Однако при любом подходе к построению модели используют три основных конструктивных элемента: сущность, атрибут, связь.
Сущность — это собирательное понятие некоторого повторяющегося объекта, процесса или явления окружающего мира, о котором необходимо хранить информацию в системе. Сущность может определять как материальные (например, «студент», «грузовой автомобиль» и т.п.), так и нематериальные объекты (например, «экзамен», «проверка» и т.п.). Главной особенностью сущности является то, что вокруг нее сосредоточен сбор информации в конкретной предметной области. Тип сущности определяет набор однородных объектов, а экземпляр сущности — конкретный объект в наборе. Каждая сущность в модели П.Чена именуется. Для идентификации конкретного экземпляра сущности и его описания используется один или несколько атрибутов.
Атрибут — это поименованная характеристика сущности, которая принимает значения из некоторого множества значений [46]. Например, у сущности «студент» могут быть атрибуты «фамилия», «имя», «отчество», «дата рождения», «средний балл за время обучения» и т. п.
Связи в инфологической модели выступают в качестве средства, с помощью которого представляются отношения между сущностями, имеющими место в предметной области. При анализе связей между сущностями могут встречаться бинарные (между двумя сущностями) и в общем случае n -арные (между п сущностями) связи. Например, сущности «отец», «мать» и «ребенок» могут находиться в 3-арном отношении «семья» («является членом семьи»).
Связи должны быть поименованы; между двумя типами сущностей могут существовать несколько связей.
Наиболее распространены бинарные связи. Учитывая, что любую n -арную связь можно представить в виде нескольких бинарных, подробнее остановимся именно на таких связях между двумя типами сущностей, устанавливающими соответствие между множествами экземпляров сущностей.
Различают четыре типа связей:
· один к одному (1: 1);
· один ко многим (1: М);
· многие к одному (М: 1);
· многие ко многим (М: N).
Связь один к одному определяет такой тип связи между типами сущностей А и Б, при котором каждому экземпляру сущности А соответствует один и только один экземпляр сущности В, и наоборот. Таким образом, имея некоторый экземпляр сущности А, можно однозначно идентифицировать соответствующий ему экземпляр сущности В, а по экземпляру сущности В — экземпляр сущности А. Например, связь типа 1: 1 «имеет» может быть определена между сущностями «автомобиль» и «двигатель», так как на конкретном автомобиле может быть установлен только один двигатель и один двигатель, естественно, нельзя установить сразу на несколько автомобилей.
Связь один ко многим определяет такой тип связи между типами сущностей А и В, для которой одному экземпляру сущности А может соответствовать 0, 1 или несколько экземпляров сущности В, но каждому экземпляру сущности В соответствует один экземпляр сущности А. При этом однозначно идентифицировать можно только экземпляр сущности А по экземпляру сущности В. Примером связи типа 1: М является связь «учится» между сущностями «учебная группа» и «студент». Для такой связи, зная конкретного студента, можно однозначно идентифицировать учебную группу, в которой он учится, или, зная учебную группу, можно определить всех обучающихся в ней студентов.
Связь многие к одному по сути эквивалентна связи один ко многим. Различие заключается лишь в том, с точки зрения какой сущности (А или В) данная связь рассматривается.
Связь многие ко многим определяет такой тип связи между типами сущностей А и В, при котором каждому экземпляру сущности А может соответствовать 0, 1 или несколько экземпляров сущности В, и наоборот. При такой связи, зная экземпляр одной сущности, можно указать все экземпляры другой сущности, относящиеся к исходному, т. е. идентификация сущностей неуникальна в обоих направлениях. В качестве примера такой связи можно рассмотреть связь «изучает» между сущностями «учебная дисциплина» и «учебная группа».
Реально все связи являются двунаправленными, т.е., зная экземпляр одной из сущностей, можно идентифицировать (однозначно или многозначно) экземпляр (экземпляры) другой сущности. В некоторых случаях целесообразно рассматривать лишь однонаправленные связи между сущностями в целях экономии ресурсов ЭВМ. Возможность введения таких связей полностью определяется информационными потребностями пользователей. Различают простую и многозначную однонаправленные связи, которые являются аналогами связей типа 1: 1 и 1: М с учетом направления идентификации. Так, для простой однонаправленной связи «староста» («является старостой») между сущностями «учебная группа» и «студент» можно, зная учебную группу, однозначно определить ее старосту, но, зная конкретного студента, нельзя сказать, является ли он старостой учебной группы. Примером многозначной однонаправленной связи служит связь между сущностями «пациент» и «болезнь», для которой можно для каждого пациента можно указать его болезни, но нельзя выявить всех обладателей конкретного заболевания.
Введение однонаправленных связей означает, что в результате анализа потенциальных запросов потребителей установлено, что потребности в информации, аналогичной приведенной в двух последних примерах, у пользователей не будет (и они не будут формулировать соответствующие запросы к БД).
Графически типы сущностей, атрибуты и связи принято изображать прямоугольниками, овалами и ромбами соответственно. На рис. 5.4 представлены примеры связей различных типов; на рис. 5.5 и 5.6 — фрагменты инфологических моделей «студенты» (без указания атрибутов) и «учебный процесс факультета».
Несмотря на то что построение инфологической модели есть процесс творческий, можно указать два основополагающих правила, которыми следует пользоваться всем проектировщикам БД [15, 44]:
· при построении модели должны использоваться только три типа конструктивных элементов: сущность, атрибут, связь;
· каждый компонент информации должен моделироваться только одним из приведенных выше конструктивных элементов для исключения избыточности и противоречивости описания.
Моделирование предметной области начинают с выбора сущностей, необходимых для ее описания. Каждая сущность должна соответствовать некоторому объекту (или группе объектов) предметной области, о котором в системе будет накапливаться информация. Существует проблема выбора конструктивного элемента для моделирования той или иной «порции» информации, что существенно затрудняет процесс построения модели. Так, информация о том, что некоторый студент входит в состав учебной группы, можно в модели представить:
· как связь: «входит в состав» для сущностей «студент» и «учебная группа»;
· как атрибут: «имеет в составе «студента» сущности «учебная группа»;
· как сущность: «состав учебной группы».
В этих случаях приходится рассматривать несколько вариантов и с учетом информационных потребностей пользователей разбивать предметную область на такие фрагменты, которые, с их точки зрения, представляют самостоятельный интерес.
При моделировании предметной области следует обращать внимание на существующий в ней документооборот. Именно документы, циркулирующие в предметной области, должны являться основой для формулирования сущностей. Это связано с двумя обстоятельствами. Во-первых, эти документы, как правило, достаточно полно отражают информацию, которую необходимо хранить в БД, причем в виде конкретных данных. Во-вторых, создаваемая ИС должна предоставлять пользователям привычную для них информацию в привычном виде, что в последующем существенно облегчит ввод БД в эксплуатацию.
При описании атрибутов сущности необходимо выбрать ряд атрибутов, позволяющих однозначно идентифицировать экземпляр сущности. Совокупность идентифицирующих атрибутов называют ключом.
Помимо идентифицирующих используются и описательные атрибуты, предназначенные для более полного определения сущностей. Число атрибутов (их тип) определяется единственным образом — на основе анализа возможных запросов пользователей. Существует ряд рекомендаций по работе с атрибутами [15, 44], например, по исключению повторяющихся групп атрибутов (рис. 5.7). Все они направлены на улучшение качества инфологической модели.
При определении связей между сущностями следует избегать связей типа М: N, так как они приводят к существенным затратам ресурсов ЭВМ. Устранение таких связей предусматривает введение других (дополнительных) элементов — сущностей и связей. На рис. 5.8 приведен пример исключения связи «многие ко многим».
В заключение приведем типовую последовательность работ (действий) по построению инфологической модели:
· выделение в предметной области сущностей;
· введение множества атрибутов для каждой сущности и выделение из них ключевых;
· исключение множества повторяющихся атрибутов (при необходимости);
· формирование связей между сущностями;
· исключение связей типа М: N (при необходимости);
· преобразование связей в однонаправленные (по возможности).
Помимо модели П.Чена, существуют и другие инфологические модели. Все они представляют собой описательные (неформальные) модели, использующие различные конструктивные элементы и соглашения по их использованию для представления в БД информации о предметной области. Иными словами, первый этап построения БД всегда связан с моделированием предметной области.