Рефакторинг баз данных

Рефакторинг баз данных

Рефа́кторинг баз да́нных (англ. database refactoring) — это простое изменение в схеме базы данных, которое способствует улучшению ее проекта при сохранении функциональной и информационной семантики[1]. Иными словами, следствием рефакторинга базы данных не может быть добавление новых функциональных возможностей или ограничение уже существующих, равно как и добавление новых данных или же изменение смысла существующих.

Содержание

Категории

С. Эмблер и П. Садаладж[1] выделяют следующие категории рефакторинга реляционных баз данных:

  • Рефакторинг структуры
Изменения в структуре таблиц или представлений.

Методы: введение вычисляемого столбца; введение суррогатного ключа; замена данных типа LOB таблицей; замена связи "один ко многим" ассоциативной таблицей; замена столбца; замена суррогатного ключа естественным ключом; переименование представления; переименование столбца; переименование таблицы; перемещение столбца; разбиение столбца; разбиение таблицы; слияние столбцов; слияние таблиц; удаление представления; удаление столбца; удаление таблицы.

  • Рефакторинг качества данных
Изменения, направленные на улучшение качества хранимой в базе данных информации.

Методы: введение заданного по умолчанию значения; введение общего формата; введение ограничения столбца; добавление поисковой таблицы; замена кодового обозначения типа флажками свойств; осуществление стратегии консолидированных ключей; перемещение данных; преобразование столбца в недопускающий NULL-значения; применение стандартного типа; применение стандартных кодовых обозначений; уничтожение значения, заданного по умолчанию; уничтожение ограничения столбца; уничтожение столбца, не допускающего NULL-значений.

  • Рефакторинг ссылочной целостности
Изменения, направленные на поддержание ссылочной целостности в базе данных.

Методы: введение каскадного удаления; введение программного удаления; введение триггера для накопления исторических данных; введение физического удаления; добавление ограничения внешнего ключа; добавление триггера для вычисляемого столбца; уничтожение ограничения внешнего ключа.

  • Рефакторинг архитектуры
Изменения, направленные на улучшение взаимодействия внешних программ с базой данных.

Методы: введение вычислительного метода; введение индекса; введение таблицы только для чтения; добавление зеркальной таблицы; добавление метода чтения; добавление методов CRUD; замена метода (методов) представлением; замена представления методом (методами); инкапсуляция таблицы в представление; использование официально заданного источника данных; перенос метода в базу данных; перенос метода из базы данных.

  • Рефакторинг методов
Методы рефакторинга кода, применимые к триггерам и хранимым процедурам.

Когда проводить рефакторинг

Выделяются некоторые общие недостатки баз данных, наличие которых может сигнализировать о необходимости рефакторинга[1].

  • Многоцелевые столбцы, т.е. столбцы, которые используются для хранения разнородных данных
  • Многоцелевые таблицы, т.е. таблицы, в которых хранится информация о разных типах сущностей
  • Избыточные данные
  • Таблицы со слишком большим количеством столбцов
  • Таблицы со слишком большим количеством строк
  • Многозначные столбцы, т.е. столбцы, внутри которых в различных позициях представлено несколько разных фрагментов информации
  • Боязнь вносить изменения в схему базы данных из-за возможных нарушений в работе приложений

Переходный период

Переходный период при рефакторинге - это период времени, в течение которого осуществляется поддержка как первоначальной версии схемы базы данных, так и версии новой. Его введение необходимо для того, чтобы предоставить разработчикам время для внесения необходимых изменений в приложения, работающие с базой данных.

Пример

Переименование столбца в таблице

Как пример рефакторинга базы данных можно привести операцию переименования столбца в существующей таблице.

Таблица Employee, хранящая данные о сотрудниках фирмы, содержит столбец zarplata, который было решено переименовать в salary, чтобы обеспечить единообразное именование объектов в базе данных, т.е. в качестве имен использовать исключительно английские слова. Для этого необходимо сделать следующее: добавить в таблицу столбец salary и скопировать в него данные из столбца zarplata, ввести триггер, который будет синхронизировать данные между двумя столбцами в течение переходного периода, а по прошествии данного периода удалить триггер и первоначальный столбец.

Источники

  1. 1 2 3 Скотт В. Эмблер, Прамодкумар Дж. Садаладж Рефакторинг баз данных: эволюционное проектирование = Refactoring Databases: Evolutionary Database Design (Addison-Wesley Signature Series). — М.: «Вильямс», 2007. — С. 368. — ISBN 978-5-8459-1157-5

См. также


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Полезное


Смотреть что такое "Рефакторинг баз данных" в других словарях:

  • Рефакторинг — (англ. refactoring) или реорганизация кода   процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы[1][2]. В основе рефакторинга лежит последовательность… …   Википедия

  • Шаблон проектирования — У этого термина существуют и другие значения, см. Паттерн. В разработке программного обеспечения, шаблон проектирования или паттерн (англ. design pattern) повторимая архитектурная конструкция, представляющая собой решение проблемы… …   Википедия

  • Шаблоны проектирования — (паттерн, англ. design pattern) это многократно применяемая архитектурная конструкция, предоставляющая решение общей проблемы проектирования в рамках конкретного контекста и описывающая значимость этого решения. Паттерн не является законченным… …   Википедия

  • Образы разработки — Шаблоны проектирования (паттерн, англ. design pattern)  это многократно применяемая архитектурная конструкция, предоставляющая решение общей проблемы проектирования в рамках конкретного контекста и описывающая значимость этого решения. Паттерн не …   Википедия

  • Паттерны проектирования — Шаблоны проектирования (паттерн, англ. design pattern)  это многократно применяемая архитектурная конструкция, предоставляющая решение общей проблемы проектирования в рамках конкретного контекста и описывающая значимость этого решения. Паттерн не …   Википедия

  • Разработка через тестирование — Разработка программного обеспечения Процесс разработки ПО Шаги процесса Анализ • Проектирование • Программирование • Докумен …   Википедия

  • Инженерия производительности — (англ. Performance Engineering) часть системотехники, включающая в себя набор ролей, знаний, практик, инструментов и результатов и применяющаяся на каждом этапе Цикла разработки программного обеспечения с целью убедиться в том, что создаваемое,… …   Википедия

  • InterBase — Interbase  СУБД от компании Borland. История Основой InterBase был проект, разработанный Джимом Старки (Jim Starkey) во время работы над СУБД Datatrive. Джим создал его как реализацию своей идеи базы данных с многоверсионной архитектурой. В… …   Википедия

  • JDeveloper — Тип Java IDE Разработчики Oracle Написана на Java Операционная система кроссплатформенная Последняя версия 11g (11.1.2.0.0) (2011 06 06) Лицензия …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»