SORT TO Custsort ON cLastNane
создает новую таблицу Custsort , отсортированную по полю cLastNane – фамилия покупателя. Данная сортировка полезна, если используется только одна сравнительно редко изменяемая копия таблицы. В других случаях предпочтительнее использовать индексацию. Поскольку одна таблица может иметь несколько индексов, для разных целей можно использовать различные индексы.
Индексы
Индексы представляют собой наиболее эффективное средство, которое позволяет значительно ускорить поиск данных в таблицах по сравнению с таблицами, не содержащими индексов. В зависимости от количества полей, используемых в индексе, различают простые и составные индексы.
При определении составного индекса в Visual FoxPro, в отличие от многих реляционных баз данных, используется не список индексных полей, а индексное выражение, которое включает индексные поля таблицы.
Значение индексов хранится в упорядоченном виде в отдельном файле, называемом индексным файлом. Поиск в этом файле осуществляется оптимальным методом. Для каждого значения индекса в индексном файле содержится уникальная ссылка, указывающая на местонахождения в таблице записи, соответствующей индексу. Поэтому при поиске записи осуществляется не последовательный просмотр всей таблицы, а прямой доступ к записи на основании упорядоченных значений индекса.
Важной особенностью индексов является то, что их можно использовать для создания первичных ключей. В этом случае индексы должны быть уникальными. Это означает, что для таблицы, содержащей только одно индексное поле, уникальным должно быть значение этого поля. Для составных индексов величины в каждом из индексных полей могут иметь повторяющиеся значения. Однако индексное выражение должно быть уникальным. Первичные ключи и дополнительные индексы используются при определении отношений между таблицами и условий целостности данных.
Для того чтобы создать индекс, необходимо выбрать таблицу, открыть для нее окно конструктора таблиц «Table Designer» и выбрать вкладку «Indexes» (рис. 12). Каждый индекс в Visual FoxPro имеет имя, на которое в дальнейшем можно ссылаться при упорядочении отображения данных в соответствии с данным индексом. Имя индекса содержится в поле Name. С левой стороны имени индекса располагается переключатель, определяющий порядок упорядочивания значений индексного выражения.
Кнопка | Назначение |
↑ | Индекс, в котором значения упорядочены по возрастанию |
↓ | Индекс, в котором значения упорядочены по убыванию |
Рис. 12. Вкладка «Indexes» конструктора таблицы для создания индекса
Список Typeиспользуется для установки типа создаваемого индекса. Описание значений данного списка представлено в табл. 10.
Таблица 10.
Типы создаваемых индексов
Тип индекса | Описание |
Regular | Создается индекс, в котором для каждой записи таблицы хранится значение индексного выражения. Если несколько записей имеют одинаковое значение индексного выражения, то каждое значение хранится отдельно и содержит ссылку на связанную с ней запись |
Unique | Создается индекс, в котором хранятся только неповторяющиеся значения индексного выражения. Если две или более записей содержат одинаковое значение индексного выражения, то будет храниться только одно значение и ссылка на первую из записей с одинаковым значением индексного выражения. Таблица может иметь несколько уникальных индексов |
Candidate | Создается уникальный индекс, который не содержит полей с пустыми значениями. Этот индекс обладает всеми качествами первичного ключа и не является им только по той причине, что таблица не можег содержать более одного первичного ключа |
Primary | Создается уникальный индекс, который используется для связывания таблиц и определения условий целостности данных. Поля, входящие в первичный ключ, не должны допускать ввод пустых значений. В отличие от уникального индекса, таблица может иметь только один первичный ключ |
Можно ввести имя индексного выражения непосредственно в поле ввода Expressionили же выбрать кнопку, расположенную правее поля ввода, для формирования выражения используя окно диалога «Expression Builder» (Конструктор выражений), представленное на рис. 13.
Рис.13. окно диалога Expression Builder
При использовании в выражении полей разных типов необходимо проверять допустимость введенного выражения. Например, можно создать индекс для таблицы Ordsaled, в котором данные будут упорядочены по коду покупателя и дате продажи:
STR (icdCustomer) + DTOC (dDoc)
Например, для таблицы Customer вы можете создать индекс, упорядочивающий данные по стране проживания и по коду клиента:
cCountry + STR(icdCustomer)
FoxPro имеет достаточное количество функций для работы с числами, статистикой и математикой например:
STR – возвращает символьный эквивалент заданного числового выражения.
DTOC –возвращае дату в символьном виде исходя из вырожения типа Date или Date Time.
VAL –возвращает числовое значение символьного выражения, состоящего из цифр.
INT – вычисляет значение числового выражения и возвращает его ц2елую часть.
Без индексов в Visual FoxPro не обойтись. Однако при их создании помните, что если вы используете индекс, в состав которого входят поля большой ширины, индексный файл может оказаться очень больших размеров. Visual FoxPro не разрешает при создании индексов использовать Memo-поля и поля, содержащие графические изображения.
Проверка синтаксиса выражения, осуществляется при нажатии кнопки Verify(Проверить).
В окне диалога создания индекса таблицы в поле Filter можно определить для индекса фильтр, используемый для ограничения формируемых индексных значений. Результат выражения, используемого для фильтра, должен иметь логический тип.
В зависимости от способа хранения в Visual FoxPro различают одинарные и составные индексы. Каждый одинарный индекс хранится в отдельном файле. Все составные индексы хранятся в одном файле.
При просмотре содержимого таблицы в режиме BROWSE можно подключить любое из определенных индексных выражений. Для этого следует использовать пункт главного меню Table|Properties. Обратите внимание, что этот пункт появляется ТОЛЬКО в режиме просмотра содержимого таблицы. В появившемся окне свойств рабочей области можно задать параметры буферизации данных, условие фильтрации, а так же выбрать в ниспадающем списке подключаемое индексное выражение по его имени (рис. 14). После подтверждения выбора условие сортировки будет применено к данным в таблице.
Рис. 14 Окно определения свойств рабочей области
Одновременно может быть активным только одно условие сортировки, но допускается произвольное изменение условий в процессе работы с данными в таблице. Индексные выражения для таблиц пересчитываются в момент открытия самой таблицы. Поэтому все нововведенные данные могут быть не отсортированы. Для включения их в условие сортировки следует использовать пункт главного меню Table|Rebuild Indexes, либо переоткрыть таблицу.
Определение отношений между таблицами.В Visual FoxPro можно устанавливать постоянные отношения между таблицами, которые будут поддерживаться при создании форм, отчетов и запросов. При определении отношений одна из таблиц является родительской, а другая – дочерней. Для родительской таблицы должен быть определен первичный ключ или ключ – кандидат, а для дочерней – индекс для связи с родительской таблицей. Например, при задании отношений между таблицами Customer и Ordsale, для таблицы Customerопределен первичный ключ, а таблица Ordsale содержит индекс, не являющийся уникальным, индексное выражение которого состоит из кода покупателя, по которому осуществляется связь между таблицами.
Для определения отношений между таблицами необходимо открыть окно конструктора базы данных и выполнить следующие действия:
1. Выбрать родительскую таблицу.
2. Установить курсор мыши на первичный ключ таблицы.
3. Нажатье кнопку мыши и, не отпуская ее, переместить курсор мыши на индекс дочерней таблицы, по которому устанавливается связь.
4.
Отпустить кнопку мыши. В окне конструктора базы данных между таблицами появиться линия (рис.15), отображающая отношение между таблицами.
Рис.15 Отображение связей между таблицами
5. Для изменения отношения между таблицами нужно установить курсор мыши на линию, соединяющую таблицы, и дважды нажать курсор мыши. На экране откроется окно диалога «Edit Relationship» (рис. 16), в котором слева приведены наименование и раскрывающийся список индексов родительской таблицы, а справа аналогичная информация о дочерней таблицы. В этом же окне диалога приведен тип отношений между таблицами. Для сохранения отношения следует нажать кнопку ОК, а для отказа – кнопку Cancel.
Рис. 16 Окно диалога Edit Relationship
Для удаления установленного отношения между таблицами нужно установить курсор на линию, соединяющую связываемые таблицы, и нажать правую кнопку мыши. Линия при этом увеличится в толщине и на экране появиться контекстное меню. Необходимо выбрать из этого меню команду Remove Relationship и описание отношения будет удалено из словаря базы данных.
Дата добавления: 2015-10-29; просмотров: 837;