Файл: В терминах бд столбцы таблицы называются полями, а её строки записями.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.11.2023

Просмотров: 19

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Для контроля положения указателя и наличия записей в файле предусмотрены функции:

  • RECNO([<область>]) - указывает номер текущей записи;

  • RECCOUNT([])- выдает общее число записей в файле базы данных, включая записи, помеченные к удалению;

  • ЕОР([<область>]) - функция конца файла. Она истинна (.Т.), если конец достигнут, и ложна (.F.) в противном случае;

  • ВОF([<область>]) - то же, но для начала файла.

Необязательный параметр <область> указывает, для какой ра­бочей области запрашивается значение функции. По умолчанию текущая область.

Функции в FoxPro имеют характерный синтаксис - скобки, даже если никакого аргумента нет, и они остаются пустыми.

ПРОСМОТР ДАННЫХ

Просмотр данных в FoxPro осуществляется очень близкими по смыслу и синтаксису командами LIST и DISPLAY:

DISPLAY [<границы>] [<поля>]

[WHILE <условие>]

[FOR <условие>]

[OFF]

[ТО PRINT/TO FILE <файл>]

Здесь:

OFF - указание на то, что номера записей не выводятся;

ТО PRINT - результат команды выдается на принтер;

ТО FILE <файл> - результат выдается в <файл>. Если не указать расширение имени, то оно будет ТХТ.

В качестве заголовка вывода командой выдаются имена полей базы данных. При заполнении экрана выполнение команды при­останавливается с индикацией указания "Нажмите любую клави­шу". При нажатии просмотр может быть продолжен. После выпол­нения команды указатель записи перемещается на последнюю по­казанную запись. Записи, помеченные к удалению, команда выдает со звездочкой (если SET DELETED OFF). Выдачу имен полей можно подавить командой

  • SET HEADING OFF

(восстановление - ON). Чтобы выдать мемо-поля, их имена нужно явно указать в списке FIELDS, иначе они выводятся просто столб­цом "memo". Команда

  • SET MEMOWIDTH <вырN>

определяет фактическую ширину строки для выводимого мемо-поля. Команда DISPLAY без параметров осуществляет выдачу всех полей базы данных только одной текущей записи.

Команда с похожими функциями LIST не делает периодических остановок при выдаче данных, и по умолчанию область ее действия не текущая запись, а весь файл. Ввиду этого, команда более пригодна для выдачи данных на принтер или файл. Выполнение команды LIST может быть инициировано в командном режиме нажатием клавиши F3, а команды DISPLAY - F8.

Приведенные команды удобны скорее для просмотра данных при отладке программ. Для
включения их в программы они слишком грубы, и здесь лучше использовать более гибкие команды ? и @... SAY.
УДАЛЕНИЕ ДАННЫХ

В FoxPro имеется несколько команд удаления данных:

  • ERASE <файл> - удаление любого не открытого в данный момент файла. Расширение имени обязательно. Совершенно аналогичные функции выполняет команда DELETE FILE <файл>.

  • ZAP - удаление всех записей в активном файле базы данных с сохранением его структуры.

  • DELETE [<границы>] [WHILE <условие>] [FOR <условие>] - пометка к удалению записей в указанных границах и/или от­вечающих указанным условиям. DELETE без параметров по­мечает только одну текущую запись.

  • PACK [MEMO] [DBF] - физическое удаление помеченных ранее записей и сжатие файла. После выполнения команды указа­тель записей устанавливается в начало базы. Если имеются открытые индексы, они перестраиваются. По умолчанию упа­ковывается как файл данных (DBF), так и файл мемо-полей (FPT). Если указан параметр MEMO, то упаковывается толь­ко FPT-файл, если DBF - то только DBF-файл.

  • RECALL [<границы>] [WHILE <условие>] [FOR <условие>] - снятие пометок к удалению. RECALL без параметров действу­ет только на текущую запись.


Удаление записей в базе данных выполняется в два этапа: снача­ла пометка записей на удаление (она возможна и в окнах редакти­рования нажатием клавиш Ctrl-T) командой DELETE, а затем их физическое уничтожение командой PACK. Если упаковка файла еще не произведена, можно спасти нужные записи командой RECALL.

Команду PACK имеет смысл применять не только для удаления за­писей, но и для сжатия MEMO-полей (PACK MEMO). Дело в том, что даже при видимом уменьшении размера MEMO-поля (например, в ре­зультате редактирования) уменьшается только доступная пользователю часть, но размер самого FPT-файла никогда не сокращается. Таким образом, при интенсивном обновлении данных с участием MEMO-полей вполне возможно недопустимое "разбухание" файла примечаний.

Для иллюстрации работы FoxPro применена команда ?, вы дающая на экран перечисленные в ней выражения. Более подробно команда будет рассмотрена позже.

Команда сжатия PACK в базе реальных размеров выполняется! медленно, и поэтому лучше ее делать один раз в день или даже раз в несколько дней. Чтобы помеченные к удалению записи до их уничтожения не участвовали далее в обработке данных, можно использовать команду

  • SET DELETED ON


При этом такие записи делаются как бы невидимыми для FoxPro и пользователя, за исключением случаев прямого на них указания. Например, команда GO 20 установит указатель записей на двадцатую запись независимо от того, была или нет она помечена. По умолчанию принято значение OFF.
ИЗМЕНЕНИЕ ДАННЫХ

В FoxPro имеется возможность не только вручную редактировать данные, но и изменять их путем присвоений или вычислений.

