(Продолжение. Начало в №7-9, 11, 12, 13, 14, 15)
Сегодня мы расскажем о работе с полями в записях LeoBase.
Каждое поле БД имеет свой уникальный код. Все виды полей, за исключением memo-полей, имеют свой тип данных. LeoBase поддерживает 11 стандартных типов данных, однако их число может быть расширено до 600 за счет добавления пользовательских типов. Для удобства в работе поля могут быть объединены в группы, при этом поле, не входящее в какую-либо группу, называется самостоятельным.
Как самостоятельное, так и несамостоятельное поле характеризуется следующими параметрами:
- имя поля;
- имя типа поля;
- число экземпляров;
- размер поля, занимаемый в памяти (требуется только для строковых полей).
Для самостоятельного поля или группы, кроме того, задается маскируемость. Маскируемость - свойство, позволяющее пустым полям и группам не занимать места на диске. Если поле маскируемое и пустое - оно не хранится в БД. Возможность создания маскируемых групп, полей и строк переменной длины дает большую гибкость и экономит очень много места на диске. Благодаря этой возможности, можно задавать в записи поля, которые присутствуют очень редко - в тех записях, где их нет, места они не займут.
Любое поле записи БД может быть объявлено ключевым. Ключевое поле может участвовать в операциях выборки и упорядочения. Если поле объявлено ключевым, то все его экземпляры делаются ключевыми. Вычислимые поля всегда являются ключевыми.
Поля в LeoBase делятся на отдельные классы:
- обыкновенные;
- реляционные ссылки;
- memo-поля;
- вычислимые поля.
Под обыкновенными полями понимаются все поля, хранящиеся в записи БД, кроме полей реляционных ссылок.
Поле реляционной ссылки используется для связи записей одной базы данных с записями другой базы данных. В нем хранится номер записи подчиненной БД.
Memo-поле (поле примечаний) - нетипизированное поле переменной длины, максимальная длина которого - 2 Гбайт. Несмотря на то, что каждое memo-поле жестко связано с конкретной записью БД (его можно рассматривать как продолжение записи), само memo-поле в состав записи не входит и все обращения к нему идут по его коду или через программное имя, которое автоматически формируется СУБД. В конкретный момент работа может вестись или только с текущей записью или только с memo-полем. Поэтому реализован механизм переключения между текущей записью и memo-полем.
Для работы с memo-полями существуют специальные триггеры: триггер чтения, триггер записи и триггер создания. Стандартный максимальный размер memo-поля не может превышать 65510 байт, так как под memo-поле отводится буфер, размер которого задается числом типа word. Для того, чтобы размер memo-поля был больше 64 Кбайт или чтобы каким-то нестандартным образом хранить memo-поле (например, архивировать или кодировать его), необходимо реализовать собственные триггеры работы с этим memo-полем.
В скором будущем memo-поля в LeoBase уступят место BLOB'ам (от Binary Large OBjects). Это - элементы БД, предназначенные для хранения больших динамично изменяющихся массивов данных. В отличие от поля примечаний, которое при изменении хотя бы одного байта должно быть сохранено целиком, LeoBase будет обеспечивать механизм модификации лишь части BLOB'а.
Вычислимые поля служат для отображения взаимосвязанной информации на основе имеющихся данных. Эти поля физически в записи не присутствуют, формированием вычислимого поля занимается специальный триггер, перекрываемый программистом, пишущим прикладную программу. Для формирования вычислимого поля может использоваться информация только из текущей записи. Вычислимое поле имеет свой тип. Важное достоинство этого вида полей заключается в том, что они могут участвовать в операциях выборки и упорядочения, то есть по ним строится индекс. Как следствие этого, их размер не может превышать 255 байт. Вычислимые поля, как и все, имеют свои коды. Есть у них и программные имена, которые являются строковым представлением их кодов.
Для добавления, удаления и манипуляции вычислимыми полями существует ряд процедур и функций. Существуют в LeoBase и функции, выдающие информацию об этих полях.
Владимир КОТЛЯРОВ,
"СофтИнформ", тел. 228-00-48,
e-mail: [email protected]
Горячие темы