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

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

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

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

Добавлен: 23.11.2023

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

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

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


<выр. Nl> задает начальное (стартовое) значение переменной

цикла.

<выр. N2> задает конечное значение цикла.

<выр. N3> задает шаг цикла.

<выр. Nl>, <выр. N2> и <выр. N3> имеют целочисленный тип.

По умолчанию шаг цикла принят равным 1. Если <выр. N2> больше <пер>, то цикл будет выполняться до тех пор, пока <пер.> не будет больше <выр. N2>. Это событие обязательно наступит, так как после выполнения каждой итерации переменная цикла <пер.> будет увеличиваться на 1. В некоторых случаях требуется, чтобы переменная цикла после выполнения каждой итерации увеличивалась быстрее, тогда в <выр. N3> указывают целое число, отличное от 1, которое и будет прибавляться к <пер.> после выполнения очередной итерации. Мы рассмотрели цикл на увеличение (сложение), то есть переменная цикла с каж­дой новой итерацией увеличивала свое значение на величину ша­га цикла <выр. N3> и цикл прекращался, когда переменная цикла <пер.> становилась больше <выр. N2>.

Допускается задание цикла на уменьшение (вычитание). В этом случае начальное значение <выр.N1> переменной цик­ла <пер.> должно быть больше конечного значения <выр. N2>, а шаг цикла <выр. N3> должен быть целым и отрицательным. В этом случае после каждой выполненной итерации из пере­менной цикла <пер.> будет вычитаться значение шага цикла <выр. N3> и цикл закончит свою работу после того, как пере­менная цикла <пер.> станет меньше конечного значения цик­ла <выр. N2X

Цикл сканирования

Цикл сканирования организует просмотр записей текущей таб­лицы.

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

SCAN



[ FOR <L1>]

[ WHILE ]

[ NOOPTIMIZE ]

[LOOP]

[EXIT]

ENDSCAN

Цикл сканирования работает аналогично циклу DO WHILE, но предназначен для работы с текущей таблицей. Назначение оп­ций аналогичное. По умолчанию цикл сканирования выполня­ется для всех записей.
Световое меню

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

Световое меню — это набор пунктов (элементов) меню, один из которых является активным, то есть выделен цветом. Выбор пункта меню осуществляется либо щелчком мыши на пункте ме­ню, либо с помощью клавиш-стрелок курсор устанавливается на нужный пункт меню и нажимается клавиша
Enter. Отказ от выбора пункта меню — нажатие клавиши Esc.

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

При работе прикладных программ, содержащих меню, на эк­ран могут выводиться системные сообщения. Текст системных сообщений накладывается на элементы меню и впоследствии не удаляется. Для запрета вывода на экран системных сообщений используется команда SET TALK OFF.

По умолчанию системные сообщения выводятся на экран, то есть установлена команда SET TALK ON.

При работе со световым меню можно задать режим, когда при нажатии клавиши с первой буквой имени пункта меню этот пункт (команда) меню становится активным. Для задания этого режима используется команда SET CONFIRM OFF.

Если установлена команда SET CONFIRM ON, то после нажатия клавиши-буквы дополнительно надо нажать либо кла­вишу Enter, либо клавишу SpaceBar.

При работе конкретного приложения в разные моменты вре­мени некоторые пункты меню могут быть не доступны для выбо­ра и на экране выделены в полтона (бледно). Для того чтобы сде­лать пункт меню недоступным для выбора, надо перед именем пункта установить символ «\». В вертикальных (POPUP) меню иногда необходимо одну группу пунктов отделить разделительной чертой от других пунктов меню, причем курсор на разделитель­ной черте не фиксируется. Для этих целей вместо имени пункта меню надо указать сочетание двух символов «\-».

В FoxPro предусмотрены две технологии построения меню: FOX-меню и dBASE-меню.

Меню типа FOX активны только во время работы программы и являются частью программы. При выборе пункта такие меню вырабатывают числовой код, который запоминается и анализи­руется с последующей выработкой реакции на выбор пункта ме­ню. Как правило, анализ выбора пользователя осуществляется с помощью оператора DO CASE ... ENDCASE. Из меню этого типа можно сделать единственный выбор. Чтобы организовать многократный выбор из меню, надо описание меню поместить внутрь цикла.

