3734 ПРЕДМЕТНО-ОРИЕНТИРОВАННЫЕ ЭКОНОМИЧЕСКИЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ - Страница 9

Лабораторная работа № 4

Перенос данных между информационными системами

 

Цель работы: изучение методов переноса данных между информационными системами, изучение механизмов работы с базами данных различных форматов.

 

1. Проблема переноса данных

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

В данной лабораторной работе мы рассмотрим две программы, разработанные Министерством РФ по налогам и сборам, – 2НДФЛ и Налогоплательщик ЮЛ и поставим задачу переноса данных между этими системами.

2. Обзор популярных форматов данных

Программные продукты, использующие базы данных для хранения, обработки и анализа информации, можно разделить на две основные категории – продукты, использующие локальные базы данных (например, в формате dBase, Microsoft Access) и продукты, построенные по технологии клиент-сервер, в которых хранилищем данных является сервер баз данных, такой как Microsoft SQL Server или Oracle.

Продукты первой категории в основном предназначены для работы с небольшими объемами данных на локальном компьютере и наиболее просты в установке, настройке и обслуживании. Напротив, для использования продуктов второй категории требуется более сложная процедура инсталляции, большие вычислительные ресурсы, но эти затраты оправдываются, если количество пользователей одной базы данных доходит до десятков и сотен.

Рассмотрим популярные форматы данных, используемые для хранения данных на локальном компьютере (в продуктах первой категории).

1. Формат dBase. База данных представляет собой директорию, содержащую файлы с расширением dbf, idx, cdx, dbt и dbc. Каждый файл dbf представляет собой одну таблицу базы данных, файлы idx и cdx – индексные файлы к таблице, файл dbt – файл MEMO (для хранения данных полей произвольной длины) а файл dbc - файл базы данных.

2. Формат FoxPro, FoxBase и Visual FoxPro. Данные СУБД используют тот же формат данных, что и dBase. Файлы MEMO имеют расширение fpt вместо dbt. Более подробно формат файлов баз данных FoxPro и dBase будет рассмотрен далее.

3. Формат Paradox. Аналогично базам данных dBase и FoxPro база данных Paradox представляет собой директорию, в которой располагаются файлы db (таблицы базы данных), файлы px (первичный ключ таблицы или индексный файл), а также другие типы файлов для хранения вторичных ключей.

4. Формат Microsoft Access. Данный формат в последнее время стал стандартом для настольных СУБД. Это связано с удобством хранения данных (вся база данных хранится в едином файле с расширением mdb), доступностью средств просмотра и модификации БД (Microsoft Access входит в поставку Microsoft Office), а также развитием программных средств доступа к базам данных (ODBC, ADO).

5. Формат MSDE 2000 (Microsoft SQL Server Desktop Edition). MSDE представляет собой бесплатно распространяемую версию Microsoft SQL Server, не имеющую графических средств работы с БД, таких как Enterprise Manager. Microsoft рекомендует использовать MSDE в своих разработках вместо баз данных в формате Microsoft Access.

Такие форматы данных, как dBase, FoxPro и Paradox являются устаревшими, но по-прежнему активно используются многими программными продуктами. Так, программа 2НДФЛ использует формат Visual FoxPro 5.0, а Налогоплательщик ЮЛ – FoxBase.

3. Взаимодействие с базой данных в формате dBase или FoxPro

База данных в формате dBase и FoxPro представляет собой директорию, содержащую файлы таблиц, файлы индексов, файлы MEMO (имеют расширение dbt для dBase и fpt для FoxPro; содержат данные полей произвольной длины). В данной директории может располагаться файл базы данных (с расширением dbc), который расширяет возможности БД dBase и FoxPro. В отличие от файлов БД Microsoft Access, этот файл не содержит в себе ни таблиц, ни индексов, а является контейнером для дополнительных данных, таких как триггеры, комментарии и т.д. В дальнейшем мы не будем рассматривать формат данного файла, а ограничимся простым вариантом – базой данных, состоящей из отдельных таблиц, индексов и файлов MEMO.

Файл таблицы представляет собой обычный плоский файл с расширением dbf. Записи в нем расположены в порядке добавления, поскольку новые записи помещаются всегда в конец файла. Для просмотра записей в порядке, отличном от обычного, для таблицы необходимо построить индекс. Индекс имеет структуру двоичного дерева, элементами которого являются ключевые значения полей таблицы и номера соответствующих записей в dbf-файле. Таким образом, при поиске или просмотре данных по индексу, из индекса берется номер записи, соответствующий конкретному значению первичного ключа таблицы, и осуществляется выборка нужной записи из dbf-файла. Если в индексе ключевые значения расположены последовательно, то соответствующие им записи в dbf - произвольно, что снижает быстродействие при доступе к файлам большого размера.

