-серверных систем используемых небольшим количеством пользователей.

Работа добавлена: 2018-07-04






Практическая работа №1

Изучение формата баз данныхVisualFoxPro

VisualFoxPro представляет собой среду разработки информационных систем, ориентированных на использование баз данных. Основное назначениеVFP – разработка компактных файл-серверных систем, используемых небольшим количеством пользователей. Однако, функциональностьVFP достаточно гибка и развита для разработки клиентского обеспечения систем, основанных на использованииSQL-серверов.

К достоинствамVFP можно отнести и наглядность процесса создания базы данных.

Любая таблица базы данных состоит из записей одинаковой длины. Это позволяет при перемещении по содержимому файла однозначно позиционироваться наN-ю запись, сместившись наN*Size байт. Каждая таблица вVFP храниться в файле форматаDBF (расширение *.dbf). Этот формат первоначально появился в СУБДdBase и пережил ряд усовершенствований. Формат является открытым. Его отличает простота и удобство использования в целях изучения общих принципов построения баз данных и организации метаданных в них.

Для хранения размера записиSize, общего количества записей, а также прочей служебной информации предназначена заголовочная часть файлаDBF. За этим заголовком должны следовать описания полей БД. Очевидно, что количество полей может быть различным. Это означает, что и размер блока описания полей нефиксирован. Поэтому в заголовке хранится смещение первой записи данных от начала файла.

Общая структура файлаDBF представлена в таблице 1. Структура 32-байтового заголовка представлена в таблице 2. В таблице 3 приведены обозначения кодовых страниц. После заголовка таблицы следует цепочка 32-байтовых описаний полей (таблица 4). Смещение поля относительно начала записи указано в 12-15-м байтах. Тип и размер поля указываются в 11-м и 16-м байтах (см. также таблицу 5).

Таблица 1 – Общая структура файлаDBF

Кол-во байт

Наименование

32

Заголовок DBF-файла

32

Описание первого поля

32

Описание второго поля

...

...

32

Описание n-го поля

1

Завершающий символ 0x0D (13)

RecordSize

Первая запись из n-полей

RecordSize

Вторая запись из n-полей

...

...

RecordSize

m-я запись из n-полей, где m=RecordsCount

1

Завершающий символ 0x1A (26)

Таблица 2 – Структура заголовка файлаDBF

№ байта

Размер

Значение

Описание

Используется

00

1

0x03(3)

простая таблица

FS, D3, D4, D5, Fb, Fp, CL

0x04(4)

простая таблица

D4, D5 (FS)

0x05(5)

простая таблица

D5, Fp (FS)

0x30(48)

Visual FoxPro

Fp

0x31(49)

Visual FoxPro (поддержка автоинкремента)

Fp

0x43(67)

с мемо-полем .dbv

FS

0xB3(179)

с мемо-полями .dbv .dbt

FS

0x83(131)

с мемо-полем .dbt

FS, D3, D4, D5, Fb, Fp, CL

0x8B(139)

с мемо-полем .dbt формат D4

D4, D5

0x8E(142)

SQL-таблица

D4, D5

0xF5(245)

с мемо полем .fmp

Fp

01

1

YY

Год последнего обновления таблицы

Все

02

1

MM

Месяц последнего обновления таблицы

Все

03

1

DD

День последнего обновления таблицы

Все

04

4

RecordsCount

Количество записей в таблице

Все

08

2

HeaderSize

Размер заголовка в байтах

Все

10

2

RecordSize

Размер записи в байтах

Все

12

2

0x00,0x00

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

Все

14

1

0x01

Начало транзакции

D4, D5

0x00

Конец транзакции

D4, D5

0x00

Игнорируется

FS, D3, Fb, Fp, CL

15

1

0x01

Закодировано

D4, D5

0x00

Нормальная видимость

Все

16

12

0x00

Многопользовательский режим не используется

D4, D5

0x01

Использование многопользовательского окружения

D4, D5

28

1

0x02

Содержит Memo поля

?

0x01

Используется индекс

Fp, D4, D5

0x00

Индекс не используется

Все

29

1

ID

Номер драйвера языка (см. Таблицу 3)

D3, D4, D5

0x01(1)

кодовая страница 437 DOS USA

Fp

0x02(2)

кодовая страница 850 DOS Multilang

Fp

0x26(38)

кодовая страница 866 DOS Russian

Fp

0x57(87)

кодовая страница 1251 Windows ANSI

Fp

0xC8(200)

кодовая страница 1250 Windows EE

Fp

0x00(0)

игнорируется

FS, D3, Fb, Fp, CL

30

2

0x00,0x00

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

Все

Сокращения: FS = FlagShip Fb = FoxBase Fp = FoxPro CL = Clipper D3 = dBaseIII+ D4 = dBaseIV D5 = dBaseV

