Предисловие
Выборочные аналитические исследования ИТ-проектов, периодически проводимые международными компаниями Gartner Groups и IDC, показывают, что далеко не все они заканчиваются успешно. По оценкам этих компаний, 50% проектов с базами данных нельзя признать успешными. Существует множество причин, по которым это происходит: от плохо поставленной задачи до неудовлетворительного исполнения в установленные сроки. Одним из направлений работы, способствующих успешности ИТ-проектов, является формирование компетенции членов команды проекта в процессе целенаправленного обучения.
В настоящем курсе лекций пойдет речь о решении комплекса задач, возникающих в процессе проектирования реляционных баз данных. Отметим сразу, что термин "база данных" будет интерпретироваться нами в контексте каждой задачи проектирования по-разному, в зависимости от цели, которой необходимо достигнуть при решении конкретной задачи проектирования.
Это связано с тем обстоятельством, что на практике база данных является определенной, встроенной в процесс деятельности различных категорий ее пользователей компонентой. Отсюда вытекает многоаспектность восприятия понятия базы данных. Каждая точка зрения на базу данных отвечает уровню профессионального восприятия людей (категорий пользователей), ее использующих. При решении задач проектирования очень важно учитывать такую многозначность в толковании термина базы данных.
Значительная часть ИТ-проектов направлена на разработку и создание информационных систем, в рамках которых осуществляется обработка данных различной сложности. Целью таких проектов является разработка и создание информационной системы с базами данных некоторого класса. Практически во всех таких проектах ставится и решается задача проектирования баз данных. Решение задачи проектирования повышает вероятность того, что разрабатываемая информационная система с базами данных (далее - система) будет удовлетворять заданным функциональным требованиям с учетом заданных ограничений.
Задача проектирования баз данных является сложной по ряду причин. Проектирование базы данных, по мнению многих ведущих специалистов, - это плохо структурированная задача по сравнению с анализом требований к базе данных или разработкой приложений. Проектирование базы данных является "самым размытым" этапом в разработке и создании базы данных. Если все этапы ИТ-проекта перекрываются друг с другом в своей последовательности, то этап проектирования перекрывается со всеми остальными. Проектирование базы данных не имеет явно выраженного начала и окончания в рамках принятого условного деления проекта на этапы: определение стратегии, анализ, проектирование, реализация, тестирование и внедрение. Оно начинается с момента принятия стратегических решений и продолжается на этапах тестирования и реализации.
Процесс проектирования базы данных охватывает несколько основных сфер:
- проектирование объектов базы данных, т.е. проектирование конкретных объектов (таблицы, представления, индексы, триггеры, хранимые процедуры, функции, пакеты) для представления данных предметной области в базе данных;
- проектирование интерфейса взаимодействия с базой данных (формы, отчеты и т.д.), т.е. проектирование приложений, которые будут сопровождать данные в базе данных, а также будут реализовывать вопрос-ответные отношения на этих данных;
- проектирование баз данных под конкретную вычислительную среду или информационную технологию ("клиент-сервер", параллельные архитектуры, распределенная вычислительная среда);
- проектирование баз данных под назначение (интеллектуальный анализ данных, OLAP, OLTP и т. д.) системы.
Отметим, что приложения работы с базой данных проектируются одновременно с базой данных, а не отдельно! Зачастую вычислительная среда задается в качестве входных условий проектирования, но иногда проектирование следует проводить с возможным переходом в будущем на другую аппаратную платформу или технологию.
Базы данных всегда проектируются под конкретное назначение системы. Техника проектирования баз данных может измениться, и не только деталях, в зависимости от назначения системы. Например, следует различать проектирование систем складирования данных от так называемых OLTP -систем. В настоящем курсе лекций пойдет речь о проектировании баз данных в основном для OLTP -систем. Именно на таких системах исторически сложилась техника проектирования реляционных баз данных.
В чем состоит задача проектирования базы данных? База данных:
- действует в рамках некоторой внешней среды;
- имеет свою внутреннюю архитектуру;
- имеет свое собственное лингвистическое содержание;
- имеет свои средства взаимодействия с окружающей средой;
- функционирует на конкретной программно-аппаратной платформе;
- поддерживается в рамках определенных организационно-технологических мероприятий.
Таким образом, база данных является сложным многокомпонентным объектом (аппаратное обеспечение, программное обеспечение, информация в виде данных и персонал), который должен быть тщательно спроектирован, чтобы обеспечить согласованное взаимодействие своих компонент согласно заданным функциональным требованиям в рамках заданных ограничений.
Если представить проектирование баз данных как некоторый процесс и обозначить его на схеме прямоугольником, то на вход этого процесса будет подан набор исходных данных, а выходе будет выведен результат, в первую очередь в виде физической базы данных, а также логическая и физическая структуры (реализованные в скрипте) базы данных.
Получение логической и физической структур базы данных и разработка скрипта для ее создания являются примерами профессиональных задач проектировщика базы данных.
В настоящем курсе лекций будут рассмотрены профессиональные основные задачи проектировщика базы данных. Методы и подходы к решению трех первых задач будут рассмотрены достаточно подробно. Эти задачи - "три кита" профессиональной работы проектировщика базы данных. При обсуждении решения других задач акцент будет сделан на обсуждении подходов и рекомендаций по их решению. Это связано с тем, что решение этих профессиональных задач проектировщика зависит от стандартов и методологии, которые используются при разработке информационных систем, принятых в организации.