Меню типа dBASE после своего описания остается в опера­тивной памяти резидентно и может многократно вызываться на экран и удаляться с экрана. Меню может вызываться не только из конкретного приложения, но и из окна

Command даже в том случае, если закрыта база данных и программный файл закончил свою работу. Для удаления меню из оперативной памяти предусмотрены специальные команды. При своей работе меню вырабатывает не только числовые коды, которые фиксируют выбор пользователя, но и непосредственно вызывает процедуры и команды на выполнение. В качестве пунктов меню здесь можно использовать имена файлов и структуру базы данных, а также организовать множественный выбор пунктов меню.
ТИПЫ ЛОГИЧЕСКИХ МОДЕЛЕЙ

Существует три типа логических моделей: иерархическая, сете­вая и реляционная.
1.2.1. Иерархическая модель

Модель этого типа жестко структурированная, то есть взаимо­связь между объектами внутри модели подчинена строгому ран­жиру (рис. 1.2). Подчинение объектов разделено на уровни. На первом уровне представлен один главный объект, которому под­чиняются объекты второго уровня. Причем объект первого уров­ня не может напрямую управлять объектом третьего уровня. Уп­равление объектом третьего уровня возможно только через объ­ект второго уровня. Также запрещены взаимосвязи на одном уровне.


1.2.2. Сетевая модель

Сетевая модель более демократична. В сетевой модели отсутству­ет понятие главного и подчиненного объекта (рис. 1.3). Один и тот же объект может выступать как главный и как подчиненный, то есть иметь любое количество взаимосвязей. Здесь допустимы связи на одном уровне.



1.2.3. Реляционная модель

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

МОДУЛЬНОСТЬ ПРОГРАММ

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

• в текущей процедуре;

• в процедурном файле;

• снизу вверх в старших процедурах;

• на диске в виде отдельной программы.

Внешние процедуры

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

SET PROCEDURE TO [<имя процедурного файла>]

Команда без опции закрывает процедурный файл.

Вызов внешней процедуры

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

DO <имя программного файла внешней процедуры>

[ WITH <список параметров> ]

[ IN <имя файла> ]

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

WITH < список параметров> - содержит список входных и выходных параметров. В качестве входных и выходных парамет­ров допускается использование переменных, констант и выраже­ний.

IN <имя файла> — явно указывает место хранения программно­го файла и используется вместо предварительно подаваемой ко­манды SET PROCEDURE.

Команда DO выполняет указанную программу. Если указан­ная программа не откомпилирована или в нее были внесены изменения, то она автоматически компилирует указанную про­грамму, а затем ее выполняет.

Если в <имени программного файла> опущено расширение, то расширения будут просматриваться в следующем порядке: .exe, .app, .fxp, .prg.

Команда описания заголовка процедуры

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

PROCEDURE <имя процедуры>

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

Команда восприятия параметров

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

PARAMETERS <список параметров>

Эта команда позволяет передать процедуре значения перемен­ных из командной строки или из вызывающей программы. Она пишется сразу после заголовка процедуры и содержит такое же

количество параметров и того же типа, что и в команде DO, вы­зывающей данную процедуру.

Команда окончания процедуры

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

RETURN [ TO MASTER | ТО <имя процедуры> | <выр.> ]

Команда RETURN без опций завершает выполнение процедуры и передает управление следующему по порядку опера­тору.

Команда RETURN TO MASTER завершает выполнение про­цедуры и выполняет переход к самому верхнему уровню вызыва­ющих процедур, передавая управление следующему по порядку оператору.

Команда RETURN TO <имя процедуры> завершает выполне­ние процедуры и выполняет переход к процедуре с указанным именем, передавая управление следующему по порядку опера­тору.

<выр.> содержит последний выполняемый оператор в теле процедуры. Такой способ окончания процедуры используется в процедурах-функциях для передачи последнего вычисленного значения.