Таблица 3 – Обозначения кодовых страниц

Hex ID

Описание

Используется

0x00

OEM

D3, D4, D5

0x01

Codepage_437_US_MSDOS

D3, D4, D5

0x02

Codepage_850_International_MSDOS

D3, D4, D5

0x03

Codepage_1252_Windows_ANSI

D3, D4, D5

0x57

ANSI

D3, D4, D5

0x64

Codepage_852_EasernEuropean_MSDOS

D3, D4, D5

0x65

Codepage_866_Russian_MSDOS

D3, D4, D5

0x66

Codepage_865_Nordic_MSDOS

D3, D4, D5

0x67

Codepage_861_Icelandic_MSDOS

D3, D4, D5

0x6A

Codepage_737_Greek_MSDOS

D3, D4, D5

0x6B

Codepage_857_Turkish_MSDOS

D3, D4, D5

0x78

Codepage_950_Chinese_Windows

D3, D4, D5

0x7A

Codepage_936_Chinese_Windows

D3, D4, D5

0x7B

Codepage_932_Japanese_Windows

D3, D4, D5

0x7D

Codepage_1255_Hebrew_Windows

D3, D4, D5

0x7E

Codepage_1256_Arabic_Windows

D3, D4, D5

0xC8

Codepage_1250_Eastern_European_Windows

D3, D4, D5

0xC9

Codepage_1251_Russian_Windows

D3, D4, D5

0xCA

Codepage_1254_Turkish_Windows

D3, D4, D5

0xCB

Codepage_1253_Greek_Windows

D3, D4, D5

Таблица 4 – Структура описания поля

№ байта

Размер

Значение

Описание

Используется

00

11

ASCII

Имя поля с 0x00 завершением

Все

11

1

ASCII

Тип поля (см. Таблицу 5)

Все

12

4

n,n,n,n

Адрес поля в памяти

D3

0,0,n,n

Смещение относительно начала записи

Fp

0,0,0,0

Игнорируется

FS, D4, D5, Fb, CL

16

1

Byte

Размер поля (см. Таблицу 5)

Все

17

1

Byte

Количество знаков после запятой

Все

18

2

0,0

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

Все

20

1

Byte

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

D4,D5

0x00

Не используется

FS, D3, Fb, Fp, CL

21

2

n,n

Многопользовательский dBase

D3, D4, D5

0,0

Игнорируется

FS Fb, Fp, CL

23

1

0x01

Установленные поля

D3, D4, D5

0x00

Игнорируется

FS Fb, Fp, CL

24

7

0..0

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

Все

31

1

0x01

Поле включено в .mdx индекс

D4, D5

0x00

Игнорируется

D3, FS, Fb, Fp, CL

Таблица 5 – Типы и размеры полей

Код

Размер

Тип

Описание/Размер

Используется

C

1..n

Char

n ASCII символов

Все

пустые места - пробел 0x20(32)

Все

n = 1..64Kbt

FS

n = 1..32Kbt

Fp, CL

n = 1..254

Все

D

8

Date

8 ASCII знаков (0..9) в формате YYYYMMDD

Все

F

1..n

Float

ASCII символы(-.0123456789) переменная позиция плавающей точки n = 1..20

FS, D4, D5, Fp

N

1..n

Numeric

ASCII символы (-.0123456789) фиксированная позиция точки

Все

n = 1..20

FS, Fp, CL

n = 1..18

D3, D4, D5, Fb

L

1

Logical

ASCII символы (Yy Tt Nn Ff, пробел - не определено)

FS, D3, Fb, Fp, CL

M

10

Memo

10 цифр, определяющих начало блока данных в .dbt-файле или 10 пробелов, если поле мемо пусто

Все

V

10

Variable

Переменная Bin/ASCII данных в .dbv-файле

1 Bin байт - зарезервировано 0x1A(26) || FS

P

10

Picture

Binary данные в .ftp-файле структура такая же как и в Memo-типе

Fp

B

10

Binary

Binary данные в .dpt-файле структура такая же как и в Memo-типе

D5

G

10

General

OLE-объекты структура такая же как и в Memo-типе

D5, Fp

2

2

short int

Binary int max +/- 32767

FS

4

4

long int

Binary int max +/- 2147483647

FS

8

8

double

Binary signed double IEEE

FS

Таблица 6 – Структура записи

№ байта

Размер

Описание

Используется

0

1

Флаг удаления "*", иначе - пробел

Все

1

1..n

Различные типы полей фиксированной длины без завершающих символов длина поля n определяется в 16 байте структуры описания поля

Все

