12.01M
Категория: Базы данныхБазы данных

Физическое проектирование баз данных. Обратное проектирование

1.

Физическое проектирование баз данных
Обратное проектирование
Полегенько Ирина Геннадьевна
кандидат технических наук, ассоциированный
профессор

2.

Обратное проектирование
Как следует из самого термина — обратное
проектирование помогает нам на основе уже
существующей и работающей базы данных получить
информацию о её структуре, настройках, логике работы и
т.д.
Зачем нужна эта информация? Вариантов может быть
несколько:
• Заказчик передал нам для поддержки и доработки
проект, ранее реализованный другим исполнителем.
• Необходимо внести правки в имеющийся проект, но в
силу тех или иных причин документация не даёт нам
ответов на имеющиеся вопросы.
• Мы изучаем старый проект для того, чтобы перенести
часть его функциональности в новый.
• И иные более2 редкие случаи.

3.

Обратное проектирование
В процессе прямого проектирования мы всегда
вынуждены проходить все три уровня
(инфологический, даталогический, физический),
причём неоднократно.
При обратном проектировании ситуация выглядит
иначе.
Во-первых, нам приходится намного реже
«возвращаться» на предыдущий уровень, т.к. при
правильной организации работы и использовании
подходящих инструментов мы можем за один
раз собрать всю необходимую информацию.
Во-вторых, нам достаточно часто не нужно получать
модели всех уровней: например, нет никакого
смысла строить инфологическую модель уже
существующей базы данных, если мы хотим
решить пару проблем с производительностью и
настроить индексы и/или методы доступа.

4.

Обратное проектирование
Если свести вышесказанное к паре кратких
формулировок, получится:
• цель обратного проектирования — получить
о существующей базе данных информацию,
достаточную для выполнения предстоящей
работы;
• задача обратного проектирования —
собрать необходимую информацию в полном
объёме и
представить её в удобной для восприятия и
дальнейшего использования форме.

5.