REPLACE [<границы>] [WHILE <условие>] [FOR <условие>] <поле1> WITH <выражение> [,<поле2> WITH <выражение> ...]

[ADDITIVE]

[NOOPTIMIZE]

Эта команда осуществляет множественное изменение полей базы данных в соответствии с заданными выражениями, в установлен­ных границах и при заданных условиях. Если отсутствует параметр <границы> или <условия>, изменена будет только текущая запись. Параметр ADDITIVE действует для мемо-полей и означает, что за­данное <выражение> будет дописываться в конец поля. Если этот параметр опущен, то старое значение мемо-поля будет замещено <выражением>.

Команда REPLACE эквивалентна знаку равенства в операции присвоения для переменных. Буквально фраза <поле> WITH <выражение> соответствует присвоению <поле>=<выражение>.

В команде REPLACE можно делать сразу несколько присвоений в том числе и одному и тому же полю. Они тогда выполняются cлева - направо. Так, предыдущий пример может быть реализован одной, а не двумя командами REPLACE:

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

BLANK [<границы>] [FIELDS <поля>]

[WHILE <условие>] [FOR <условие>] [NOOPTIMIZE]

Если отсутствуют <границы> или <условия>, очищена будет только текущая запись. BLANK без параметра FIELDS очищает все поля базы.
ФИЛЬТРАЦИЯ ДАННЫХ

В FoxPro определены два вида фильтров данных: фильтр для строк, когда ограничивается количество строк, предъявляемых на экран, и фильтр для полей, когда ограничивается количество полей, отображаемых на экране и, следовательно, доступных для редактирования.

Ограничение на количество строк

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

Для установки фильтра данных используют команду
SET FILTER ТО <выр.1>

В опции <выр. L> указывают имя поля и его значение, по ко­торым надо выполнить фильтрацию. Для снятия фильтра и вос­становления первоначального вида таблицы используют ту же команду, но без опции.

Ограничение на количество полей

Фильтрация полей применяется при работе с длинными запися­ми, которые имеют длину более одного экрана. При редактиро­вании таких записей па экран выводят те поля, в которые надо внести изменения, и одно-два поля, идентифицирующих запись. Фильтрация полей выполняется в два этапа: на первом этапе оп­ределяется список полей, а на втором — фактическая установка фильтра.

Для определения списка полей используют команду:

SET FIELDS ТО [<список полей> | ALL [LIKE <маска> | EXCEPT <маска>] ]

После выполнения этой команды, из текущей таблицы для установки фильтра будут отобраны либо поля, имена которых указаны в <списке полей>, либо все поля. По умолчанию приня-» опция ALL — все поля. Опция LIKE включает в список полей е поля, имена которых удовлетворяют маске (шаблону). Опция EХСЕРТ включает в список полей все поля, имена которых не удовлетворяют маске (шаблону).

Если повторно подать эту же команду с другим <списком полей>, то вновь определенный список полей будет добавлен к су­ющему списку полей. Команда SET FIELDS TO без опции закрывает все поля, открытые предыдущими командами SET DS ТО.

Для установки фильтра полей используют команду

SET FIELDS ON | OFF | LOCAL | GLOBAL.

Назначение опций:

ON — устанавливает фильтр для ранее определенных полей.

OFF — отменяет список полей и разрешает отображение всех полей таблицы. По умолчанию установлена опция OFF.

LOCAL — определяет, что для фильтра доступны только поля текущей таблицы.

GLOBAL — разрешает отображать поля всех таблиц, между которыми установлены реляционные отношения (установлены взаимосвязи).


ИНДЕКСИРОВАНИЕ БАЗ ДАННЫХ

Если записей в таблице много, то найти нужную запись бывает очень трудно. Поиск данных производится методом перебора, то есть просматриваются все записи таблицы от первой записи до последней записи, что приводит к большим затратам времени. Чтобы облегчить поиск данных в таблице, используют индексы. Индекс, иногда его называют указатель, представляет собой поряд­ковый номер записи в таблице. Индекс строится по значениям од­ного поля или по значениям нескольких полей. Индекс, построен­ный по значениям одного поля, называется простым, а по значени­ям двух и более полей — сложным. Во время построения индекса записи в таблице сортируются по значениям поля (или полей) будущего индекса. Затем первой строке таблицы присваивается индекс номер один, второй строке — индекс номер два и т. д. до конца таблицы.


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

• Candidate — кандидат в первичный ключ или альтернатив­ный ключ. Он обладает всеми свойствами первичного ключа.

• Unique (уникальный) — допускает повторяющиеся значе­ния в поле, по которому он построен, но на экран будет вы­водиться только одна первая запись из группы записей с одинаковым значением индексного поля.

• Regular (регулярный) — не накладывает никаких ограниче­ний на значения индексного поля и на вывод записей на эк­ран. Индекс только управляет порядком отображения запи­сей. Это наиболее популярный тип индекса.

Взаимосвязь между таблицами осуществляется по индексам, которые называют ключами.

Построенный индекс хранится в специальном индексном файле. Если индексный файл хранит только один индекс, то он называется одноиндексным и имеет расширение .idx. Индекс­ные файлы, которые хранят много индексов, называются мультииндексными и имеют расширение .cdx. Каждый индекс, кото­рый хранится в мультииндексном файле, называется тегом. Каждый тег имеет свое уникальное имя.

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

• автоматически открывается со своей таблицей;

• его нельзя закрыть, но можно сделать не главным.

Одна таблица может иметь много индексных файлов как одноиндексных, так и мультииндексных. В старших версиях FoxPro используются Мультииндексные файлы.