Индексные файлы (форматовIDX,CDX,MDX) используются для хранения служебной информации о порядке следования значений некоторых полей в записях. Использование этой информации позволяет встроенным механизмам СУБД повысить эффективность обработки запросов.

База данных всегда представляет собой совокупность таблиц. Каждая из таблиц представляет собой файлDBF, структура которого описана выше. Общая информация о совместном использовании файлов таблиц может быть «зашита» в программе. ОднакоVFP позволяет использовать для хранения этих метаданных специальный файл форматаDBC. Это означает, что в файлеDBC хранятся описания связей между таблицами, а также некоторая дополнительная метаинформация (смысловые имена таблиц, полей и т.п.).

При этом на практике база данных выглядит как набор из одного файлаDBC, и множества парDBF-CDX.

Остановимся кратко на вопросе использования индексов для связывания таблиц. Индекс, используемый для уникальной идентификации записи в таблице, называется первичным (Primarykey). На запись таблицы, используя значение ее первичного ключа, могут ссылаться несколько записей другой таблицы. При этом первая таблица играет роль главной (Master), а вторая – подчиненной (Slave).

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

Формат таблицыDBF

1. ЗапуститьVisualFoxPro (ярлык на рабочем столе). Приблизительный вид рабочего окнаVisualFoxPro показан на рисунке 1.

Рисунок 1. Рабочееокно Visual FoxPro

2. Создание файла таблицы выполняется при помощи команды менюFileNew. Для создания отдельной таблицы в окнеNew необходимо выбрать пунктTable (рисунок 2). Создание таблицы выполняется при помощи кнопкиNewfile (неWizard). После нажатия кнопкиNew предлагается ввести имя создаваемого файла в диалоге (рисунок 3). Все файлы создавать в папке, названной по наименованию своей группы и размещаемой в папкеAIS на дискеD:. При отсутствии указанной папки создать ее самостоятельно.

3. В диалоге редактирования структуры таблицы (дизайнера) необходимо сформировать структуру (рисунок 4) в соответствии с вариантом задания (см. ниже). Каждой строкой таблицы, расположенной в центральной части закладкиFields, описывается поле (колонка) формируемой таблицы. Для каждого поля указываются реквизиты:Name – имя поля,Type – тип данных поля,Width – размер (количество символов),Decimal – количество десятичных знаков,Index – наличие простого индекса. Пример формирования структуры таблицы платежных ведомостей приведен на рисунке 5.

Рисунок 2. ОкноNew

Рисунок 3. Окно ввода имени создаваемого файла

Рисунок 4. Окно дизайнера таблицы

Рисунок 5. Пример формирования структуры таблицы

4. После создания структуры таблицы возможно редактирование данных в ней. Для открытия таблицы в табличном режиме необходимо воспользоваться командой менюViewBrowse. Для перевода таблицы в режим редактирования и добавления строк необходимо воспользоваться командой менюViewAppend mode.Наберите данные в количестве 3-5 строк (рисунок 6).

Рисунок 6. Пример формирования данных таблицы

5. Открыть папку с созданной таблицей при помощи файлового менеджераTotalCommander. Убедиться в том, что файл с указанным именем и расширениемDBF создан. Открыть его при помощи штатного средства просмотра (клавишаF3). В случае невозможности открытия воспользоваться командойCLOSETABLES (набрать в окнеCommand) или временно закрытьVisualFoxPro. Установить шестнадцатеричный режим просмотра (OptionsHex) (рисунок 7). Убедиться в наличии основных элементов структуры метаданных. Определить тип таблицы согласно нулевому байту заголовка. Расшифровать дату последнего обновления таблицы согласно 1-3-му байтам заголовка. Проверить количество записей в таблице согласно 4-7-му байтам заголовка. Расшифровать размер заголовка и убедиться, что записи данных начинаются именно с этого смещения. Найти в заголовочной части поле, хранящее длину записи. Убедиться, что записи представляют собой последовательности из указанного количества байтов. Найти в описаниях полей значения их длин. Найти в одной из записей значения ее полей в указанных позициях.

Использование индексов в таблицах

1. Снова открыть созданный файлDBF.

2. Войти в режим редактирования структуры (ViewTableDesigner). Простейший способ создания индексов, позволяющих оптимизировать выполнение сортировок по возрастанию/убыванию значений в соответствующем поле, – указание типа индекса непосредственно в описании поля. Для этого в закладкеFields в столбцеIndex для соответствующего поля необходимо выбрать значениеAscending – индексирование по возрастанию значения поля илиDescending – индексирование по убыванию.

3. Перейдя на закладкуIndexes, можно убедиться, что индексы, указанные в закладкеFields, занесены в список индексов.

Рисунок 7. Пример внутренней структуры таблицы

