Базы данных и информационные системы

Вид материалаДокументы

Содержание


Субд foxpro.
Технические характеристики и особенности СУБД.
Технология и структура данных в СУБД.
Типы файлов.
Файлы БД типа
Управление доступом к полям базы.
Вычисляемые поля.
Разделение окна
NODELETE CLOSE DATA BASER RETURN NODELETE – пометка к удалению записей БД с помощью клавиш Ctrl + T или мышью невозможна.
Локализация и поиск данных в базе.
Последовательный поиск.
Ускоренный поиск.
Связь вида одна – запись - с одной.
Подобный материал:
1   2   3   4   5

Товар


Категория

Заказ


Предприятие Покупатель


Команды установки работы FoxPRO.
  1. Set status on – для установке на экране статус – строки (по умолчанию off), полезная информация для пользователя:
    имя открытой базы
    номер текущей записи
    активный диск
  2. Set talk on/off – (по умолчанию off) – когда выполенние многих команд отображается на экране.
  3. Set date German – (ДД.ММ.ГГ) – установка формата даты.
  4. Set bell on/off – включение, отключение звукового сигнала
  5. Sset confirm on/off – включение, отключение автоматического перехода курсора на следующее поле.
  6. Set default to [<список путей>] – задает список путей не обнаруженных в данной директории.

Выяснить имя текущей директории можно с помощью функции:

SYS (2003) – текущая директория (полный путь)

SYS (2004) – полный

SYS (2006)

СУБД FOXPRO.

ВВЕДЕНИЕ.

В автоматизированной обработке массовой информации на ЭВМ появилась потребность в специальных языках обработке данных.


Технические характеристики и особенности СУБД.

Fox PRO основными файлами системы управления базами данных:

Fox PRO.EXE, Fox PRO.OVL

Fox PRO.INT - файл языковых установок для локализации пакета

CONFIG.FP – файл конфигурации Fox PRO

Fox USER.DBF, FOX USER.FPT – файлы внутренних установок Fox PRO

Fox HELP.DBF, Fox HELP.FPT, Fox HELP.CDX - HELP к системе Fox PRO и другие.


Технология и структура данных в СУБД.

Все данные хранятся в файлах. Файлы данных, или базы данных, представляют собой таблицу.

База данных


Поле 1

Поле 2

Поле 3



Поле N



















Запись 1
















Запись 2
















Запись 3


Каждая строка (запись) содержит некоторые сведения об описываемом объекте. Каждая клетка записи называется полем записи. Все записи базы данных имеют идентичную, заданную пользователем структуру и размеры.

ПРИМЕР: записи базы кадры

Имеет поля, Фамилия, год рождения, семейное положение и т.д. на каждого работника по записи в базе.


Типы файлов.

В Fox PRO можно создавать и обрабатывать несколько типов дисковых файлов. Каждому файлу дается имя. Расширение определяет тип файла. Для всех файлов Fox PRO установлены стандартные расширения. Основные типы:

имя. DBF – файл базы данных

имя. FPT – файл примечаний, хранящей мемо-поля базы данных

имя. IDX – индексный файл

имя. CDX – мультииндексный файл

имя. PRG - командный, программный файл

имя. MEM – файл для сохранения временных переменных

имя. FXP – откомпилированный командный файс PRG

имя. APP – объединенный откомпилированный командный файл


Файлы БД типа DBF являются основными носителями данных версия 2.5 Fox PRO

Число записи в файле  до миллиарда

Размер записи (в байтах) – до 65500

Число полей в записи – до 255

Число одновременно открытых баз – до 25/255


Типы и размеры полей (в байтах)
  • символьные поля – до 254
  • числовые поля – до 20
  • поля дат – 8
  • логические поля – 1

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

Числа в БД хранятся в числовых полях двух форматов с фиксированной и плавающей точками (типы N и F).

Логические поля могут иметь только два значения .Т. (TRUE – истина) и .F. (False – ложь) или .Y. .N. Разрешается вводить и строчные буквы.

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

Поля примечаний (тип М) имеют произвольную длину в каждой записи.

Файл примечаний имеет одинаковое с файлом БД имя, но расширение FPT. Создается одновременно вместе с полями БД. В каждой записи файла DBF имеется ссылка фиксированной длины 10 на каждое имеющееся в базе мемо-поле.

