Обслуживание файла базы данных

Обзоры баз данных

Собственно, обслуживание файла базы данных заключается в его регулярной «чистке». Поскольку файл базы данных — это обычная DBF-таблица, то и удаление из него происходит так же как и в таблице в 2 этапа: сначала записи только помечаются как удаленные, но физически не удаляются. А для физического удаления необходимо выполнить упаковку файла базы данных.

На этапе разработки для этой цели используется специальный пункт меню в режиме модификации базы данных: пункт главного меню Database->Clean Up DataBase. Фактически, этот пункт меню выполняет команду PACK для файла базы данных, поэтому требует эксклюзивного открытия базы данных (в режиме EXCLUSIVE). Если база данных открыта в режиме SHARED, то этот пункт меню будет недоступен.

Кроме собственно чистки файла базы данных от ранее удаленных записей, выполнение этой операции существенно уменьшает размер файла DCT в котором хранятся в том числе все «хранимые процедуры». Поэтому после внесения изменений в хранимые процедуры также желательно сделать чистку базы данных.

На этапе выполнения у клиента необходимость чистки базы данных возникает только в том случае если Вы динамически добавляете и удаляете какие-либо объекты в базу данных. Например, создаете Local View командой CREATE SQL VIEW. Или модифицируете какие-либо свойств по DBSetProp(). Или модифицируете таблицы по ALTER TABLE.

В этом случае чистка базы данных выполняется с использованием обычной команды PACK примерно таким образом
SET DATABASE TO MyBase
CLOSE DATABASE
OPEN DATABASE MyBase EXCLUSIVE
SET DATABASE TO MyBase
PACK DATABASE
CLOSE DATABASE
OPEN DATABASE MyBase SHARED
SET DATABASE TO MyBase

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

Если же Вы никаким образом не модифицируете файл базы данных на этапе работы у клиента, то и нет необходимости в чистке файла базы данных.

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

А надо ли вообще использовать файл базы данных?

Подобный вопрос очень часто задают программисты, которые раньше работали на FoxPro 2.x, где этого файла просто не было. Да и сам FoxPro вполне способен работать и со свободными таблицами безо всякой базы данных. Отвечу сразу — надо! А теперь попробую объяснить почему.
Использование файла базы данных расширяет возможности таблиц DBF.

Например, в файле DBF в принципе нельзя дать полю название содержащее более 10 символов, но если он включен в базу данных, то название поля может уже содержать до 128 символов. Никакие правила (RULE), значения по умолчанию (DEFAULT), триггера и кое-что другое попросту невозможны в файле DBF вне файла базы данных. Точнее так — невозможно их автоматическое выполнение.
Использовании файла базы данных позволяет выполнять операции, которые крайне сложно организовать другими способами

Например, такая операция как «транзакция» может быть реализована только среди таблиц DBF включенных в базу данных. В принципе, этот процесс можно организовать и со свободными таблицами, но это потребует от программиста значительных усилий. А такой замечательный объект как обновляемый Local View — сколько усилий требовалось при программировании в FoxPro 2.x для реализации того, что этот объект делает автоматически!
Вобщем, использование файла базы данных серьезно облегчает жизнь программиста