4. После сохранения изменений структуры таблицы необходимо убедиться в наличии в папке таблицы индексного файлаCDX.

Создание базы данных

1. Создание базы данных выполняется при помощи команды менюFileNew (Database).При этом сразу открывается окно отображения структуры БДDatabaseDesigner (рисунок 8). Любая создаваемая таблица будет «встраиваться» в созданную БД.

2. Создайте набор таблиц в соответствии с вариантом задания (см. ниже). Обратите внимание на возможности настройки таблиц, которые появляются для базы данных в отличие от рассмотренных ранее (например, возможности настройки опций отображения значений полей).

3. Одним из ключевых отличий является возможность настройки первичных ключей таблиц. Это делается путем ручного добавления индекса (командаInsert) на закладкеIndexes окнаTableDesigner. Для первичного ключа необходимо указать типPrimary. Связывание таблиц в базе данных производится следующим образом. В окнеDatabaseDesigner выполняется перетаскивание первичного индекса главной таблицы на обычный (регулярный) индекс подчиненной таблицы. В результате устанавливается постоянная связь между таблицами.

Рисунок 8. Пустое окно дизайнера базы данных

Например, для учета учебного процесса создается таблица описаний студентов (рисунок 9). В ней поле наименования специальностиn_spect является проиндексированным (см. столбецIndex, а также вкладкуIndexes – рисунок 10). Создается справочная таблица специальностей, где соответствующее поле является первичным ключом (рисунки 11, 12). В окнеDatabaseDesigner выполняется связывание таблиц (рисунок 13). Аналогичным образом с таблицей студентов может быть связана справочная таблица факультетов, а сама таблица студентов может быть использована в качестве справочной для таблицы результатов экзаменов, если в ней будет проиндексированное полеnz (номер зачетной книжки).

Рисунок 9. Структура таблицы студентов

Рисунок 10. Описание индексов таблицы студентов

Рисунок 11. Структура таблицы специальностей

Рисунок 12. Описание индексов таблицы специальностей

Рисунок 13. Связывание таблиц в окне дизайнера базы данных

4. После создания БД следует проанализировать, как выглядит БД в файловой системе (главный файл метаданныхDBC, файлы таблицDBF, индексные файлыCDX).

Варианты заданий

  1. Библиотечный учет. Таблицы: Авторы, Издательства, Города издания, Выходные данные, Экземпляры, Читатели.
  2. Расписание учебных занятий. Таблицы: Временные границы пар, Преподаватели, Дисциплины, Аудитории, Виды занятий, Группы, Расписание.
  3. Кадровый учет. Таблицы: Должности, Персоналии, Занимаемые должности, Приказы (о назначениях, увольнениях).
  4. Учет заказов. Таблицы: Заказчики, Товары, Заказы, Выполненные заказы.
  5. Учет поставок. Таблицы: Поставщики, Товары, Склады, Поставки.
  6. Учет ремонта и технического обслуживания. Таблицы: Заказчики, Заказы, Оборудование, Комплектующие, Выполненные заказы, Комплектующие для выполнения заказов.
  7. Производственный учет. Таблицы: Комплектующие, Готовая продукция, Склады, Выпуск продукции.
  8. Учет рейсов предприятия грузоперевозок. Таблицы: Заказчики, Заказы, Водители, Машины, Выполненные заказы.
  9. Учет авиаперевозок. Таблицы: Города, Самолеты, Пилоты, Расписание, Рейсы, Пассажиры, Билеты.
  10. Учет деятельности ресторана. Таблицы: Столики, Резервирование, Меню, Заказы.
  11. Учет деятельности гостиницы. Таблицы: Номера, Клиенты, Резервирование, Проживание, Начисления, Оплаты.
  12. Учет заработной платы. Таблицы: Работники, Ставки, Отработанные дни, Начисления, Выплаты.




Возможно эти работы будут Вам интересны.

1. Эффективность и качество функционирования вычислительных систем Глава 22. Надежность, достоверность и безопасность информационных систем

2. Общие требования к организации раб места пользователей ЭВМ: расстояние между раб столами с видеомониторами должно быть не менее 2 метров

3. На рис. 3.12 приведено окно назначения полномочий пользователям и группам КС, а на рис. 3.13 — пример предоставления привилегии группам пользователей (определения списка обладате

4. Эффективность информационных систем

5. Классификация автоматизированных информационных систем

6. Определение и назначение операционных систем.

7. Архитектура информационно-вычислительных систем и ПК

8. тематического моделирования и исследования сложных систем.

9. Обслуговування комп’ютерних систем і мереж

10. .Б. РАСЧЕТ ГИДРАВЛИЧЕСКИХ И ПНЕВМАТИЧЕСКИХ ТРУБОПРОВОДНЫХ СИСТЕМ .