Файлы примечаний подчиненными по отношению к файлам DBF.

Создание таблиц.

Тип файла .Таблица/DBF

Наименование полей.
  1. может содержать до 10 символов
  2. может содержать буквы русские и латинского алфавита, цифры, знаки препинания
  3. два поля в одной таблице не могут иметь одинаковые наименования
  4. недопустимо: , [ ] "> - пробел


ТЕМА: Создание файла БД.

Создание файла БД включает два этапа: создание структуры файла и заполнение данными.

Структура файла БД типа DBF создается команда

- CREATE имя файла CREATE COSTOMER

Расширение имени файла DBF указывать необязательно, т.к. оно добавляется автоматически.

Если файл создается не на активном в данный момент диске или директории, то нужно указать полный путь.

Изменить структуру созданной базы данных можно командой:
  • Modify Structure

Модифицированный файл должен быть предварительно открыт
  • Use имя файла открытие файла БД

Use без параметров закрывает базу данных
  • Close Database

Закрывает все файлы БД и индекс файлов
  • Close all

Закрытие вообще всех файлов

Добавление файла новыми записями осуществляется командой
  • append (blank)

Необязательная фраза blank означает, что новая запись остается пустой и не будет отражена на экране.

После ввода текущей записи автоматически происходит доступ к следующей записи.

Для того, чтобы войти в мемо-поле, необходимо на него поместить курсор и нажать Ctrl – Home или дважды кнопку мыши. Выход из мемо – поля сохранением – клавиши Ctrl – W или Ctrl - End, без сохранения – Escape (будет вопрос – предупреждение).

Выход из окна Append осуществляется так же Ctrl – W или Ctrl – End.

Листание по записям осуществляется Pq Up/Pq Dn/

Допускается также пометка записей к удалению нажатием Ctrl – Т.


Окно редактирования.

Команды APPEND, INSERT, EDIT, CHANGE, BROWSE.

Перед использованием команды редактирования необходимо наличие открытой БД.

Стандартное окно редактирования имеет две формы. Для первых четырех команд оно будет выглядеть одинаково, – все поля БД располагаются вертикально. Назовем форму такого окна CHANGE – окном.

Другую форму предъявления данных осуществляет команда BROWSE (Browse – окно).

Здесь поля каждой записи располагаются горизонтально – колонками.

Добавление новой записи осуществляется нажатием клавиш Ctrl – N (кроме команды APPEND).

Можно установить режим копирования в новую запись всех (ON) полей из текущей (не обязательно последней) записи командой.
  • SETCARRY ON/OFF

По умолчанию OFF. Можно установить и выборочное копирование только указанных (полей) командой

- SET CARRY TO [<поля>].


BROWSE окно.

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

Формат команды:

BROWSE


[ FIELDS<поля>]

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

[FREEZE<поля>]

[KEY<выр. 1> [,выр. 2>]]

[LAST]

[LEDIT/REDIT]

[LOCK<выр. №1>]

[LPARTITION]

[NOAPPEND]

[NOCLEAR]

[NODELETE]

[NOEDIT/NOMO DU]


Управление доступом к полям базы.

Fields <список полей> - перечень полей. По умолчанию отображаются все поля БД. Имя каждого поля может сопровождаться ключами, определяющими режим доступа к нему:

:R – поле доступно только для чтения, однако курсор в поле допускается;

:V= <выр. L 1> - контроль выхода из поля. Проверка вводимых данных выполняется по <выр. L 1> после изменения содержимого поля. Если <выр. L 1> = Т., ввод считается правильным, и курсор переходит в следующее поле. Если .F. – выпадает стандартное сообщение, которое может быть заменено на собственное, заданное с параметром :E.

:E. = <выр. С 1> - выдача собственного <выр. С 1> сообщения на неправильный ввод данных

:F. – проверка не только вводимых, но и уже существующих данных независимо от способа выхода из поля.

:Р. = <выр. С 2> - задание формата отображения данных

:В. = <выр. 1>, <выр. 2> - указание границ чисел и дат. Возможно, указать только одну из границ, но запятая должна присутствовать обязательно.

