Файл: В терминах бд столбцы таблицы называются полями, а её строки записями.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 23.11.2023
Просмотров: 40
Скачиваний: 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 используются Мультииндексные файлы.