КонспектЛекций
.pdfДля более эффективного управления страницами SQL Server использует объединения страниц – экстенты (extent – непрерывная область). Каждый экстент содержит 8 страниц и занимает 64 Кбайт. Для управления экстентами используются страницы специального типа GAM – Global Allocation Map, каждая из которых может хранить информацию о заполнении 64 000 экстентов. Специальные страницы типа PFS (Page Free Space) – используются для сбора информации о свободном месте не страницах. Это намного убыстряет процесс записи в базу, так как серверу для поиска оптимального варианта записи достаточно перебрать только страницы PFS. Для сбора информации о том, какому объекту принадлежит страница, используются страницы специального типа IAM – Index Allocation Map. Для объекта-владельца создаётся собственная страница IAM, в которой указываются принадлежащие ему экстенты. Если одной IAM не хватает, создаётся цепочка страниц этого типа.
5. Система безопасности и администрирование SQL Server.
Основной задачей СУБД является обеспечение целостности и непротиворечивости данных в рамках выбранной предметной области. Одним из факторов, препятствующих системе решать данную задачу, являются действия пользователей, случайно или умышленно пытающихся разрушить структуру данных или изменить сами данные. Следовательно, СУБД необходимо защищать не только от физических сбоев, но и (прежде всего) от неадекватных для реализуемых задач пользователей. Для этого необходимо спроектировать и подключить к базе данных систему безопасности, которая будет препятствовать пользователям выполнять действия, выходящие за рамки их полномочий.
Управление базами данных
Для создания базы данных средствами TSQL используется команда CREATE DATABASE, однако обычно для этой цели используются возможности Enterprise Manager. В SQL сервер определено достаточно много операций с базами данных: увеличение (уменьшение) размеров файлов, изменение конфигурации (команда ALTER), присоединение и отсоединение, передача прав владения, изменение имени, просмотр свойств и, наконец, удаление (DROP DATABASE).
Как и в большинстве серверов баз данных, в SQL Server существует пользователь, наделенный всеми административными полномочиями - это System Administrator или ‘sa’. После начальной установки сервера пароль sa пуст. Пользователь, создающий новую базу данных, автоматически становится её владельцем (‘dbo’ – Data Base Owner). В момент создания базы определяется и пользователь ’guest’. Если учётная запись пользователя явно не отображается в пользователя конкретной базы данных, пользователю предоставляется неявный доступ с использованием гостевого имени guest. Обычно guest запрещают.
Пользователь, создавший объект в базе данных, автоматически становится его владельцем, и никто, включая dbo и sa, не могут использовать этот объект, пока владелец не назначит им права на него. Но чтобы пользователь мог создать объект, владелец базы данных должен сначала ему предоставить соответствующие права.
Роль позволяет объединить пользователей, выполняющих одинаковые функции, для упрощения администрирования. Роли бывают встроенные и пользовательские. Встроенные роли реализуются на уровне сервера и на уровне баз данных. Ниже приведена таблица встроенных ролей для базы данных:
Db_owner |
Имеет все права в базе данных |
Db_accessadmin |
Может добавлять или удалять пользователей |
Db_securityadmin |
Управляет всеми разрешениями, объектами, ролями и пользователями |
Db_ddladmin |
Может выполнять все команды DDL, кроме GRANT, DENY, REVOKE |
Db_backupoperator |
Может выполнять команды архивирования данных |
Db_datareader |
Может просматривать любые данные в любой таблице |
Db_datawriter |
Может модифицировать любые данные в любой таблице |
Db_denydatareader |
Запрещается просматривать любые данные в любой таблице |
|
41 |
Db_denydatawriter |
Запрещается модифицировать любые данные в любой таблице |
Клиент
Authentication |
SQL Server |
|
|
|
|
|
|
База данных |
|
Аутентификация |
Account ID |
|
|
Роли базы данных: |
на уровне сервера |
|
|
Db_owner |
|
|
|
|
||
|
|
|
|
Db_accessadmin |
|
Server |
Database |
|
Db_securityadmin |
|
|
Db_ddladmin |
||
|
User |
User |
|
|
1. Учётная запись |
|
Db_backupoperator |
||
|
|
|
Db_datareader |
|
домена Windows |
|
|
|
|
|
Guest |
|
Db_datawriter |
|
2. Учётная запись |
|
|
||
|
|
|
Db_denydatareader |
|
группы Windows |
|
|
|
|
|
|
|
Dd_denydatawriter |
|
3. Собственная |
|
|
|
|
Роли сервера: |
|
|
|
|
аутентификация SQL |
|
|
|
|
Sysadmin |
Набор объектов |
|
|
|
Server |
|
|
||
Serveradmin |
«пользователи» |
|
|
|
|
GRANT, DENY, REVOKE |
|||
|
Setupadmin |
для конкретной |
||
|
|
|
||
|
Securityadmin |
базы данных |
Объект базы |
|
|
|
|||
|
Processadmin |
|
||
Набор объектов |
|
данных |
|
|
Dbcreator |
|
|
||
|
|
|
|
|
«пользователи» |
Diskadmin |
|
|
Таблицы в целом или |
для SQL Server |
|
|
отдельные столбцы, |
|
Bulkadmin |
|
|
||
|
|
|
представления, |
|
|
|
|
|
|
|
|
|
|
хранимые процедуры |
Назначение прав пользователям
Основой системы безопасности SQL Server являются (1) учётные записи (accounts); (2) пользователи (users); (3) роли (roles); (4) группы (groups).
Когда пользователь подключается к SQL Server, действия, которые он может выполнять, определяются правами, выданными ему как пользователю и члену роли. Права выдаются администратором СУБД, владельцем базы данных или владельцем конкретного объекта базы данных. Права в базе данных можно разделить на три категории: (1) права на доступ к объектам баз данных; (2) права на выполнение команд TSQL; (3) неявные права. Сервер позволяет передавать права владения от одного пользователя другому.
Для управления разрешениями пользователя на доступ к объектам базы данных используются следующие команды:
GRANT { ALL [PRIVILEGES] | <вид действия>,…}
{
ON {<имя таблицы или представления>} [(<имя столбца>,…)] | ON {<имя хранимой процедуры>}
| ON {<имя пользовательской функции>}
}
TO {PUBLIC | <имя объекта системы безопасности>,…} [WITH GRANT OPTION]
[AS <имя группы> | <имя роли>]
– назначение прав пользователям, где
ALL – пользователю предоставляются все возможные разрешения, иначе указать <вид действия> – права на доступные для пользователя действия, а именно:
SELECT – на просмотр, для столбца таблицы и для таблицы (представления) INSERT – на добавление, для таблицы (представления) в целом
UPDATE – на изменение, для столбца таблицы и для таблицы (представления) DELETE – на удаление, для таблицы (представления) в целом
42
EXECUTE – на выполнение хранимых процедур
REFERENCES – возможность ссылаться на указанный объект (вводить в состав внешнего ключа).
<имя объекта системы безопасности> – учётные записи SQL Server, пользователи домена Windows; PUBLIC – для всех пользователей.
WITH GRANT OPTION – позволяет пользователю, которому сейчас предоставляются права, самому назначать права на доступ к объекту другим пользователям.
AS <имя группы> | <имя роли> – участие пользователя в роли, которой предоставлена возможность предоставлять права другим пользователям.
Примеры:
GRANT SELECT ON authors TO public
GRANT INSERT, UPDATE, DELETE ON authors TO Mary, John, Tom GO
GRANT SELECT ON Plan_Data TO Accounting WITH GRANT OPTION GRANT SELECT ON Plan_Data TO Jack AS Accounting
-- Джек не входит в роль Accounting, но кто-нибудь из этой роли может предоставить право
DENY { ALL [PRIVILEGES] | <вид действия>,…}
{
ON {<имя таблицы или представления>} [(<имя столбца>,…)] | ON {<имя хранимой процедуры>}
| ON {<имя пользовательской функции>}
}
TO {PUBLIC | <имя объекта системы безопасности>,…} [CASCADE]
[AS <имя группы> | <имя роли>]
– запрещение доступа пользователям к объектам базы данных. CASCADE отзывает права не только у данного пользователя, но также и у всех, кому он права предоставлял.
Пример (на запрещение выполнения команды TSQL):
DENY CREATE TABLE TO Jack CASCADE
Команда REVOKE используется для неявного отклонения доступ к объектам базы данных. Синтаксис аналогичен команде DENY. Неявное отклонение подобно запрещению доступа с тем отличием, что оно действует только на том уровне, на котором определено. Пример: пользователю Jack, который является участником роли GoodUsers, предоставлены права на доступ к таблице XFiles. Если при помощи REVOKE для роли GoodUsers отклоняются права на доступ к этой таблице, пользователь Jack всё равно может обращаться к этой таблице, поскольку права для него определены явно. Если же применить REVOKE персонально для него, он потеряет право на доступ к XFiles.
Разрешения, предоставленные роли, наследуются их членами. Если пользователю предоставлен доступ к объекту через членство в одной роли, но запрещён в другой, то конфликт доступа всегда решается в пользу запрещения.
Технологии защиты данных в MS SQL Server
1.Механизм checkpoints – контрольных точек, которые генерируются через ~60 с для записи обновлённых страниц на диск (контрольная точка может быть поставлена принудительно командой CHECKPOINT).
2.Встроенные и внешние механизмы проверки целостности базы данных (запускаются автоматически или, как утилита DBCC – Database Consistency Checker – вручную).
43
3.Физическое дублирование (если оно разрешено) файлов баз данных средствами операционной системы (включая механизм зеркальных жёстких дисков).
4.Резервирование баз данных и журналов транзакций – путём записи дампа базы данных на устройство резервирования (магнитную ленту или жёсткий диск).
5.Репликация – возможность дублирования информации путём её периодической (в некоторых случаях – синхронной) передачи с одного SQL сервера на другой.
6.Шифрование трафика между клиентом и сервером, а также шифрование кодов, использованных для работы с объектами базы данных (хранимых процедур, триггеров и др.)
6. Перспективы MS SQL Server.
Некоторые усовершенствованные возможности SQL 2000 Server:
|
Реляционная часть SQL Server 2000 поддерживает две способа работы с |
||||
|
XML: возврат результата запроса в виде XML и разбор XML-документов |
||||
|
внутри СУБД. Разобранный документ может использоваться оператором |
||||
Поддержка XML |
SELECT как любая другая таблица. Чтобы вернуть результат запроса в |
||||
виде XML, используется конструкция SELECT ... FOR XML. SQL Server |
|||||
|
|||||
|
2000 содержит ISAPI* библиотеку SQLISAPI для Microsoft IIS. Эта |
||||
|
библиотека использует провайдер SQLOLEDB и библиотеку SQLXML |
||||
|
для возврата Web-браузеру XML или HTML. |
|
|
||
|
|
||||
|
SQL Server 7.0 имел возможность генерации HTML страницы из данных |
||||
|
SQL Server, отправлял данные SQL Server посредством HTTP и FTP, |
||||
|
посылал и получал сообщения электронной почты. SQL Server 2000 идет |
||||
|
дальше и усовершенствует доступ к хранимым данным в базах и OLAP |
||||
Интеграция с |
кубах через Web. Эти нововведения |
гарантируют, |
что данные |
будут |
|
доступны через интуитивно понятные |
интерфейсы |
пользователя. |
SQL |
||
Интернет* |
|||||
Server 2000 допускает использование основанного на URL доступа |
|||||
|
|||||
|
посредством нескольких специализированных механизмов, которые |
||||
|
используют ISAPI DLL, позволяющий определять виртуальные корни в |
||||
|
Microsoft Internet Information Services (IIS), привязанные к экземплярам |
||||
|
SQL Server 2000. |
|
|
|
|
|
|
|
|||
Полнотекстовый |
Допускает полнотекстовый поиск через Web или интрасеть для |
|
|||
поиск |
форматированных документов (Word, Excel, HTML) |
|
|
||
|
|
||||
Поддержка |
Устанавливает отказоустойчивые базы данных непосредственно из Setup. |
||||
Использует активную и пассивную модель отказоустойчивости с |
|
||||
резервных серверов |
|
||||
резервным оборудованием |
|
|
|
||
|
|
|
|
||
|
|
||||
Сервисы Анализа и |
Закрывает данные, используя системы безопасности для массивов и ячеек. |
||||
безопасности |
Ограничивает доступ к специальным наборам ячеек |
|
|
||
|
|
||||
Сервисы |
Импортирует и экспортирует данные и ключи между поддерживаемыми |
||||
преобразования |
базами данных Программирует многофазную подкачку данных и |
|
|||
данных |
сохраняет пакеты DTS как код Visual Basic. |
|
|
||
|
|
|
|||
|
Защищает данные с высоким уровнем защиты по умолчанию |
|
|||
Безопасность |
устанавливаемом при установке. .Включает поддержку SSL соединений. |
||||
|
Имеет сертификат безопасности С2 |
|
|
|
|
|
|
||||
Соединение OLAP |
Поддержка функций принятия решений (decision support) и поиска |
||||
кубов |
закономерностей (data mining), которые являются продолжением работ в |
||||
|
|
|
|
|
44
|
области искусственного интеллекта, позволяет анализировать и |
|
|
фильтровать огромные объемы информации в поисках скрытых |
|
|
закономерностей и тенденций. В SQL Server 2000 специалисты |
|
|
корпорации Microsoft реализовали два самых популярных метода |
|
|
исследования данных: алгоритмы кластеризации и деревья принятия |
|
|
решений. SQL Server 2000 соединяет OLAP кубы на различных серверах |
|
|
для анализа производительности. Безопасно осуществляет доступ к |
|
|
данным куба через Интернет. |
|
|
|
|
|
Быстро и эффективно проверяет данные в базах данных с поддержкой |
|
|
многопроцессорной работы. В SQL 2000 в полном объеме используются |
|
|
преимущества многозадачности и параллельной обработки данных, такие |
|
Параллельное |
как надежная работа с разделяемыми на уровне пользователей или |
|
DBCC |
приложений базами данных, разделение потока данных между серверами, |
|
|
параллельное создание индексов, ускорение сканирования баз данных в |
|
|
многопроцессорных системах, а также синхронизирует данные на всех |
|
|
серверах в кластере независимо от их местонахождения. |
|
|
|
|
Multiinstancing |
Возможность установки и одновременной работы нескольких |
|
экземпляров (instances) SQL Server 2000 на одной машине. |
||
|
||
|
|
*) URL может быть определен, как:
a)Непосредственное исполнение sql запроса: URL запросы имеют форму: http://server/vroot?sql="…" Для
URL запроса, прикладные программы Internet могут составлять URL строку, которая вызывает виртуальный корень SQL Server 2000, и которая содержит инструкцию Transact-sql. Инструкция Transact-sql, посланная экземпляру SQL Server 2000, связывается с виртуальным корнем, и результат возвращается также, как стандартный rowset. Если определено предложение FOR Xml, вместо этого будет возвращён Xml документ. Поддерживаются запросы одиночной строки и одиночного столбца.
b)Непосредственный доступ к объектам базы данных, таким, как таблицы: Прямые запросы имеют форму: http://server/vroot/dbobject/xpath. Для прямых запросов посредством HTTP, данные не будут возвращаться в виде Xml, допуская прямой поиск объектов подобных изображениям в базе данных. Синтаксис Xpath требуемый в этом случае обработки таблиц (и представлений) как элементов, а столбцов как атрибут.
c)Исполнение файлов шаблонов: запросы шаблонов имеют форму: http://server/vroot/vname?params и
непосредственно ссылаются на файл шаблона, который является допустимым Xml документом, состоящим из одной или более sql инструкций. Когда в URL определен файл шаблона, содержащиеся в файле шаблона sql команды будут выполнены. Взамен запроса будут возвращены результаты, и полный Xml документ будет возвращен его инициатору.
d)Исполнение Xpath запросов через представления Xml: Xpath запросы Xml представлений имеют форму: http://server/vroot/vname/xpath?params Xpath делает запрос на доступ к определённым данным из реляционных таблиц и из Xml представлений (аннотируемая схема), который отображает Xml на реляционные таблицы базы данных.
45
Коллекция СУБД.
1. СУБД dBase. Хранение данных в формате DBF.
В восьмидесятые годы было разработано большое число однопользовательских СУБД. В нашей стране наибольшее распространение получили FoxBASE, dBASE (III, IV), Paradox, а в конце восьмидесятых годов приобрел популярность пакет Clipper. FoxBASE, dBASE и Clipper использовали одни и те же принципы организации информации и были совместимы на уровне файлов баз данных, поэтому иногда все эти системы рассматривали как модификации dBASE.
Система программирования dBASE была разработана фирмой Ashton-Tate. В dBASE III plus основное внимание было уделено совершенствованию пользовательского интерфейса (режим ASSIST), что существенно упростило процедуру создания и модификации баз данных, сортировку и индексацию записей. Создание и использование довольно сложных структур баз данных было возможно непосредственно из режима ASSIST без составления прикладных программ на языке dBASE, что делало эту СУБД доступной для широкого круга пользователей. Это обеспечило огромную популярность dBASE III plus, и в конце восьмидесятых годов эта СУБД являлась фактическим стандартом для реляционных баз данных.
Одним из недостатков СУБД dBASE, Paradox являлась невозможность создания с их помощью файлов .EXE, автономно работающих под управлением DOS. Именно поэтому широкое распространение (в нашей стране) приобрел пакет Clipper фирмы Nantucket, который с самого начала предназначался для компиляции прикладных программ. Clipper работал с файлами
.DBF, обеспечивая достаточно высокое быстродействие. В тоже время это была открытая система, позволявшая расширять возможности языка за счет приложений, написанных на других языках программирования - Assembler'е и С.
Файл формата DBF состоит из записи заголовка и записей с данными. В записи заголовка определяется структура набора данных. Количество полей определяет число подзаписей полей. Для описания каждого поля существует одна подзапись поля. Данные начинаются с позиции, указываемой в записи заголовка в байтах 08-09. Записи с данными начинаются с байта, содержащего признак удаления. Если в этот байт занесен пробел в коде ASCII (0х20), то запись не удалялась; если же в первом байте – звездочка (0х2A), то запись удалена. Записи с данными следуют за заголовком (байты располагаются последовательно), и включают в себя фактическое содержимое полей без каких-либо дополнительных символов. Длина записи (в байтах) определяется суммированием указанных длин всех полей. Индексный файл строится самой СУБД. В признаке завершения заголовка файла Microsoft FoxPro и Access ставят символ с кодом 0x0D.
Ниже приведены два варианта формата DBF – для dBASE версии III и версии IV:
Структура заголовка файла данных для таблицы dBASE III PLUS:
|
|
Заголовок табличного файла |
|
|
|
||
|
|
|
|
Байт |
Содержание |
Описание |
|
0 |
1-й байт |
Определение наличия MEMO-файла в таблице dBASE III PLUS (03h |
|
без MEMO-файла (.DBT-файл;) 83h с MEMO-файлом). |
|||
|
|
||
1-3 |
3 байта |
Дата последнего обновления в формате YYMMDD |
|
|
|
46 |
4-7 |
32-битное число |
|
8-9 |
16-битное число |
|
10-11 |
16-битное число |
|
12-31 |
20 |
байтов |
32-n |
32 |
байта |
n+1 |
1 байт |
Количество записей в таблице
Количество байтов, занимаемых заголовком
Количество байтов, занимаемых записью Зарезервированная область
Массив с описаниями полей (структура каждого такого описания показана ниже)
Хранится значение 0Dh, выполняющее роль терминатора описаний полей
n - последний байт массива с описаниями полей. Размер массива зависит от количества полей в табличном файле.
Структура заголовка файла данных для таблицы dBASE III PLUS.
Байт |
|
Содержание |
Описание |
|
0-10 |
11 байт |
Имя поля в ASCII (заполнено нулями). |
||
11 |
1 |
байт |
Тип поля в ASCII (C, D, L, M или N) |
|
12-15 |
4 |
байта |
Адрес данных поля (ссылка на память, а не на диск) |
|
16 |
1 |
байт |
Размер поля в бинарном формате |
|
17 |
1 |
байт |
Порядковый номер поля в бинарном формате |
|
18-19 |
2 |
байта |
Зарезервировано для сетевой версии dBASE III PLUS |
|
20 |
1 |
байт |
ID рабочей области |
|
21-22 |
2 |
байта |
Зарезервировано для сетевой версии dBASE III PLUS |
|
23 |
1 |
байт |
Флаг установки поля |
|
24-31 |
1 |
байт |
Зарезервированная область |
|
|
|
|
|
Записи таблицы:
Записи в табличном файле располагаются непосредственно за заголовком таблицы. Данным записи предшествует байт, указывающий на удаленность записи: значение 0x20 (пробел) указывает, что запись не удалена, значение 0x2A (звездочка) – запись была удалена. Поля упаковываются записями без разделителей полей или терминаторов записи. Конец файла помечается единственным байтом (с EOF-маркером), OEM-код которого соответствует значению 26 (0x1A). Вы можете ввести данные в кодовой странице OEM, как показано ниже.
Допустимый тип данных dBASE III
Тип данных
C (Символы)
D (Дата)
N (Числовой)
L (Логический)
M (Мемо)
Возможные значения
Все символы кодовой страницы OEM
Числа и символ-разделитель для месяца, дня и года (внутренний формат записи - 8 цифр в формате YYYYMMDD)
- . 0 1 2 3 4 5 6 7 8 9
? Y y N n T t F f (? - не инициализировано)
Все символы кодовой страницы OEM (внутренний формат записи - 10 цифр, содержащих номер .DBT-блока)
Бинарные-, MEMO-, OLE-поля и .DBT-файлы:
MEMO-поля хранят данные в .DBT-файлах, состоящих из перечисляемых последовательных блоков (0, 1, 2 и т.д.). Размер блока равен 512 байт. Первый блок в .DBT-файле (нулевой блок) - заголовок .DBT-файла. MEMO-поле каждой записи .DBF-файла содержит номер (значение
47
указывается в кодовой странице OEM), указывающий на блок с хранимыми данными. Если поле не содержит никаких данных, .DBF-файл будет заполнен пробелами (0x20) (а не числами). В случае изменения данных какого-либо поля, блоки могут изменить свои порядковые номера для отображения новой позиции данных в .DBT-файле.
Структура заголовка файла данных для таблицы dBASE IV 2.0:
|
|
|
Структура файла |
|
|
Байт |
|
Содержание |
Описание |
|
|
|
|
|
Контроль файла dBASE IV: биты 0-2 указывают номер версии, бит 3 - |
|
|
0 |
1-й байт |
наличие MEMO-файла dBASE IV, биты 4-6 - наличие SQL-таблицы, бит |
|
||
|
|
|
7 - наличие любого MEMO-файла (или dBASE III Plus, или dBASE IV) |
|
|
|
|
|
|
|
|
1-3 |
3 |
байта |
Дата последнего обновления в формате YYMMDD |
|
|
4-7 |
32-битное число |
Количество записей в таблице |
|
||
|
|
|
|||
8-9 |
16-битное число |
Количество байтов, занимаемых заголовком |
|
||
10-11 |
16-битное число |
Количество байтов, занимаемых записью |
|
||
|
|
|
|
||
12-13 |
2 |
байта |
Зарезервированная область, заполнена нулями |
|
|
14 |
1 |
байт |
Флаг, указывающий на наличие незавершенной транзакции |
|
|
|
|
|
|
||
15 |
1 |
байт |
Флаг кодировки |
|
|
16-27 |
12 байт |
Зарезервированная область для многопользовательского |
|
||
использования dBASE IV |
|
||||
|
|
|
|
||
|
|
|
|
|
|
28 |
1 |
байт |
Флаг наличия MDX-файла: 01H - файл присутствует, 00H - файл |
|
|
отсутствует |
|
||||
|
|
|
|
||
29 |
1 |
байт |
ID драйвера языка |
|
|
|
|
|
|
||
30-31 |
2 |
байта |
Зарезервированная область, заполнена нулями |
|
|
32-n* |
по 32 байта |
Массив с описаниями полей (структура каждого такого описания |
|
||
показана ниже) |
|
||||
|
|
|
|
||
|
|
|
|
|
|
n+1 |
1 |
байт |
0DH в качестве терминатора |
|
|
|
|
|
|
|
n - последний байт массива с описаниями полей. Размер массива зависит от количества полей в табличном файле.
|
|
|
|
Описание поля таблицы |
|
Байт |
|
Содержание |
|
Описание |
|
0-10 |
11 байт |
|
Имя поля в ASCII (заполнено нулями) |
|
|
|
|
|
|
|
|
11 |
1 |
байт |
|
Тип поля в ASCII (C, D, F, L, M или N) |
|
12-15 |
4 |
байта |
|
Зарезервированная область |
|
|
|
|
|
|
|
16 |
1 |
байт |
|
Размер поля в бинарном формате |
|
17 |
1 |
байт |
|
Порядковый номер поля в бинарном формате |
|
|
|
|
|
|
|
18-19 |
2 |
байта |
|
Зарезервированная область |
|
20 |
1 |
байт |
|
ID рабочей области |
|
|
|
|
|
||
21-30 |
10 байт |
|
Зарезервированная область |
|
|
31 |
1 |
байт |
|
Флаг MDX-поля: 01H если поле имеет метку индекса в MDX-файле, |
|
|
|||||
|
00H - нет. |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
Записи таблицы DBASE IV:
Записи в табличном файле располагаются непосредственно за заголовком таблицы. Данным записи предшествует байт, указывающий на удаленность записи: значение 0x20 (пробел) указывает, что запись не удалена, значение 0x2A (звездочка) – запись была удалена. Поля
48
упаковываются записями без разделителей полей или терминаторов записи. Конец файла помечается единственным байтом (с EOF-маркером), OEM-код которого соответствует значению 26 (0x1A).
Допустимый тип данных dBASE IV
Обозначение |
Тип |
Диапазон значений |
|
|
|||
типа |
|
||
|
|
|
|
C |
Символы |
Все символы кодовой страницы OEM |
|
|
|
Числа и символ-разделитель для месяца, дня и года |
|
D |
Дата |
(внутренний формат записи - 8 цифр в формате |
|
|
|
YYYYMMDD) |
|
F |
Бинарные числа с |
- . 0 1 2 3 4 5 6 7 8 9 |
|
|
|||
плавающей точкой |
|
||
|
|
|
|
|
Десятичное |
|
|
N |
преобразование |
- . 0 1 2 3 4 5 6 7 8 9 |
|
|
бинарных чисел |
|
|
L |
Логический |
? Y y N n T t F f (? - не инициализировано) |
|
|
|
Все символы кодовой страницы OEM (внутренний |
|
M |
Мемо |
формат записи - 10 цифр, содержащих номер .DBT- |
|
|
|
блока) |
|
|
|
|
|
Memo-поля и .DBT-файлы для DBASE IV:
MEMO-поля хранят данные в .DBT-файлах, состоящих из перечисляемых последовательных блоков (0, 1, 2 и т.д.). Переменная BLOCKSIZE определяет размер каждого блока. Первый блок в .DBT-файле (нулевой блок) - заголовок .DBT-файла.
MEMO-поле каждой записи .DBF-файла содержит номер (значение указывается в кодовой странице OEM), указывающий на блок с хранимыми данными. Если поле не содержит никаких данных, .DBF-файл будет заполнен пробелами (20h) (а не числами).
В случае изменения данных какого-либо поля, блоки могут изменить свои порядковые номера для отображения новой позиции данных в .DBT-файле.
2. Microsoft Visual FoxPro. Обзор.
История Visual FoxPro и основные особенности шестой версии.
FoxPro – реляционная однопользовательская СУБД (с возможностью сетевого доступа), ориентированная на широкий класс пользователей. Производитель: Fox Software. Первая разработка датируется 1984 годом. FoxBase был задуман как улучшенный вариант dBASE, т.е. если dBASE умел что-то делать, то FoxBase должен был делать это лучше и быстрее.
С появлением на рынке FoxPro 2.0 был совершен переворот в области разработки баз данных на персональных компьютерах. Ускорение работы оказалось просто поразительным. В персональной системе базы данных стала возможной работа с таблицами, содержащими миллионы записей. Впервые разработчики Fox использовали в этой версии SQL-инструкции. FoxPro 2.0 представил разработку экранов и отчетов с помощью «мастеров». При этом мастер генерировал программный код, позволяя использовать и модифицировать его в основной программе. В версию FoxPro 2.5 была добавлена поддержка Windows, хотя по сути это было DOS-приложение, лишь внешне приняв облик Windows-продукта.
49
Компания Microsoft выкупила фирму Fox Software в период разработки FoxPro для Windows, и «совместная» версия 3.0 обогатилась множеством дополнительных возможностей: появилась поддержка хранимых процедур, правил привязки данных к таблицам, а также новых функций. Visual FoxPro стал первой персональной СУБД с возможностью доступа к удаленным данным. Версия 5.0 обрела возможность использовать и создавать серверы COM, но радикально не отличалась от версии 3.0.
На рубеже веков в основном использовалась шестая версия (Visual FoxPro 6 вошёл в состав пакета разработчика Microsoft Visual Studio 6, 1999 год), хотя все позиции и притязания FoxPro уже можно было трактовать как весьма умеренные.
Основа: интегрированная среда разработчика, позволяющая как конструировать программы из набора модулей (экраны, меню, отчёты), так и осуществлять запросы к БД из самой среды. Основной режим выполнения программ – интерпретация с возможностью создания исполняемых EXE-файлов (для работы которых требуется отнюдь не маленькая по размеру файла библиотека FoxPro). По быстродействию FoxPro всегда занимает лидирующее место среди однопользовательских СУБД. Язык программирования базируется на языке dBASE, плюс собственный набор команд и функций (FoxBASE) плюс поддержка некоторых SQLинструкций и плюс набор ООП-классов в основном для конструирования пользовательских интерфейсов. Улучшенная поддержка COM является, по-видимому, наиболее значительным усовершенствованием, упростившим создание и реализацию OLE-серверов.
Проект является основным средством объединения отдельных элементов приложения, собирающий файлы, на которые есть ссылки, и осуществляющий их взаимодействие. Для каждого из элементов в СУБД создаётся отдельный файл:
Объект |
Расширения |
Проект |
PRG, FPC, CAT, PGX, PJT |
База данных (для организации таблиц и индексов) |
DBC |
Таблица (число записей в файле – до 1 млрд., максимальный размер |
DBF |
записи – 4000 байт, число полей в записи – до 255) |
|
Индексный файл (бывают простые и составные) |
CDX, IDX |
Поля типа Memo и Genegal |
FPT |
Форма |
SCX |
Запрос |
QPR |
Отчёт |
FRX, FRM |
Почтовая наклейка |
LBX, LBL |
Меню |
MNX |
Библиотека класса |
VCX |
Программа |
PRG, SPR, MPR, QPR |
Рисунок |
BMP |
Звук |
WAV |
Откомпилированный проект (наиболее быстрое выполнение команд) |
APP |
Автономный файл проекта |
EXE |
Типы данных (полей в таблицах), которые поддерживаются FoxPro:
Character – текстовый (254 символа максимум)
Integer, Numeric, Float, Double – числовые
Currency – денежный
Date – дата
DateTime – дата и время
Logical – логический
Memo – текстовое поле произвольной длины