:Н. = <выр. С 3> - указание собственного заголовка поля. Если заголовок не нужен вообще, следует в качестве <выр. С 3> использовать пробел (").

:W = <выр. L 2> - контроль ввода в поле. Запрещен вход и редактирование, если <выр. L 2> =F. И разрешен, если <выр. L 2> = .Т.

ПРИМЕР №1

Есть БД STUD с полями. Пусть данные в таблице будут следующими:

NZ – номер зачетной книжки

FAM - фамилия

GR - группа

POL - пол

ST – размер степендии

KURS – курс

Настроить окно редактирования таким образом, что:
  1. поля имели заголовки
  2. заголовок окна: БД STUD
  3. проверка на ввод пол «М» и «Ж»
  4. поле NZ не равен «0»
  5. размер стипендии > GO
  1. USE STUD (открытие БД)

Browse title "база данных STUD"

Fields NZ:H = "№ зачетной книжки" :12;

:V = NZ > 0,;

FAM:H = "фамилия":25,;

GR:H = "группа":7,;

POL:H = "пол":5: V = POL = "M".or.POL = "Ж"

:E = "допустимые значения М и Ж",;

ST:H = "стипендия":12:V = ST > 60: P = "# # #",;

KURS:H = "курс":4:B = 1.4
  1. Ввести расчетное поле: подсчитать стипендию за 12 месяцев; добавить какое-то расчетное поле
  1. SUM = ST*12:H:"сумма":10:p = "# # # #"

(в базе его не будет, а будет только на экране)
  1. Выдать только те записи, у которых GR=33

USE STUD

BROWSE FOR GR=33 (остальное то же самое)
  1. W – разрешение (запрет корректировки или ввода) данных. Если опция возвращает значение «ложь» то курсор не устанавливается в данном поле.

В опциях :V и :W допускается использование функций, определенных пользователем.

Вычисляемые поля.

ПРИМЕР 2

В список полей могут включаться вычисленные поля.

Отбор данных.

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

FOR <условие 1> - устанавливает фильтр записей для базы.

ПРИМЕР 3

KEY <выр. 1>, [<выр. 2>] – ограничение действия команды диапазонной ключевого выражения <выр. 1> и <выр. 2> активного индексного файла.

ПРИМЕР 4

USE STUD

INDEX ON GR TO STUD GR (создается индексный файл)

Browse key 33, 32 studgr. idx}


Разделение окна.

ПРИМЕР 5

Sele 1

Use karta index kart

BROWSE Fields Skl: H = "склад": B=1.9,: W=tost = 0,;

Nomz: H = "Hom, №": V = nomz > 0: W = tost = 0,;

Nomb: H = " ":W = tost = 0,;

Nam: H = "наименование",;

Cen: H = "цена",;

Tost: H = "остаток": R,;

PRL = cen*tost: H = "сумма": P="999999.99

VALID cen > 0.00 error "введите цену"; {Контроль редактирования записей}

Partition 10 LEDIT LPARTITION;

FOR skl = 5 {отбор данных}

PARTITION <выр. №> - представление записей БД в виде таблицы и одновременно в виде формата команды CHANGE, граница будет проходить по колонке номер <выр. №>

LEDIT – при выводе окна Browse левая или правая выводятся в режиме редактирования

LPARTITION – курсор устанавливается в левой половине раздельного окна (по умолчанию правой)


Ограничение возможности редактирования данных.

NODELETE


CLOSE DATA BASER

RETURN

NODELETE – пометка к удалению записей БД с помощью клавиш Ctrl + T или мышью невозможна.



Работа с индексами.

Стандартные (.idx) и составные (.cdx) (мультииндексный) компактные (.idx).

Компактные одиночные индексы могут быть включены в составной индекс в виде индексных входов или тэгов (TAG). Для создания компактного одиночного индекса в команде INDEX ON или REINDEX (при переиндексации) COMPACT.

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

Все тэги составного индекса являются активными и модифицируются при каждом изменении ключевого выражения.

Для работы с функциями и командами поиска после открытия составных индексных файлов необходимо установить главный тэг при помощи команды SET OR DER TO.

Один файл БД может быть проиндексирован по нескольким полям, и иметь любое число индексов.

Индексные файлы занимают некоторое место на диске, но гораздо меньше, чем при сортировке.