Команда возврата

RENTRY

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

Команда выхода на командный уровень

CANCEL

Команда прекращает выполнение программы, освобождает из памяти переменные, созданные пользователем и возвращает уп­равление окну Command.

Команда выхода из среды Visual FoxPro

QUIT

Осуществляет выход из среды Visual FoxPro в операционную систему. Рекомендуется использовать эту команду перед вы­ключением компьютера, с целью предотвращения потери дан­ных.

Внутренние процедуры

Внутренние процедуры хранятся вместе с текстом основной про­граммы и размещаются в конце основной программы.

Для создания внутренних процедур используются те же ко­манды, что и при создании внешних процедур.

Процедура-функция

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

Команда описания заголовка процедуры-функции

FUNCTION(<имя процедуры-функции>)

Имя процедуры-функции пишется по правилам имен проце­дур.

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

Вызов процедуры-функции производится командой

DO <имя процедуры-функции>
ЭТАПЫ ПРОЕКТИРОВАНИЯ БАЗЫ ДАННЫХ

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

Первый этап проектирования:

построение информационной модели и определение сущностей

На этом этапе проектирования базы данных решаются следую­щие вопросы:

• ставится задача на проектирование базы данных, то есть до­казывается актуальность создания базы данных;

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

Д ля примера, рассмотренного в конце главы, сущностями будут: группа маркетинга, торговая группа, группа планирования и материальная группа.

Второй этап проектирования базы данных:

определение взаимосвязей между сущностями

На этом этапе проектирования определяются направление движения потоков информации между структурными подразде­лениями фирмы-заказчика базы данных, источники возникно­вения информации, места ее модификации и потребления. Результатом выполнения этого этапа проектирования будет
Рис. 1 Движение потоков информации между подразделениями фирмы.

функциональная схема движения потоков информации, с указа­нием типов взаимосвязей, между структурными подразделения­ми фирмы (рис. 1).

Третий этап проектирования базы данных: задание первичных и альтернативных ключей

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

Четвертый этап проектирования базы данных: приведение модели к требуемому уровню нормальной формы

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

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

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

Пятый этап проектирования базы данных: физическое описание модели

На этом этапе каждая таблица, созданная на четвертом этапе:

• получает свое имя, под которым она будет храниться в базе данных;

• каждый атрибут (концептуальное требование) таблицы получает свое имя, тип и размер;

• для каждого ключа, как первичного, так и внешнего, опре­деляются его характеристики: Primary — первичный (обяза­тельно уникальный), Candidate — альтернативный (обяза­тельно уникальный), Maintain — внешний (может быть как уникальным, так и не уникальным).

На пятом этапе также предусматриваются меры по обеспече­нию ссылочной целостности, то есть установление между табли­цами не противоречивых взаимосвязей. Установление не проти­воречивых взаимосвязей и обеспечение достоверности в данных в любой момент времени является главной и самой трудоемкой задачей.

В результате выполнения работ по пятому этапу можно опре­делить технические характеристики персонального компьютера: объем оперативной памяти, объем памяти на жестком диске и т. д.
МОДИФИКАЦИЯ СТРУКТУРЫ ТАБЛИЦЫ

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

Из окна Command надо подать команду MODIFY STRUC­TURE. Все команды в Visual FoxPro можно подавать в сокращен­ном варианте написания, указывая не менее четырех букв от каждого слова имени команды, например MODI STRU. В резуль­тате на экран выводится диалоговая панель Table Designer, опи­санная ранее. Изменения структуры проводятся по описанным выше правилам с использованием приемов текстовых редакторов. С целью избежания потерь информации рекоменду­ется перед применением команды MODIFY STRUCTURE сделать резервную копию таблицы.
РАБОТА С НЕСКОЛЬКИМИ БАЗАМИ

В FoxPro допускается работа сразу со многими базами данных и при этом возможно установление разнообразных связей между ни­ми. Указатели записей в таких связанных базах будут двигаться синхронно. База, в которой указатель движется, произвольно, счи­тается старшей, а база/базы, в которой указатель следует за указа­телем старшей базы, - младшей. В старшей и младших базах долж­ны быть поля, несущие какой-то общий признак, иначе, хотя связь и возможна, она будет бессмысленна. Допускается сцепление одной базы с несколькими другими. Младшие базы, в свою очередь, могут быть связаны с базами следующего уровня и т.д.

