Аникин Александр Николаевич Разработка системы автоматизации процесса документирования объектов бд под управлением ms sql server диплом
Вид материала | Диплом |
- Программа курса: Модуль Краткий обзор sql server Что такое сервер sql server Интегрирование, 35.73kb.
- Задачи курса Основы языка sql (и его расширения, t-sql, используемого sql server 2000), 22.95kb.
- Установка sql express 2005, 24.56kb.
- Курс 2778. Создание запросов на языке Microsoft sql server 2005 Transact-sql. Курс, 16.57kb.
- Установка ms sql server 2008, 29.37kb.
- Сервер баз данных, 379.17kb.
- Курс также готовит к успешной сдаче экзамена 70-433: ts: Microsoft sql server 2008, 217.32kb.
- Данный курс позволит приобрести знания и навыки, необходимые для поддержки бд microsoft, 77.04kb.
- Server Reporting Services Алексей Шуленин, Microsoft обзор Microsoft ® sql server™, 646.29kb.
- Переход на Microsoft sql server Express 2008, 200.06kb.
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Институт математики и компьютерных наук
Кафедра информационной безопасности
Допустить к защите в ГАК
Заведующий кафедрой
информационной безопасности,
д.т.н., профессор А.А. Захаров
“____” _________ 2010 г.
Аникин Александр Николаевич
Разработка системы автоматизации процесса документирования объектов БД под управлением MS SQL Server
(Дипломная работа)
Научный руководитель:
к.т.н., доцент
__________ Оленников Е.А.
Автор работы:
__________ Аникин А.Н.
Тюмень – 2010
Содержание
Введение 4
Глава 1 Обзор коллекции системных таблиц MS SQL Server 2005, предоставляющих метаданные об объектах баз данных. 6
Глава 2. Разработка базы данных для хранения информации об объектах документируемой базы данных. 21
Глава 3. Разработка программного обеспечения для автоматизации процесса документирования объектов базы данных. 35
Заключение. 37
Список используемой литературы: 38
39
Приложение 1. ER модель реестра объектов БД. 39
39
Приложение 2. Интерфейс приложения 40
Введение
Базы данных современных ИС как правило состоят из большого количества взаимосвязанных таблиц, представлений, хранимых процедур и других объектов.
Количество объектов БД может увеличиваться с развитием ИС. В этой ситуации важное значение имеет своевременное и полное документирование.
Очевидно, что отсутствие грамотно составленной документации БД негативно влияет на:
- Дальнейшее развитие БД.
- Сопровождение БД.
- Безопасность данных.
На практике, документированию объектов базы данных не всегда уделяется должное внимание. Документирование не ведется или ведется не полностью (не регулярно). Особенно когда разрабатывается большой проект, принимают участие много разработчиков, отпущены минимальные сроки.
Чем позднее приступают к документированию, тем больше объектов приходится описывать, вспоминать, для чего нужны объекты, причем очень много времени требуется выполнение рутинных операций. Даже простое перечисление объектов и характеристик может занимать много времени.
Полностью автоматизировать процесс документирования, невозможно. Однако существуют программы которые могут помочь составить грамотную документацию.
Например, программа ERwin для проектирования и документирования баз данных, позволяет создавать, документировать и сопровождать базы данных, хранилища и витрины данных.
ER-Studio, инструментарий, предназначенный для работы с моделями данных и их анализа на логическом и физическом уровне. Он предназначен для проектирования, создания и сопровождения баз данных.
Перечисленные средства не в полной мере позволяют решить задачу документирования объектов БД.
Поэтому, актуальной задачей является разработка инструмента, помогающего максимально облегчить работу по документированию БД.
Цель дипломной работы. Разработка системы автоматизации процесса документирования объектов БД под управлением MS SQL Server.
Задачи:
- Разработка структуры БД для хранения информации об объектах документируемой БД.
- Разработка ПО для облегчения процесса документирования объектов БД.
Глава 1 Обзор коллекции системных таблиц MS SQL Server 2005, предоставляющих метаданные об объектах баз данных.
Microsoft SQL Server 2005 – комплексная платформа баз данных, обеспечивающая управление данными в масштабе предприятия и оснащенная интегрированными средствами управления интеллектуальными ресурсами предприятия (BI). Ядро СУБД SQL Server 2005 обеспечивает более безопасное и надежное хранение реляционных и структурированных данных, позволяя создавать и обслуживать высокопроизводительные приложения обработки данных класса предприятия.
Важным преимуществом Microsoft SQL Server 2005 является тесная интеграция с Microsoft Visual Studio, Microsoft Office System.
1.1 Системные базы данных MS SQL Server 2005
Вся информация об объектах баз данных MS SQL Server 2005 хранится в системных базах данных. В состав SQL Server 2005 входят следующие системные базы данных:
Таблица 1.1 Системные базы данных
Системная база данных | Описание |
master | В этой базе данных хранятся все данные системного уровня для экземпляра SQL Server. |
msdb | Используется агентом SQL Server для планирования предупреждений и задач. |
model | Используется в качестве шаблона для всех баз данных, создаваемых в экземпляре SQL Server. Изменение размера, параметров сортировки, модели восстановления и других параметров базы данных model приводит к изменению соответствующих параметров всех баз данных, создаваемых после изменения. |
resource | База данных только для чтения. Содержит системные объекты, которые входят в состав SQL Server 2005. Системные объекты физически хранятся в базе данных Resource, но логически отображаются в схеме sys любой базы данных. |
tempdb | Рабочее пространство для временных объектов или взаимодействия результирующих наборов. |
1.1.1 Системная база данных Resource.
В отличие от других системных баз данных, база данных ресурсов предназначена только для чтения и содержит копии всех системных объектов в пользовательских базах данных. Системные объекты SQL Server, такие как sys.objects, физически расположены в базе данных Resource, а логически отображаются для каждой базы данных в схеме sys. База данных Resource не содержит ни пользовательских данных, ни метаданных. Именно запросы к это базе данных возвращают информацию об объектах исследуемой БД.
Логическая структура базы данных определяет структуру таблиц, хранимые процедуры, взаимоотношения между таблицами, список пользователей, правила, представления и другие объекты базы данных. Основными объектами в БД, являются объекты, представленные в таблице.
Таблица 1.2. Основные объекты базы данных MS SQL Server 2005
Имя объекта | Описание |
Tables | Таблицы базы данных, в которых хранятся данные |
Stored Procedures | Хранимые процедуры |
Views | Представления (виртуальные таблицы) для частичного или полного отображения данных из таблиц |
Keys | Ключи – один из видов ограничений целостности данных |
Constraints | Ограничение целостности – объекты для обеспечения логической целостности данных |
Indexes | Индексы – дополнительные структуры, призванные повысить производительность работы с данными |
Users | Пользователи, обладающие доступом к базе данных |
Roles | Роли, позволяющие объединять пользователей в группы |
Информацию об объектах базы данных можно получить из системных таблиц, которые находятся в системной базе данных.
1.2. Обзор коллекции системных представлений Microsoft SQL Server, содержащие метаданные объектов БД.
Microsoft SQL Server 2005 предоставляет следующие коллекции системных представлений, содержащие метаданные:
- Представления каталога. Возвращают данные об объектах БД.
- Представления информационной схемы. Являются одним из способов получения метаданных об объектах.
- Представления репликации. Эти представления содержат сведения, которые используются репликацией в Microsoft SQL Server.
- Динамические административные представления и функции. Динамические административные представления и функции возвращают данные о состоянии сервера.
- Представления служб Notification Services. Представления предоставляют объединенный просмотр данных приложения и экземпляра.
Все приведенные выше системные представления предоставляют максимум информации об объектах пользовательской БД. Рассмотрим подробнее некоторые из представлений которые наиболее подходят для решения поставленных задач.
1.2.1. Представления каталога (Transact-SQL)
Представления каталога возвращают данные, которые используются компонентом Microsoft SQL Server. Рекомендуется, чтобы использовались представления каталога, потому что они имеют наиболее универсальный интерфейс к метаданным каталога и предоставляют наиболее эффективный способ для получения, преобразования и представления настроенных форм этих данных. Все доступные для пользователя метаданные каталога предоставляются через представления каталога.
Некоторые представления каталога наследуют строки других представлений каталога. Например, представление каталога таблицы наследует от представления каталога объекты. Это означает, что представление каталога таблицы имеет столбцы, которые являются определенными для таблиц, а также все столбцы, которые принадлежат представлению каталога объекты.
1.2.2. Представления каталога объектов
В этом разделе содержатся следующие представления каталога:
- sys.columns - Возвращает строку для каждого столбца объекта, имеющего столбцы, например, представления или таблицы.
Таблица 1.3. Структура представления sys.columns
Имя столбца | Тип данных | Описание |
object_id | int | Идентификатор таблицы или представления, которому принадлежит этот столбец. |
name | sysname | Имя столбца. Уникально в рамках одной таблицы или представления. |
column_id | int | Идентификатор столбца. Уникален в рамках одной таблицы или представления. |
user_type_id | int | Идентификатор типа столбца, определенного пользователем. |
max_length | smallint | Максимальная длина столбца (в байтах). |
is_nullable | bit | Разрешить в столбце значения NULL. |
is_identity. | bit | столбец содержит значения identity. |
is_computed | bit | столбец является вычисляемым. |
- sys.check_constraints - Содержит по одной строке для каждого объекта, являющегося ограничением CHECK.
Таблица 1.4. Структура представления sys.check_constraints
Имя столбца | Тип данных | Описание |
object_id | int | Идентификатор ограничения. |
name | sysname | Имя столбца. Уникально в рамках одной таблицы или представления. |
parent_object_id | int | Идентификатор таблицы, которой принадлежит ограничение. |
type_desc | nvarchar(60) | Описание типа ограничения. |
create_date | datatime | Дата создания. |
modify_date | datatime | Дата изменения. |
definition | nvarchar(max) | Выражение SQL, определяющее данное значение по умолчанию. |
- sys.foreign_keys - Содержит по одной строке для каждого объекта, являющегося ограничением внешнего ключа.
Таблица 1.5 Структура представления sys.foreign_keys
Имя столбца | Тип данных | Описание |
object_id | int | Идентификатор внешнего ключа. |
name | sysname | Имя столбца. Уникально в рамках одной таблицы или представления. |
parent_object_id | int | Идентификатор таблицы, которой принадлежит внешний ключ. |
type_desc | nvarchar(60) | Описание типа ключа. |
create_date | datatime | Дата создания. |
modify_date | datatime | Дата изменения. |
referenced_object_id | int | Идентификатор таблицы с которым осуществляется связь по данном внешнему ключу |
- sys.indexes - Содержит строку для каждого индекса, такого как таблица, представление или возвращающая табличное значение функция.
Таблица 1.6 Структура представления sys.indexes
Имя столбца | Тип данных | Описание |
object_id | int | Идентификатор объекта, которому принадлежит данный индекс. |
name | sysname | Имя индекса. Значение name уникально только в пределах объекта. |
index_id | int | Идентификатор индекса. Значение уникально только в пределах объекта. |
type_desc | nvarchar(60) | Описание типа индекса. |
- sys.objects – отображает все системные объекты.
Таблица 1.7. Структура представления sys.objects
Имя столбца | Тип данных | Описание |
name | sysname | Имя объекта. |
object_id | int | Идентификационный номер объекта. Уникален в пределах базы данных. |
create_date | datetime | Дата создания объекта. |
modify_date | datetime | Дата последней модификации объекта с помощью инструкции ALTER. Если объект является таблицей или представлением, то столбец modify_date также изменяется при создании или изменении кластеризованного индекса таблицы или представления. |
- sys.procedures - Содержит по строке для каждого объекта, являющегося процедурой какого-либо рода и определенного с типом sys.objects.type = P, X, RF или PC.
Таблица 1.8. Структура представления sys.procedures
Имя столбца | Тип данных | Описание |
object_id | int | Идентификационный номер процедуры. |
name | sysname | Имя процедуры. |
create_date | datetime | Дата создания процедуры. |
modify_date | datetime | Дата последней модификации. |
type_desc | nvarchar(60) | Описание типа процедуры. |
- sys.tables - Возвращает по строке для каждого объекта таблицы, на данный момент только с типом sys.objects.type = U.
Таблица 1.8 Структура представления sys.tables
Имя столбца | Тип данных | Описание |
object_id | int | Идентификационный номер процедуры. |
name | sysname | Имя процедуры. |
create_date | datetime | Дата создания процедуры. |
modify_date | datetime | Дата последней модификации. |
type_desc | nvarchar(60) | Описание типа таблицы. |
- sys.views - Содержит одну строку для каждого объекта представления со значением sys.objects.type = V.
Таблица 1.9 Структура представления sys.views
Имя столбца | Тип данных | Описание |
object_id | int | Идентификационный номер представления. |
name | sysname | Имя представления. |
create_date | datetime | Дата создания представления. |
modify_date | datetime | Дата последней модификации. |
type_desc | nvarchar(60) | Описание типа представления. |
- sys.triggers - Содержит по одной строке для каждого объекта, являющегося триггером типа TR или TA. Имена триггеров DML существуют в пределах схемы и, следовательно, видимы в представлении
Таблица 1.10 Структура представления sys.triggers
Имя столбца | Тип данных | Описание |
object_id | int | Идентификатор триггера. |
name | sysname | Имя триггера. Уникально в пределах базы данных. |
parent_object_id | int | Идентификатор родителя триггера. |
parent_class | tinyint | Класс родителя триггера. |
create_date | datatime | Дата создания. |
modify_date | datatime | Дата изменения. |
- sys.default_constraints - Содержит строку для каждого объекта, являющегося определением по умолчанию (созданного как часть инструкции CREATE TABLE или ALTER TABLE.
Таблица 1.11. Структура представления sys.default_constraints
Имя столбца | Тип данных | Описание |
object_id | int | Идентификатор ограничения. |
name | sysname | Имя столбца. Уникально в рамках одной таблицы или представления. |
parent_object_id | int | Идентификатор таблицы, которой принадлежит ограничение. |
type_desc | nvarchar(60) | Описание типа ограничения. |
create_date | datatime | Дата создания. |
modify_date | datatime | Дата изменения. |
definition | nvarchar(max) | Выражение SQL, определяющее данное значение по умолчанию. |
1.2.3 Представление каталога sys.extended_properties
Расширенные свойства могут отображаться путем запроса по представлению каталога sys.extended_properties. В данном представлении предусмотрен простой метод возврата значений расширенных свойств, а для возврата дополнительных данных, например имен или типов объектов, связанных с расширенным свойством, данное представление может быть соединено с другими представлениями каталога. Запросы к представлению каталога sys.extended_properties возвращают описание объектов базы данных.
Таблица 1.12. Структура представления sys.extended_properties
Имя столбца | Тип данных | Описание |
class | tinyint | Идентифицирует класс объекта, для которого определено свойство. |
class_desc | nvarchar(60) | Описание класса объекта, для которого определено расширенное свойство. |
major_id | int | Идентификатор объекта, для которого определено расширенное свойство, интерпретируемый в соответствии с его классом. |
minor_id | int | Вторичный идентификатор элемента, для которого определено расширенное свойство, интерпретируемый в соответствии с его классом |
name | sysname | Имя свойства, уникальное в пределах class, major_id и minor_id. |
value | sql_variant | Значение расширенного свойства. |
1. 3 Архитектура клиент/сервер
Клиент-серверная система характеризуется наличием двух взаимодействующих самостоятельных процессов - клиента и сервера.По такой схеме строятся системы обработки данных на основе СУБД, почтовые и другие системы.
В клиент-серверной системе функционируют (как минимум) два приложения - клиент и сервер. Хранением и непосредственным манипулированием данными занимается сервер баз данных, такой как Microsoft SQL Server.
Формирование пользовательского интерфейса возлагается на клиента. Логика обработки данных может выполняться как на клиенте, так и на сервере. Клиент посылает на сервер запросы, сформулированные, как правило, на языке SQL. Сервер обрабатывает эти запросы и передает клиенту результат.
Таким образом, непосредственным манипулированием данными занимается один процесс. При этом, обработка данных происходит там же, где данные хранятся - на сервере, что исключает необходимость передачи больших объемов данных между сервером и клиентом.
1.4 ADO.NET как базовый объект доступа к базам данных
ADO.NET — новый этап в технологии ActiveX Data Objects (ADO, объекты
данных ActiveX). Если раньше в ADO упор делался на по-
стоянное соединение с базой данных, то в технологии использования
ADO.NET изначально заложена возможность работы приложения в состоя-
нии "разрыва" соединения с базой данных. В ADO.NET обеспечивается
возможность работы со всеми совместимыми с OLE DB источниками дан-
ных как в локальных сетях в рамках традиционных Windows-приложений,
так и в глобальных сетях (Интернет) в рамках Web-приложений.
1.4.1. Структура компонента доступа к данным ADO.NET
Большинство приложений, которые создаются для конечных пользователей, обеспечивают обработку информации, хранящейся в базах. С точки зрения разработчика желательно иметь единый механизм и единый набор объектов, обеспечивающих доступ к данным, независимо от масштабности решаемой задачи. В технологии Microsoft .NET создана достаточна гибкая и эффективная модель доступа к данным — ADO.NET, предоставляющая раз- работчикам набор объектов, на основе которых можно создавать приложения любого масштаба (от локальных до глобальных).
При разработке приложения с использованием ADO.NET существует несколько разных стратегий обработки данных. В некоторых случаях требуется просто отобразить в форме определенную информацию, хранящуюся на сервере локальной сети, в других случаях нужно обеспечить возможность изменения данных хранящихся на сервере.
Независимо оттого, что будет происходить с данными, есть определенные фундаментальные понятия, обеспечивающие доступ к данным через компонент ADO.NET. В данном разделе дается общий обзор наиболее важных понятий.
1.4.2. Работа в отрыве от источника данных
В традиционных системах клиент-сервер при запуске приложения пользователем автоматически устанавливается связь с базой данных, которая поддерживается в "активном" состоянии до тех пор, пока приложение не будет закрыто.
Такой метод работы с данными становится непрактичным, поскольку подобные приложения трудно масштабируются. Каждое открываемое соединение с базой данных "потребляет" достаточно много системных ресурсов сервера, они становятся занятыми поддержкой и обслуживанием открытых соединений, их не остается на процессы непосредственной обработки данных.
По этой причине, в ADO.NET используется модель работы пользователя в отрыве от источника данных. Приложения подключаются к базе данных только на небольшой промежуток времени. Соединение устанавливается только тогда, когда клиент запрашивает на сервере данные. После того, как сервер подготовил необходимый набор данных, сформировал и отправил их клиенту, связь приложения с сервером сразу же обрывается, и клиент просматривает полученную информацию уже не в связи с сервером.
В объектной модели ADO.NET можно выделяется несколько уровней.
Уровень данных. Это по сути дела базовый уровень, на котором располагаются сами данные (например, таблицы базы данных MS SQL Server). На данном уровне обеспечивается физическое хранение информации манипуляция с данными на уровне исходных таблиц (выборка, сортировка, добавление, удаление, обновление и т. п.).
Уровень бизнес-логики. Это набор объектов, определяющих, с какой базой данных предстоит установить связь и какие действия необходимо будет выполнить с содержащейся в ней информацией. Для установления связи с базами данных используется объект DataConnection. Для хранения команд, выполняющих какие либо действия над данными, используется объект DataAdapter. И, наконец, если выполнялся процесс выборки информации из базы данных, для хранения результатов выборки используется объект DataSet. Объект DataSet, по сути дела, представляет собой набор данных, "вырезанных" из таблиц основного хранилища, который может быть передан любой программе-клиенту, способной либо отобразить эту информацию конечному пользователю, либо выполнить какие-либо манипуляции с полученными данными.
Уровень приложения. Это набор объектов, позволяющих хранить и отображать данные на компьютере конечного пользователя. Для хранения информации используется уже знакомый нам объект DataSet, а для отображения данных имеется довольно большой набор элементов управления (DataGrid, TextBox, ComboBox, Label и т. д.). В Visual Studio .Net можно вести разработку двух типов приложений. В первую очередь это традиционные Windows-приложения (на основе Windows-форм), которые реализованы в виде ехе-файлов, запускаемых на компьютере пользователя.
1.4.3. Взаимодействие с базой данных через команды
В ADO.NET для манипуляции с данными могут использоваться команды, реализованные в виде SQL-запросов или хранимых процедур (DataCommand). Если в команде содержался SQL-запрос на выборку SELECT, то команда может вернуть набор данных. Вы можете выбрать из базы данных только определенные строки и колонки, используя объект DataReader, который работает достаточно быстро, поскольку использует курсоры read-only, forward-only. Команды работы с данными могут содержать параметры, т. е. могут использоваться параметризированные запросы. Значения параметров могут задаваться динамически, во время выполнения приложения.
1.4.4. Взаимодействие с базой данных через объект DataSet
Как правило, в приложениях необходимо извлечь информацию из базы данных и выполнить с ней некоторые действия: показать пользователю на экране монитора, сделать нужные расчеты или послать данные в другой компонент. Очень часто, в приложении нужно обработать не одну запись, а их набор. Как правило, в приложениях требуется одновременная работа с набором
связанных данных. DataSet – это набор данных, который представляет собой своеобразный кэш записей, извлеченных из базового источника. DataSet может состоять из одной или более таблиц, он имеет дело с копиями таблиц из базы данных источника. Кроме того, в данном объекте могут содержаться связи между таблицами и некоторые ограничения на выбираемые данные.
Данные в DataSet — это некий уменьшенный вариант основной базы дан ных. Поскольку каждый пользователь манипулирует с полученной порцией информации, оставаясь отсоединенными от основной базы данных, последняя может в это время решать другие задачи.
Важно отметить то, что DataSet — пассивный контейнер для данных, который обеспечивает только их хранение. Что же нужно поместить в этот контейнер, определяется в другом объекте — адаптере данных DataAdapter. В адаптере данных содержатся одна или более команд, которые определяют, какую информацию нужно поместить в таблицы объекта DataSet, по каким правилам нужно синхронизировать информацию в конкретной таблице DataSet и соответствующей таблицей основной
базы данных и т. п. Адаптер данных обычно содержит четыре команды SELECT, INSERT, UPDATE, DELETE для выборки, добавления, корректировкии удаления записей.
1.4.5. Независимость набора данных DataSet от источника данных
Несмотря на то, что DataSet является фрагментом (кэшем) базы данных, он не имеет постоянной фактической связи с первоисточником. Объект DataSet — это контейнер, заполняемый информацией другим объектом — адаптером , данных - DataAdapter, который взаимодействует с первоисточником через SQL-запросы или хранимые процедуры. Один объект DataSet может взаимодействовать с несколькими объектами DataAdapter, каждый из которых обеспечивает наполнение данными таблиц контейнера.
Поскольку объект DataSet непосредственно не связан с источником данных, существует хорошая предпосылка для интеграции (объединения) данных, которые поступают из разных источников. Как только данные поступят в контейнер DataSet, пользователь может работать с ними как с единым информационным массивом, используя свойства и методы одного объекта, и абсолютно независимо от оригинального источника данных.