В FOX PRO можно создать 2 типа индексных файлов.
  1. Обычный индекс функции с расширением .IDX (одно-индексный файл).
  2. Мультииндексный файл с расширением .CDX

Такой файл может хранить сразу несколько простых индексных файлов.

Каждый отдельный индекс называется ТЭГ. Каждый ТЭГ имеет свое имя.

Мультииндексные файлы могут быть 2-х видов:

а) структурный мультииндексный файл с именем как БД

б) обычный мультииндексный файл с произвольным именем

Использование его предпочтительно, т.к. уменьшает число одновременно открытых файлов, а так же ускоряет доступ к файлам.

ПРИМЕР
  1. Создать компактный одно-индексный файл по ключу NZ.

USE STUD

INDEX ON NZ TO STUD NZ. IDX COMPACT

Открыть простой индексный файл

USE STUD INDEX TO. STUD NZ (первоначально открыть базу)

REINDEX – переиндексация открытого индекса.
  1. Создать мультииндексный файл с ключами

а) NZ;

б) NZ и GR

в) INDEX ON NZ TAG NZ OF STUD. CDX

г) INDEX ON STR (NZ) + STR (GR) TAG NZ CR OF STUD. CDX

У мультимедийных файлов STUD. CDX 2 индекса с именем

TAG – NZ

TAG – NZ GR

(во втором случае индексные поля проводятся в системе формат функции STR(I)).


Удаление данных.

В FOX PRO имеются несколько команд удаления данных
  • ERASE <файл> - удаление любого не открытого в данных момент файла. Расширение имени обязательно. DELETE FILE [<файл>] – аналогичная.
  • ZAP – удаление всех записей в активном файле БД с сохранением его структуры.
  • DELETE [<границы>] [WHILE<условие>] [FOR<условие>] – пометка к удалению записей в указанных границах и/или отвечающих указанным условиям.

DELETE без параметров помечаем только одну текущую запись (в окне редактирования Ctrl – T).
  • PACK [MEMO] [DBF] – физическое удаление помеченных ранее записей и сжатие файла. После выполнения команды указатель записей устанавливается в начало базы. Если имеются открытые индексы, они перестраиваются. По умолчанию упаковываются DBF и FPT.
  • RECALL [<границы>] [WHILE<условие>] [FOR<условие>] – снятие пометок к удалению. RECALL без параметров действует только на текущую запись.


Просмотр данных.


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

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

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

[OFF]

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

здесь:

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

TO PRINT – результат команды выдается на принтер,

FILE <файл> - или в файл, по умолчанию – экран


Записи, помеченные к удалению, команда выдает со звездочкой (по умолчанию SET DELETE OFF)
  • SET DELETE ON – записи делаются невидимыми и не участвуют в обработке данных

Выдачу имен полей можно подавать командой:
  • SET HEADING OFF


Пример: SET DELETE ON SET HEADING OFF

USE KADR

DISPLAY ALL OFF FOR POL = “Ж” TO PRINT

(выдача всех записей, без номера записи женщин на принтер)


Перемещение в базу данных.

При работе с базой данных необходимы средства перемещения внутри ее. Запись, на которой находится указатель записи, является текущей и только к ней в данный момент возможен непосредственный доступ.

Имеется несколько разновидностей команд, изменяющих положение указателя записей.
  • Go top [ in <область>] – переход к самой первой записи файла;
  • Go botton [ in <область>] – переход к самой последней записи файла;
  • Go <выр.> [ in <область>] – переход к записи c указанным в <выр.> номером;
  • SKIP <выр.> [ in <область>] – переход к записи, отстоящей от текущей на указанное в <выр.> число записей

(может быть и отрицательным!)

(переход указателя назад)

SKIP без параметров – переход на следующую запись (SKIP 1)

in <область> - указывает над базой из какой области должна выполниться команда


Функции.

Для контроля положения указателя и наличия записей в файле предусмотрены функции:
  • RECNO ([<область>]) - указывает номер текущей записи;
  • RECCOUNT ([<область>]) – выдает общее число записей в файле базы данных, включая записи, помеченные к удалению;
  • EOF ([<область>]) – функция конца файла. Она истинна (.Т.), если конец достигнут, и ложна (.F.) в противном случае;
  • BOF ([<область>]) – то же, но для начала файла.




