Модификация структуры таблицы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Модификация структуры таблицы



Модифицировать можно текущую таблицу, при этом из сущест­вующей структуры можно удалить ненужное поле (поля), доба­вить в структуру новое поле (поля), изменить характеристики су­ществующих полей. При изменении характеристик существую­щих полей возможна потеря информации в некоторых случаях. Например, если тип поля изменяется с 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, нежели к установлению постоянной связи.



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 112; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.128.199.162 (0.009 с.)