Инфологическое проектирование
Инфологическая модель применяется на втором этапе проектирования БД, то есть после словесного описания предметной области.
В настоящий момент модель "сущность—связь" ("Entity Relationship"), стала фактическим стандартом при инфологическом моделировании баз данных. Общепринятым стало сокращенное название ER-модель, большинство современных CASE-средств содержат инструментальные средства для описания данных в формализме этой модели. Кроме того, разработаны методы автоматического преобразования проекта БД из ER-модели в реляционную, при этом выполняется преобразование в даталогическую модель, соответствующую конкретной СУБД.
Модель "сущность-связь"
В основе ER-модели лежат следующие базовые понятия:
Сущность, с помощью которой моделируется класс однотипных объектов. Сущность имеет имя, уникальное в пределах моделируемой системы. Так как сущность соответствует некоторому классу однотипных объектов, то предполагается, что в системе существует множество экземпляров данной сущности. Объект, которому соответствует понятие сущности, имеет свой набор атрибутов — характеристик, определяющих свойства данного представителя класса.
Между сущностями могут быть установлены связи — бинарные ассоциации, показывающие, каким образом сущности соотносятся или взаимодействуют между собой.
Рис. 3. Пример связи "один-ко-многим" сущностей "Студент" и "Преподаватель"
Связи делятся на три типа по множественности: один-к-одному (1:1), один-ко-многим (1:M), многие-ко-многим (M:M).
Рис. 4. Пример моделирования связей M:M и 1:M
Связь любого из этих типов может быть обязательной, если в данной связи должен участвовать каждый экземпляр сущности, необязательной — если не каждый экземпляр сущности должен участвовать в данной связи. Например, каждый студент, который пишет диплом, должен иметь своего руководителя дипломного проектирования, но не каждый преподаватель должен вести дипломное проектирование.
Рис. 5. Пример обязательной и необязательной связи между сущностями
Кроме того, в ER-модели допускается категоризация сущностей. Т.е. вводится понятие подтипа сущности, то есть сущность может быть представлена в виде двух или более своих подтипов — сущностей, каждая из которых может иметь общие атрибуты и отношения и/или атрибуты и отношения, которые определяются однажды на верхнем уровне и наследуются на нижнем уровне. Все подтипы одной сущности рассматриваются как взаимоисключающие, и при разделении сущности на подтипы она должна быть представлена в виде полного набора взаимоисключающих подтипов.
Сущность, на основе которой строятся подтипы, называется супертипом. Любой экземпляр супертипа должен относиться к конкретному подтипу. Для графического изображения категоризации сущности вводится специальный графический элемент, называемый узел-дискриминатор. Он изображается в виде полукруга, выпуклой стороной к суперсущности.
Рис. 6. Диаграмма подтипов сущности ТЕСТЫ.
Эту диаграмму можно расшифровать следующим образом. Каждый тест в некоторой системе тестирования является либо тестом проверки знаний языка SQL, либо некоторой аналитической задачей, которая выполняется с использованием заранее написанных Java-апплетов, либо тестом по некоторой области знаний, состоящим из набора вопросов и набора ответов.
В результате построения модели предметной области в виде набора сущностей и связей получаем связный граф. В полученном графе необходимо избегать циклических связей — они выявляют некорректность модели.
В качестве примера спроектируем инфологическую модель системы, предназначенной для хранения информации о книгах, представленных в библиотеке (см. описание БД «Библиотека»).
Рис. 7. Инфологическая модель БД «Библиотека»