2.3 Хранение документов произвольной структуры
Документ – слабо структурированный объект, но тем не менее для формализованного поиска необходимо выделять в нем некоторые структуры, общие для всех документов с тем, чтобы по этим структурам осуществлять поиск документов. Эти структуры принято называть атрибутами документов. Документы бывают разные и невозможно заранее предусмотреть для всех их состав. Все виды атрибутов, используемых в документе, заранее указать нельзя. Пойдем на компромисс между полнотой описания документа и простотой описания состава документа в терминах реляционных отношений. Попытаемся выделить и использовать основные виды атрибутов. Таковыми представляются атрибуты вида «поле документа» - содержат одно единственное значение из некоторого множества значений, которое называется доменом значения атрибутов. Такие атрибуты назовем простыми атрибутами. Можно выделить еще атрибуты вида «таблица значений». Наиболее употребительными являются таблицы, у которых столбцы имеют заголовки, а строки пронумерованы, может быть и неявно. Назовем такие атрибуты сильно множественными.
Все документы одинакового состава назовем относящимися к одному виду документов. Кроме того, с течением времени структура используемых документов будет менятся, и, хотя формально документы одного вида, структура у них будет разного. Поэтому реализуем в рамках типа документа подтипы (версии типов) документа. Состав документа необходимо описывать. Естественным кажется завести таблицы для описания атрибутов, в которых указывается, какие атрибуты принадлежат виду документов, кроме того для описания множественных атрибутов требуется таблица с описанием заголовков столбцов.
Мы пришли к тому, что состав документа у нас теперь описан, но где хранить значения атрибутов документов. Документы разных видов нельзя хранить в одной таблице, так как количество полей и домены значений атрибутов различных видов документов разнятся. Поэтому для каждого атрибута каждого вида документа необходимо создавать отдельную таблицу.
Итак, у нас имеется таблица описания типов документов DocTypes, таблица описания подтипов документов DocSubTypes. Таблица Attributes описывает все атрибуты указанного подтипа документа, если атрибут множественный, то определение его полей находится в таблице VMAttributes. Все атрибуты относятся к какому – то домену значений, домены описаны в таблице Domains.
Для хранения значений атрибутов для каждого подтипа создается таблица, имя которой формируется по правилу “ATS”+SubTypeID, где “ATS” – префикс, а SubTypeID – ID подтипа документа. Для хранения значений множественных атрибутов для каждого множественного атрибута создается таблица ATM “ATM”+AttribID, где “ATM” – префикс, а AttribID – ID множественного атрибута. Такая схема формирования имен обеспечивает уникальность.
Для лучшего понимания приведем пример.
2.3.1 Пример структуры документа
|
Рис.2.3.1.1. Пример документа.
Структура документа
Название документа
Дата(хранится в таблице Документы и среди атрибутов)
Номер(хранится в таблице Документы и среди атрибутов)
Дата регистрации
Кто зарегистрировал
ТаблицаОбъектов
Инв. №
Название
Адрес
Стоимость первоначальная
Стоимость остаточная
Износ
Домены Значений Атрибутов
DomainID | Description | Realization |
1 | Дата | Datetime |
2 | Название документа | Varchar(100) |
3 | Номер документа | Varchar(30) |
4 | Организация | Varchar(100) |
5 | Денежная сумма | Money |
6 | Инвентарный номер | Varchar(20) |
7 | Наименование объекта | Varchar(30) |
8 | Адрес | Varchar(20) |
Типы документов
TypeID | Name |
1 | Приложение к плану приватизации "Акт оценки №1 стоимости зданий, сооружений, передаточных устройств" |
Организации
OrgID | Name | Address | Telephone | INN |
1 | АО «Свердловэнерго» | NULL | NULL | NULL |
Документы
DocID | OrgID | TypeID | DocDate | DocNumber |
1 | 1 | 12.11.2000 |
Определение атрибутов
AttribID | TypeID | DomainID | TabOrder | Name | Plurality |
1 | 1 | 2 | 1 | Название | 0 |
2 | 1 | 3 | 2 | Номер | 0 |
3 | 1 | 1 | 3 | Дата | 0 |
4 | 1 | 7 | 4 | Зарегистрировано | 0 |
5 | 1 | Null | 5 | СписокОбъектов | 2 |
ATS1
DocID | FieldData |
1 | Приложение №1 к плану приватизации "Акт оценки №1 стоимости зданий, сооружений, передаточных устройств" |
1 | 1 |
1 | 12.11.2000 |
1 | Министерством по управлению госимуществом |
1 | NULL |
ОпредПолейСильноМнож
AttribID | ColumnID | DomainID | Name |
5 | 1 | 6 | Инвентарный номер |
5 | 2 | 7 | Название |
5 | 3 | 8 | Адрес |
5 | 4 | 5 | Стоимость первоначальня |
5 | 5 | 5 | Стоимость остаточная |
5 | 6 | 5 | Износ |
Номер таблицы с данными сильно множественных атрибутов формируется из префикса AVM и номера атрибута. Все атрибуты(AttribID) уникальны в пределах БД. Связь таблиц с данными атрибутов с таблицей определения атрибутов происходит через номер таблицы, который формируется как префикс ATM + AttribID. Номер поля формируется из префикса FieldDate и номера столбца.
ATM5
DocID | RowID | FieldData1 | FieldData2 | FieldData3 | FieldData4 | FieldData5 | FieldData6 |
1 | 1 | 1233 | ТП 1021 | Ул.Свердлова,7 | 111,11 | 333,33 | 222,22 |
1 | 2 | 1344 | ТП 7563 | Ул.Фурманова,45 | 222,22 | 555,55 | 333,33 |
3. Программная реализация комплекса
3.1 Серверная часть
В состав серверной части комплекса ходит:
таблиц, в которых хранятся собственно данные;
хранимых процедур, реализующих доступ к этим таблицам;
сообщениях об ошибочных ситуациях;
список пользователей и ролей.
3.1.1 Руководство программиста
При создании серверной части использовалось следующее соглашения о наименовании объектов:
Имя объекта формируется из 3 составных частей:
1 - префикс типа объекта (sp,vw,df, tr);
2 - аббревиатура модуля;
3 – действие;
3 - объект;
Например, spONIAddDomain.
Все хранимые процедуры возвращают целое число – код завершения. Если оно равно нулю, то процедура выполнилась успешно, иначе возникли ошибки. При возникновении ошибочной ситуации генерируется код ошибки и клиенту возвращается код ошибки, а также системное сообщение с данным кодом. В большинстве случаев достаточно отобразить системное сообщение.
Применение хранимых процедур также позволяет всегда поддерживать данные в согласованном состоянии, так как хранимые процедуры составлены так, что в случае возникновения ошибки отменяются все внесенные изменения.
Список хранимых процедур, их параметров и описание приведены в табл 3.1.
Таблица 3.1.
Список хранимых процедур серверной части
Хранимая процедура | Описание |
CREATE PROC spONIAddAttribute @Name varchar(100), @SubTypeID int, @TabOrder int, @DomainID int, @Plurality int, @ID int OUTPUT | Создание атрибута докуммента |
CREATE PROC spONIAddCategory @level int, @NameValue varchar(128), @FKValue int, @ID int OUTPUT | Создание новой категории при использовании универсального иерархического компонента |
CREATE PROC spONIAddDoc @SubTypeID int,@ID int OUTPUT | Создание нового документа |
CREATE PROC spONIAddDocSubType @NameValue varchar(128),@TypeID int, @ID int OUTPUT | Создание нового подтипа документа. Одновременно создаются таблицы для хранения значений атрибутов документа данного подтипа. |
CREATE PROC spONIAddDomain @Name varchar(20), @Realization varchar(20), @ID int OUTPUT | Создание нового домена значений атрибутов документа |
CREATE PROC spONIDeleteAttribute @ID int | Удаление атрибута документа |
CREATE PROC spONIDeleteCategory @level int, @ID int | Удаление категории при использовании универсального иерархического компонента |
CREATE PROC spONIDeleteDoc @ID int | Удаление документа |
CREATE PROC spONIDeleteDocSubType @ID int | Удаление подтипа документа |
CREATE PROC spONIDeleteDomain @ID int | Удаление домена значений атрибутов документа |
CREATE PROC spONIGetAttributes @ID int | Получение списка атрибутов указанного подтипа документов |
CREATE PROC spONIGetCategories @level int, @ID int | Получение значений категории указанного уровня |
CREATE PROC spONIGetDocs | Получение списка документов |
ё | Получение списка доменов значений атрибутов |
CREATE PROC spONIGetSingleAttributeValue @DocID int,@SubTypeID int, @AttribID int,@Value nvarchar(4000) output | Получение значения простого атрибута документа |
CREATE PROC spONIRenameAttribute @ID int, @TabOrder int, @DomainID int, @Name varchar(100), @Plurality int | Изменение атрибута документа |
CREATE PROC spONIRenameCategory @level int, @NameValue varchar(128), @ID int | Изменении категории при использовании универсального иерархического компонента |
CREATE PROC spONIRenameDomain @ID int,@Name varchar(20),@DomainType int, @Realization varchar(20) | Изменение домена значений атрибутов докуменат |
CREATE PROC spONIUpdateSingleAttributeValue @DocID int, @SubTypeID int, @AttribID int, @Value varchar(4000) | Изменение значения атрибута |
... об изделиях предполагается осуществить в соответствии с требованиями стандартов семейства ISO 10303 (STEP). Следует заметить, что создание электронного архива - лишь начало серьезных изменений в информационной поддержке основных производственных процессов предприятия. Ближайший этап - автоматизация коллективной работы с технологическими документами в ходе реализации производственных проектов. В ...
... документации). Представляют интерес два проекта: · электронный архив “Вирт Йозеф — канцлер Германии”, · электронный архив “Фотографии Ю.А. Гагарина”. В 1992 г. РГАНТД совместно с Российским центром хранения историко-документальных коллекций осуществил проект оцифровки документов из фонда “Вирт Йозеф — государственный канцлер Германии”. Особенности этого проекта: 1. ...
... этих стран характерен высокий статус национальных профессиональных объединений управляющих документацией, а также общественный интерес к вопросам документационного обеспечения управления. 2.1 Управление электронными документами в Австралии Деятельность архивных органов в Австралии в области нормативно-методического регулирования вопросов управления документацией в настоящее время является ...
... силы информации, записанной на машинном носителе. Единственным технически возможным способом придания доказательности “электронному документу” является использование электронной подписи. Единственное действующее в масштабе государства определение дано в ГОСТ Р 51141-98 “Делопроизводство и архивное дело. Термины и определения”, который определяет “документ на машинном носителе” как документ, ...
0 комментариев