Санкт-Петербургский государственный университет
Опубликован: 04.12.2007 | Доступ: свободный | Студентов: 2432 / 255 | Оценка: 4.30 / 3.65 | Длительность: 16:28:00
ISBN: 978-5-94774-823-9
Лекция 8:

Визуальное моделирование баз данных

< Лекция 7 || Лекция 8: 1234 || Лекция 9 >
Аннотация: В этой лекции рассказывается о визуальном моделировании схем баз данных на основе модели "сущность-связь". Показывается, как это делать с помощью диаграммы классов 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].

Об уровнях абстракции при моделировании данных

В процессе проектирования схему данных удобно представлять с помощью следующих моделей (см. рис. 8.2):

  • концептуальная модель служит средством для извлечения знаний о предметной области, то есть для работы с экспертами, пользователями, заказчиками; эта модель помогает программистам разобраться с той сферой человеческой деятельности, для которой им предстоит создать свое программное приложение, выявив там основные сущности и связи между ними; поскольку концептуальная модель предназначена для обсуждения с непрограммистами, то она не должна содержать конструкций и понятий, которых последним не воспринять;
  • логическая модель позволяет полностью задать структуру данных, однако без "привязки" к конкретной платформе реализации; с одной стороны, такое описание получается компактнее, чем физическая модель, позволяя взглянуть на схему данных в целом, без лишних деталей; с другой стороны, такая спецификация может быть в дальнейшем реализована для разных СУБД; логическая модель содержит абстракции, которые уже могут быть непонятны экспертам предметной области - эта модель служит для уточнения информации о предметной области в виде, удобном для последующей реализации;
  • физическая модель является описанием структуры данных в терминах платформы реализации - конкретной СУБД; эта модель уже содержит информацию о различных деталях реализации - индексах и ключах, типах атрибутов и т.д., которые определены в терминах целевого языка программирования и т. д.; физическая модель фактически является диаграммным представлением части программного кода, определяющего схему данных.
Различные модели данных

Рис. 8.2. Различные модели данных

Далее следует реализация схемы данных в виде:

  • полной спецификации с помощью программы на языке программирования, например, на SQL/DDL, с описанием всех таблиц, значений записей по умолчанию, определением прав на таблицы и группы таблиц, хранимыми процедурами и триггерами и т. д.; эта спецификация может содержать информацию, которая отсутствует в физической модели, так как в последнюю попадает только то, что хорошо выразимо с помощью диаграмм сущность-связь;
  • "живой" базы данных, получаемой как результат исполнения средствами некоторой СУБД программы, задающей схему (SQL/DDL-скрипта); создается электронное хранилище, которое реализует доступ к данным со стороны программных приложений, а также обеспечивает сохранение данных после окончания работы приложения и выключения компьютера - это свойство данных обычно называют персистентностью (persistent).
< Лекция 7 || Лекция 8: 1234 || Лекция 9 >
Анна Митюрёва
Анна Митюрёва

http://www.intuit.ru/studies/courses/1041/218/info

С мобильного приложения доступ есть, а через сайт не отображается. Печально =(

Роман Маркиданов
Роман Маркиданов
Россия, Батыревский р-н