Обратное проектирование
Немного за рамками данной темы (но всё же достойно
упоминания) находится анализ базы данных и настроек
СУБД при устранении неких технических проблем и
оптимизации производительности.
Строго формально такой анализ тоже можно отнести к
обратному проектированию баз данных, но на практике
его таковым не считают потому, что в процессе такого
анализа ставятся достаточно узкие, специфические
технические задачи.
И для решения этих задач с одной стороны нужна очень
специфическая информация (которой может быть
совершенно недостаточно для понимания общей
структуры базы данных, её связи с предметной областью
и т.д.), а с другой стороны такой информации может
понадобиться очень много (намного больше, чем нужно
было бы, если бы мы занимались «классическим»

6.

Обратное проектирование
В любом случае — если вы исследуете
работающую систему (и базу данных как её
часть), вы собираете информацию.
Вид, объём, форма представления, способы
извлечения этой информации могут быть
очень
разными, потому остро встаёт вопрос о
поиске наиболее подходящих инструментов.

7.

Инструменты и техники
обратного проектирования
Поскольку здесь мы говорим именно об обратном
проектировании, начнём с физического уровня.
Как правило, здесь речь идёт о разнообразных
диагностических инструментах, позволяющих нам
получить информацию о настройках СУБД, собрать
статистику её работы, оценить параметры
производительности, увидеть возникающие
ошибочные ситуации и определить их
первоисточник.
С такими задачами лучше всего справляются
узкоспециализированные инструменты,
разрабатываемые производителями СУБД или
специальные (как правило, весьма недешёвые)
коммерческие инструменты. Однако огромное

8.

Инструменты и техники
обратного проектирования
С даталогическим уровнем ситуация выглядит чутьчуть полегче потому, что большинство инструментов
прямого проектирования баз данных также
поддерживает и обратное проектирование:
инструмент подключается к СУБД и извлекает оттуда
информацию о таблицах, связях, индексах, хранимых
процедурах и т.д.
Основная сложность здесь в удобстве представления
информации. Эта проблема не настолько остро
проявляет себя на физическом уровне, т.к. там мы
(как правило) извлекаем небольшой объём данных,
которыми будем пользоваться относительно недолго,
потому неудобство представления этих данных можно

9.

Инструменты и техники
обратного проектирования
Но если мы поднялись на даталогический уровень, то
(скорее всего) нам нужно очень много информации, и
мы планируем использовать её достаточно долгое
время. Тем более, что часть данных с физического
уровня также попадёт в нашу выборку, потому что
некоторые структуры базы данных невозможно
описать корректно, если проигнорировать
низкоуровневые технические детали.
И здесь нас ждёт большое разочарование, т.к. ни
узкоспециализированные, ни универсальные
инструменты до сих пор не умеют представлять
собранную информацию столь же удобно для
восприятия человеком, как могла бы выглядеть
изначально созданная и оформленная человеком
схема базы данных.

10.

Инструменты и техники
обратного проектирования
Ситуация является более-менее «терпимой», если мы
говорим о базе данных с парой десятков таблиц, но когда
их число измеряется сотнями, в первый момент вы
получите совершенно нечитаемую мешанину из хаотично
расположенных таблиц и связей. И придётся потратить
немало времени на приведение этой картины в удобную
для дальнейшей работы форму.
На рисунке представлен результат обратного
проектирования относительно небольшой базы данных
(порядка 12 таблиц), выполненного с помощью
DBeaver213. Да, инструмент сделал всё возможное, чтобы
хоть как-то расположить данные в пригодном для
восприятия виде.
И «пригодно» получилось, но «удобно», к сожалению, нет.

11.

Инструменты и техники
обратного проектирования
Отдельного упоминания заслуживает ситуация, в
которой после выполнения обратного
проектирования и внесения в модель базы данных
необходимых правок мы бы хотели автоматически
спроецировать эти изменения на реальную
работающую базу данных.
Несмотря на то, что многие инструменты
поддерживают подобную функциональность, всё
зависит от сути изменений. Так, например, нет
ничего сложного в том, чтобы добавить в таблицу
поле, или удалить поле, или переименовать
представление.

12.

Инструменты и техники
обратного проектирования
Но как, выполнить перемещение поля из
одной таблицы в другую (без потери
данных)? Как
объединить несколько полей в одно или
разделить одно на несколько (опять же —
без потери данных)? Как правило, ни один
инструмент не предоставляет готовых
решений потому, что
алгоритм выполнения такой операции в
каждом отдельном случае будет
уникальным и очень

13.

Инструменты и техники
обратного проектирования
Потому здесь снова предстоит выполнить много ручной
работы (как правило по написанию соответствующего SQLкода; возможно, с созданием неких временных
промежуточных состояний базы данных).
И, наконец, буквально пара слов об инфологическом
уровне. Если мы вынуждены в процессе обратного
проектирования подняться так высоко, скорее всего, нам
предстоит или некая глобальная переработка
существующего проекта, или вовсе разработка нового.
Потому можно смело говорить о том, что здесь мы,
фактически, возвращаемся к прямому проектированию,
только вместо заказчика информацию нам предоставляет
некий инструмент. Полученную информацию мы
оформляем в удобном для восприятия виде и начинаем
обсуждать с заказчиком — как мы и делали бы при
классическом прямом проектировании.

14.

ПРОЕКТ
14

15.

Поставщики
Платеж_пост
Договор_пост
PK
Идентификатор
PK
Идентификатор
Отдел
PK
Идентификатор
Идентификатор_Договор_пост
Название
Дата заключения договора
Идентификатор_Заявка
Руководитель
Наименование
Название платежа
Телефон
договора
Сотрудник
PK
Идентификатор
Номер счета
Идентификатор_Отдел
Размер платежа
Фамилия
Поставщик
Идентификатор_Сотрудник
Имя
PK
Идентификатор
Заявка_пост
Отчество
Прайс-лист
Идентификатор_Договор_пост
Название компании
PK
Идентификатор
Телефон
PK
Идентификатор
Идентификатор_ПЛ
Почта
Должность
Адрес
Идентификатор_Поставщик
Наименование товара
Телефон
Наименование товара
Количество продукции
Почта
Стоимость за единицу товара
(менее 1000)
Стоимость за единицу
продукции
Стоимость за единицу товара
(более 1000)
Итоговая стоимость
Идентификатор_Сотрудник

16.

MS Access
16

17.

MS Access. Схема данных
17

18.

MS Access. Схема данных
18

19.

Программа Dbeaver.
Администрирование баз данных

20.

Программа Dbeaver.
Администрирование баз данных
DBeaver — это клиентское программное
приложение SQL и инструмент администрирования
базы данных . Для реляционных баз данных он
использует интерфейс прикладного
программирования (API) JDBC для взаимодействия
с базами данных через драйвер JDBC. Для других
баз данных ( NoSQL )
используются проприетарные драйверы баз
данных.

21.

Выбор СУБД

22.

Подключение к базе данных

23.

Подключение к базе данных

24.

24

25.

25

26.

26

27.

Вся база данных

28.

Логическая модель данных
28

29.

Физическая модель данных

30.

MySQL Workbench
30

31.

MySQL Workbench
31
English     Русский Правила