Возможно установление двух типов связей между записями двух, сцепленных баз данных. Связь типа одна-к-одной переме­щает указатель в младшей базе таким образом, что он всегда уста­навливается на первую встреченную им запись с совпадающим признаком. Остальные такие записи (если есть) остаются "не заме­ченными". Эта связь устанавливается просто командой SET RELATION. Связь типа одна-ко-многим позволяет обра­титься ко всем записям младшей базы с совпадающим признаком (команды SET RELATION и SET SKIP TO).

Оба типа связей могут быть распространены на несколько баз сразу.
Понятие о рабочих областях

В FoxPro можно обрабатывать сразу несколько файлов баз дан­ных. Каждый такой файл типа DBF и все вспомогательные файлы (например, индексные) открываются в своей отдельной рабочей области. Переход из области в область осуществляется командой

  • SELECT <рабочая область/псевдоним>

Первые десять рабочих областей идентифицируются номерами 1 - 10 или буквами А - J. Области с 11-й по 25-ю обозначаются но­мерами или буквенно-цифровыми именами WI1 - W25. Если в ка­честве параметра указать цифру 0; произойдет переход в первую свободную рабочую область. Кроме того, рабочие области и фай­лы базы данных могут идентифицироваться так называемыми псевдонимами. Псевдонимом области по умолчанию является само имя находящегося в ней файла базы данных. В качестве псевдонима можно указать и любое другое слово в команде USE. Использова­ние псевдонима позволяет при работе с разными базами называть их одним именем (псевдонимом). Это делает программу независи­мой от имени конкретной базы.

Очевидно, что такой способ связи файлов очень трудоемок, в особенности, если требуется установить связь не с одной, а с несколькими записями (здесь фамилиями). В FoxPro имеется ко­манда, упрощающая эту задачу.

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

Команда

  • SET RELATION ТО <ключ> INTO <область>

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

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

В FoxPro имеется возможность устанавливать связи с нескольки­ми базами одновременно. Если со старшим файлом, который уже связан с другим, необходимо связать некоторый третий (четвертый и т.д.), следует во все последующие команды SET RELATION включить слово ADDITIVE, которое обеспечит сохранение связей, установленных ранее.

Связь между всеми файлами разрывается командой SET RELATION TO без параметров. Связь с отдельным файлом в заданной <области> - командой

  • SET RELATION OFF INTO <область>

Связь вида одна-ко-многим.

Следующая команда устана­вливает связь такого типа между двумя или несколькими базами данных:

  • SET SKIP TO [<область1> [,<область2>]... ]

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

Прежде чем использовать команду SET SKIP TO, необходимо выполнить начальное сцепление вида одна-с-одной коман­дой SET RELATION.

Удаление связи одна-ко-многим осуществляется коман­дой SET SKIP TO без параметров.

Связь между базами может быть установлена не только по неко­торому ключевому полю, но и по номеру записи, если в качестве <ключа> в команде SET RELATION ис­пользовать функцию RECNOQ. Это позволяет, при необходимости, соединить две "параллельные" базы. Такая ситуация может возник­нуть, если в базе должно быть более 255 предельно допустимых полей. В этом случае можно организовать вторую базу, являющуюся продол­жением первой, и связать их по номеру записи.

Аппарат сцепления баз командой SET RELATION является мощным средством доступа к "родственным" данным. Однако, поскольку такое сцепление влечет синхронное перемещение ука­зателей записей во всех подчиненных базах вслед за перемеще­нием указателя в главной базе, это может отнимать много вре­мени в случае, если доступ к младшей базе в данный момент не нужен. Поэтому часто бывает целесообразным временное разъ­единение баз. Во многих случаях вообще лучше прибегнуть к поиску нужной записи командой/функцией SEEK, нежели к установлению постоянной связи.