Проектирование БД зависит от типа используемой для хранения данных СУБД - объектной или реляционной. Для объектных БД никакого проектирования не требуется, поскольку классы-сущности непосредственно отображаются в БД. Для реляционных БД классы-сущности объектной модели должны быть отображены в таблицы реляционной БД. Совокупность таблиц и связей между ними может быть представлена, в виде диаграммы классов, которая по существу является ER-диаграммой. Набор правил, применяемых при отображении классов в таблицы БД, фактически совпадает с правилами преобразования сущностей и связей, описанными в подразд. 4.1. В технологии RUP, в частности, для такого отображения используется специальный инструмент — Data Modeler. Он выполняет преобразование классов-сущностей в классы-таблицы с последующей генерацией описания БД на SQL.
Для описания схемы БД применяется следующий набор элементов языка UML со своими стереотипами (профиль UML):
· таблица представляется в виде класса со стереотипом «Table»;
· представление изображается в виде класса со стереотипом «View»;
· столбец таблицы представляется в виде атрибута класса с соответствующим типом данных;
· обычная ассоциация и агрегация представляются в виде ассоциации со стереотипом «Non-Identifying» (в терминологии IDEF1X — неидентифицирующей связи);
· композиция представляется в виде ассоциации со стереотипом «Identifying» (в терминологии IDEF1X — идентифицирующей связи);
· схема БД представляется в виде пакета со стереотипом «Schema», содержащего классы-таблицы;
· контейнер хранимых процедур представляется в виде класса со стереотипом «SP Container»;
· ограничения целостности, индексы и триггеры представляются в виде операций классов-таблиц со стереотипами «РК» (Primary key), «FK» (Foreign key), «Unique», «Check», «Index» и «Trigger»;
· физическая база данных представляется в виде компонента со стереотипом «Database».
Рис. 4.36. Пример неидентифицирующих связей
Примеры преобразования, выполненного для классов варианта использования «Зарегистрироваться на курсы» средствами Data Modeler, приведены на рис. 4.36 - 4.38.
На рис. 4.36 ассоциации-классы, представляющие свойства связей между классами Schedule и CourseOffering (см. рис. 4.16), преобразованы в таблицы в соответствии с правилом преобразования бинарных связей типа «многие-ко-многим».
Идентифицирующая связь между таблицами T_Student и T_Schedule на рис. 4.37 соответствует связи композиции между классами Student и Schedule на рис. 4.34.
На рис. 4.38 показано преобразование связи обобщения, изображенной на рис. 4.35. Здесь используется отдельная таблица для каждого подтипа (в соответствии с правилом из подразд. 4.1). Достоинства и недостатки различных способов преобразования обсуждались в подразд. 4.1). Преимуществом способа, применяемого в данном случае, является простота алгоритма автоматического преобразования, выполняемого средствами Data Modeler.
Рис. 4.37. Пример идентифицирующей связи
Рис. 4.38. Пример преобразования обобщения
! Следует запомнить
Целью объектно-ориентированного анализа является трансформация функциональных требований к ПО в предварительный системный проект и создание стабильной основы архитектуры системы. В процессе проектирования системный проект «погружается» в среду реализации с учетом всех нефункциональных требований.