
- •8. Лекция: Визуальное моделирование баз данных
- •Схемы данных и модельно-ориентированный подход
- •Модель "сущность-связь"
- •Об уровнях абстракции при моделировании данных
- •Пример концептуальной модели
- •Реалиазация отношения "многие-ко-многим" для реляционных субд
- •Пример логической модели
- •Пример физической модели
- •Реализация отношения "один-ко-многим" для реляционных субд
- •Реализация отношений 1:0..1 и наследования для реляционных субд
- •Реализация агрегирования для реляционных субд
- •Спецификация структуры данных на sql/ddl
- •Об инструментальных средствах
- •Контрольные вопросы
8. Лекция: Визуальное моделирование баз данных
В этой лекции рассказывается о визуальном моделировании схем баз данных на основе модели "сущность-связь". Показывается, как это делать с помощью диаграммы классов UML. Рассматриваются разные виды схем данных - концептуальная, логическая и физическая, затрагиваются вопросы автоматической генерации кода для самых распространенных промышленно-используемых СУБД - реляционных. Подробно рассматривается реализация отношений "многие-ко-многим", "один-ко-многим", а также наследования. В качестве примера представлен фрагмент схемы баз данных приложения, автоматизирующего работу факультета университета, реализованный в Microsoft Visual Studio для СУБД Microsoft SQL Server
Схемы данных и модельно-ориентированный подход
Приложения баз данных - одни из самых распространенных программных систем. Электронная форма хранения данных, учет и обработка различной информации стали неотъемлемой частью бизнеса, делопроизводства, библиотечного, музейного дела и т. д. Данные в таких системах хранятся по многу лет, активно используются и изменяются. В связи с этим структура данных должна:
точно отражать структуру предметной области;
позволять программным приложениям эффективно работать с данными;
быть удобна для внесения изменений при расширении предметной области, а также при исправлении неточностей, то есть быть пригодной для эволюции.
Следовательно, структуру баз данных следует тщательно проектировать. Добротность схемы данных во многом определяет качество и ценность всего программного приложения.
Хороший результат здесь не достигается "за один присест" - сели и спроектировали хорошую структуру данных. В данном случае применима базовая идея визуального моделирования: разработку ПО удобно проводить как процесс создания уточняющих друг друга моделей. Именно так происходит переход от предметной области к работающему ПО.
Модель "сущность-связь"
Итак, при создании структур баз данных принято использовать моделирование, а не сразу писать код, например, на SQL/DDL. Общепринятым способом моделирования структуры данных являетсямодель "сущность-связь", предложенная Петером Ченом еще в 1976 году[8.1].
Язык SQL/DDLявляется промышленным стандартом для задания схемы реляционных баз данных и поддерживается практически всеми промышленными СУБД. Этот язык позволяет описывать таблицы баз данных, задавать их поля, индексы, ключи и так далее. Дальнейшую информацию о SQL можно получить в[8.2],[8.5].
СУБД (система управления базами данных) - это программное обеспечение, предназначенное для решения задач разработки, хранения и программного доступа к большим массивам данных. Самые известные СУБД - это Oracle, Microsoft SQL Server, MySQL. Дальнейшую информацию о разработке баз данных и различных СУБД можно получить в[8.2],[8.3],[8.4].
Сущность(entity) - это "предмет" рассматриваемой предметной области, который может быть идентифицирован некоторым способом, отличающим его от других "предметов". Конкретные человек, компания или событие являются примерами сущности.
Связь(relationship) - это некоторое отношение между двумя и более сущностями, отражающее то, как они участвуют в общей деятельности, взаимодействуют друг с другом, совместно используются некоторой другой сущностью и т. д.
На рис. 8.1,апоказаны две сущности - "Студент" и "Кафедра", - которые связаны отношением "Принадлежит". Еще точнее будет сказать, что студент принадлежит кафедре. Это пример направленного отношения между двумя сущностями.
Рис. 8.1. Примеры моделей сущность-связь
На рис. 8.1, б показан пример равноправного отношения между двумя сущностями: "Преподаватель" и "Студент" связаны отношением "Экзамен". Нарис. 8.1, в показан пример того, как в одном отношении могут участвовать более чем две сущности.
Редко бывает так, что сущность обозначает конкретный элемент предметной области - студента Васю, преподавателя Петрова А.В. Как правило, сущность обозначает всех возможных студентов, всех возможных преподавателей и т. д. Будем различать сущность-значениеисущность-тип, и аналогично - связи.
У сущностей-типов появляются атрибуты, которые аналогичны атрибутам классов в UML, а сами типы сущностей во многом похожи на классы. Нарис. 8.1, г показано, какие атрибуты имеют сущности1)"Студент" и "Кафедра". Например, ФИО - это набор из трех строк на русском языке, представляющих фамилию, имя и отчество студента. Номер курса - это атрибут, который имеет диапазон значений от единицы до шести. Атрибут "специальность" имеет значение из некоторого заданного списка специальностей и т. д.
В примерах, которые будут рассмотрены ниже, используется модель "сущность-связь", представленная в терминах диаграмм классовUML. При этом классы соответствуют типам сущностей, их атрибуты - атрибутам типов, а ассоциации - связям.
Несмотря на простоту модели "сущность-связь", она оказалась мощным инструментом при моделировании баз данных, поскольку ее нотация проста и доступна для восприятия разными специалистами и может, например, служить "мостом" между программистами и аналитиками предметной области. В том виде, в котором эту модель определил Петер Чен [8.1], в настоящий момент она не применяется - создано большое количество различных нотаций, расширяющих и уточняющих эту модель, например, IDEF1x [8.6]. Кроме того, многие виды диаграмм UML, не имеющие отношения к моделированию схем баз данных (диаграммы развертывания, диаграммы компонент, диаграммы классов, диаграммы объектов и т. д.), фактически, основываются на модели "сущность-связь", предлагая разработчикам ПО создавать специальные типы сущностей, их атрибуты и связи. Наконец, отметим, что диаграммы классов UMLмогут с успехом использоваться для моделирования схем баз данных (реляционных, объектно-ориентированных, постреляционных и т. д.) [8.4], [8.8].