Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Db_btrees/2

В процессе поиска с возвратом предикат db_btrees последовательно

связывает BtreeName с именем каждого B-дерева в базе данных Dbase.

nondeterm db_btrees(Dbase, BtreesName) /* (i,o) */

Имена B-деревьев присваиваются в определенном порядке. B-деревья

описаны ниже в этой главе.

Db_chains/2

В процессе поиска с возвратом db_chains поочередно связывает пере-

менную СhainsName с именем каждой цепочки базы данных Dbase.

nondeterm db_chains(Dbase, BtreesName) /* (i,o) */

Имена цепочек присваиваются в определенном порядке.

Db_statistics/5

Выходные данные предиката - статистические сведения о базе данных

Dbase.

db_statistics(Dbase, NoOfTerms, MemSize, DbaSize, FreeSize)

/* (i,o,o,o,o) */

Аргументы предиката соответствуют:

NoOfTerms - связывается с общим числом термов в базе данных.

MemSize - связывается с размером памяти (в байтах) внутренней

таблицы, хранящейся в памяти, для базы данных.

DbaSize - связывается с общим числом байт, которые заняты

термами и определениями базы данных Dbase. Если Dbase

записана на диске и DbaSize принимает значение,

намного меньшее, чем размер файла, то файл может быть

сжат использованием db_copy.

FreeSize - связываются с величиной свободной области памяти, эта

величина зависит от того, где база данных Dbase

находится в настоящее время.

- если Dbase находится в оперативной памяти, то

FreeSize связывается с количеством байт

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

началом "кучи". (Заметьте: часть свободной памяти

может быть не учтена таким образом).

- если Dbase помещена в EMS-памяти, FreeSize

связывается с количеством незанятых байт в

расширенной памяти.

- если Dbase помещена в файле, FreeSize связывается с

количеством свободных байт на диске, содержащем файл.

Обработка цепочек.

Для включения термов в цепочку внешней базы данных следует использо-

вать предикаты chain_inserta, chain_insertz или chain_insertafter. Вы мо-

жете последовательно связывать термы в цепочке и их указатели с аргумен-

тами chain_terms, пока chain_delete не позволит вам удалить целую цепочку

термов из базы данных.

Четыре стандартных предиката возвращают указатели базы данных. Это

chain_first, chain_last, chain_next, chain_prev.

Chain_inserta/5 и chain_insertz/5

Предикаты chain_inserta и chain_insertz соответствует asserta и

assertz. Вид их таков:

chain_inserta(Dbase,Chain,Domain,Term,Ref) /* (i,i,i,i,o) */

chain_insertz(Dbase,Chain,Domain,Term,Ref) /* (i,i,i,i,o) */

При этом chain_inserta включает Term в начало цепочки Chain, а

chain_insertz помещает Term в конец цепочки. Dbase - это db_selector базы

данных, Domain-домен переменной Term, а Ref - указатель, соответствующий

Term. Например, если объявлено, что my _dba имеет вид db_selector домена:

domains

db_selector = my_dba;...

то в следующем обращении:

chain_inserta(

my_dba,customer,person,p(john, "1 The Avenue", 32),NewRef)

customer (покупатель) является именем цепочки, и все покупатели хранятся

в одной цепочке. Очень хорошо хранить список поставщиков в качестве тер-

мов домена person, но в другой цепочке, возможно названную supplier.

person - это имя домена, который содержит факт p(john,"1 The Avenue",32),

как показано в объявлении:

domains

person=p(name, address, age)

Если цепочка chain еще не создана, то она автоматически создается.

Соседние файлы в папке Документация