Функции в FOX PRO имеют характерный синтаксис – скобки, даже если никакого аргумента нет.


Пример: USE STUD (всего 10 записей)

GO 5  переход к 5 записи

? RECNO ( )  текущая запись 5

? RECCOUNT ( )  количество записей в базе данных = 10

SKIP  переход к 6 записи

SKIP – 3  переход к 3 записи

DELETE NEXT 3  пометка к удалению 3, 4, 5 записей

RECALL RECORD 5  снятие пометки с записи 5

PACK  сжатие файла с возвратом в начало базы

? RECNO ( )  покажет 1 запись

? RECCOUNT ( )  осталось 8 записей


Изменение данных.

В Fox PRO имеется возможность не только вручную редактировать данные, но и изменять их путем присвоения или вычислений.
  • REPLACE [<границы>] [WHILE<условие>] [FOR<условие>]

<поле 1> WITH <выражение>

[<поле 2> WITH <выражение>,…]

[ADDITIVE]

[NOOPTIMIZE]

Эта команда осуществляет множественное изменение полей БД, в том числе и вычисляемые выражения.

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

Если не указаны границы, то присвоение будет относиться к текущей записи.

ПРИМЕР 1.

Обнулить в БД STUD значение поля NZ USE STUD

REPLACE all NZ WITH O

Нач. тав = 0

ПРИМЕР 2

USE Kadr

REPLACE ZP WITH ZP·1.2 FOR ZP < 10000

REPLACE ZP WITH ZP+6000 FOR tab = 90

(Увеличивается з.п. на 20%, у кого з.п. < 10000

после з.п. замещается на з.п.+6000 таб. ном. =90

REPLACE ZP WITH IIF (tab = 90, ZP·1.2+6000, ZP·1.2)

FOR ZP < 10000

Очистку полей БД выполняет команда
  • BLANK [<граница>] [Fields<поля>]

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

Если отсутствует <граница> или <условие>, очищена будет только текущая запись, BLANK без параметров Fields очищает все поля базы.


Локализация и поиск данных в базе.

Фильтрация данных.
  • Set filter to [<условие>]

Здесь <условие> указывает на то, какие именно записи могут быть доступны для обработки.

ПРИМЕР:

USE STUD

Set filter to GR=33

BROWSE

Set filter to  отменяет фильтр.

! Перед фильтрацией необходимо указатель записи поставить на начало БД (GO TOP).


Последовательный поиск.
  • LOCATE [<границы >] FOR <условие> [WHILE<условие>]

Если отсутствует, то поиск ведется во всем файле с 1-ой записи.

При успешном поиске RECNO ( ) равна № этой записи FOUND( ) значение .Т.

При неудачном

RECNO ( ) равна числу записей в БД +1

FOUND( ) .F.

EOF ( ) значение .Т. – файл закончен

Продолжение поиска
  • CONTINUE

ПРИМЕР

В базе STUD найти все фамилии, начиная на А.

Set talk on – для сообщения о ходе поиска

Use STUD

LOKATE FOR SUB STR (fam, 1,1) = "A"

RECORD = 3 (запись 3)

CONTINUE

RECORD = 5 (запись 5)

CONTINUE

End of Locate scope (конец границы поиска)


Ускоренный поиск.

Индексный файл не только упорядочивает БД для просмотра, но и ускоряет поиск в ней по ключу, заданному в индексе, если пользоваться командой.
  • SEEK <выражение>

ПРИМЕР:

Use STUD index STUD NZ

Seek 100

Display ZN, FAM

На экране:

Record # ZN FAM

99 100 Иванов

Имеется полезная функция индексного поиска
  • SEEK (<выражение> [,<область >]

Возвращает значение .Т., если удачный поиск и .F. если нет.

Она заменяет комбинацию команды SEEK и функции FOUND( )


Связь вида одна – запись - с одной.

Команда
  • SET RELATION TO <ключ > INTO <область >

[,<ключ> INTO <область >…] [ADDITIVE]

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

ПРИМЕР:

Связь БД KARTA по ключу STR (kod m) + str (kod t)

С БД SPRV M STR (kod m)

С БД SPRV T STR (kod t)

Чтобы получить наименьшее магазина, товара и цену.