Для удаления записей применяется следующий подход - чтобы не оставлять "пустоты" в файле записей, при удалении первый байт записи принимает специальное значение, индицирующее, что запись удалена. Такие записи исключаются из просмотра и отсутствуют при просмотре таблицы обычным способом. Существуют средства, позволяющие просмотреть таблицу вместе с удаленными записями, а также восстановить их. Номера записей остаются соответствующими физическим, и, если удалена запись №5, то при просмотре подряд идут записи с номерами 4 и 6. При упаковке таблицы удаленные записи затираются записями, находящимися после них по порядку. Т.к. записи переместились (и изменились их физические порядковые номера), все индексы нужно перестроить.

Файл dbf состоит из трех основных частей – заголовка, описания полей и данных.

Формат заголовка файла dbf описан в табл. 4.1.

Таблица 4.1

Смещение в байтах от начала файла

Описание

0

Тип файла. Возможные значения (в шестнадцатеричной системе счисления):

0x02 FoxBase
0x03 FoxBase+, dBASE III PLUS без MEMO
0x30 Visual FoxPro

0x43 Файлы таблиц dBASE IV SQL без MEMO
0x63 Системные файлы dBASE IV SQL без MEMO
0x83 FoxBASE+, dBASE III PLUS, с MEMO
0x8B dBASE IV с MEMO
0xCB Файлы таблиц dBASE IV SQL, с MEMO
0xF5 FoxPro версии 2.x (или более ранней) с MEMO
0xFB FoxBASE

1...3

Дата последнего обновления (первый байт – последние две цифры года, второй – месяц, третий – день)

4...7

Число записей в файле (здесь и далее порядок байт – обратный, принятый для Intel-совместимых компью-

Окончание табл. 4.1

 

теров, т.е. младший байт числа располагается по младшему адресу/смещению)

8...9

Позиция первой записи данных (смещение с начала файла)

10...11

Длина одной записи данных (включая флаг удаления)

12...27

Зарезервировано, содержит 0x00

28

Флажки таблиц
0x01 файл содержит индекс (cdx)
0x02 файл содержит MEMO-поля
0х03 файл содержит как индекс (cdx), так и memo-поля

0x04 файл является базой данных (dbc). Формат файла базы данных мы рассматривать не будем

29

Маркер кодовой страницы

30...31

Зарезервировано, содержит 0x00

32...n

Описание полей, для каждого табличного поля имеется одна подзапись поля. Формат подзаписей поля описан далее

n+1

Признак конца заголовка таблицы (0x0D)

n+2...n+264

263-байтная область, содержащая информацию обратной связи с базой данных (относительный путь к соответствующей базе данных dbc). Если первый байт имеет значение 0x00, то данный файл не связан с базой данных. В дальнейшем мы будем рассматривать файлы, не связанные с базой данных.

Формат подзаписи поля (записи описания поля таблицы).

Таблица 4.2

Смещение в байтах от начала подзаписи поля

Описание

0...10

Имя поля в кодировке OEM

11

Тип поля:

“C” – текстовое поле в кодировке OEM

“D” – дата (8 цифр в формате YYYYMMDD)

“F”,“N” – число (допустимые символы – “-“, “.”, цифры)

Окончание табл. 4.2

 

“L” – логический (допустимые символы – “?”, “Y”, “y”, “N”, “n”, “T”, “t”, “F”, “f” (значение “?” – значение не инициализировано)

“M” – поле типа MEMO (поле содержит номер блока в файле MEMO)

12...15

Расположение поля внутри записи

16

Размер поля (значение записывается в бинарном формате)

17

Порядковый номер поля (в бинарном формате)

18...19

Зарезервировано

20

Идентификатор рабочей области

21...22

Зарезервировано

23

Флаг установки поля

24...31

Зарезервированная область

За заголовком файла и подзаписями описания полей располагаются данные. Каждой записи предшествует байт, указывающий на удаленность записи: значение 0x20 (пробел) указывает, что запись не была удалена, а значение 0x2A (звездочка) – запись была удалена. Поля записей и сами записи следуют одна за другой без разделителя. В конце файла располагается единственный байт-терминатор, содержащий значение 0x1A. Формат каждой записи соответствует описанию полей таблицы (т.е. каждая запись содержит все поля таблицы в том порядке, в котором они были указаны в заголовке).

Файл MEMO (имеет то же имя, что и соответствующий файл таблицы и расширение dbt или fpt) содержит  одну  запись  заголовка   и произвольное  число  блочных  структур.  В  записи заголовка располагается указатель на следующий свободный блок и размер блока  в   байтах. Запись заголовка начинается  с нулевой позиции файла и занимает 512 байтов. За  записью   заголовка  следуют   блоки,  в    которых содержатся заголовок блока и текст memo. В файл таблицы включены номера блоков,  которые используются для  ссылки на блоки   MEMO.   Расположение   блока   в   файле  типа  MEMO определяется  умножением  номера   блока  на  размер   блока (находящийся в записи заголовка файла типа MEMO). Все  блоки MEMO начинаются  с четных  адресов границ  блоков. Блок MEMO может занимать более чем один последовательный блок.