II. ОСНОВНЫЕ ПОНЯТИЯ

1. ОБЪЕКТЫ PARADOX

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

1.1. ТАБЛИЦЫ

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

1.1.1. Типы полей в Paradox

Paradox разделяет поля на несколько типов. Каждый тип поля определяет вид данных, которое оно содержит.

 -----------T--------T----------------------------------------¬
¦ Тип Поля ¦ Размер ¦ Описание ¦br> +----------+--------+----------------------------------------+
¦Алфавитно-¦ 1-255 ¦ Хранит буквы, числа, спецсимволы и ¦
¦цифровое ¦ ¦любые другие печатные символы. ¦
+----------+--------+----------------------------------------+
¦ Числовое ¦Не нужен¦ Хранит числа в диапазоне от -10^307 ¦
¦ ¦ ¦до 10^308 с 15 значащими цифрами. ¦
+----------+--------+----------------------------------------+br> ¦ Денежное ¦Не нужен¦ Хранит числа в диапазоне от -10^307 ¦
¦ ¦ ¦до 10^308 с 15 значащими цифрами. ¦
¦ ¦ ¦ Денежные поля - абсолютно такие же, ¦
¦ ¦ ¦как и числовые, но при отображении ¦
¦ ¦ ¦форматируются таким образом, чтобы ¦br> ¦ ¦ ¦выделять десятичные позиции сотен, ¦
¦ ¦ ¦тысяч, миллионов и знак валюты. ¦
¦ ¦ ¦ Независимо от количества показанных ¦
¦ ¦ ¦десятичных позиций, Paradox распоз- ¦
¦ ¦ ¦нает до шести десятичных позиций при ¦
¦ ¦ ¦выполнении внутренних вычислений над ¦
¦ ¦ ¦денежными полями. ¦
+----------+--------+----------------------------------------+
¦ Дата ¦Не нужен¦ Содержит любую допустимую дату от 1 ¦
¦ ¦ ¦января 100 до 31 декабря 9999. Para 2- 0¦
¦ ¦ ¦dox правильно обрабатывает високос- ¦
¦ ¦ ¦ные годы и столетия и проверяет все ¦
¦ ¦ ¦даты на допустимость ¦
L----------+--------+----------------------------------------- ----------T--------T------------------------------------¬
¦Короткое ¦Не нужен¦ Содержит целые числа в диапазоне от¦
¦ целое ¦ ¦-32767 до 32768. Короткое целое поле¦
¦ ¦ ¦не позволяет использовать те же оп-¦
¦ ¦ ¦ции форматирования, что и числовое¦
¦ ¦ ¦поле. ¦
+---------+--------+------------------------------------+
¦ Мемо ¦1-240 в ¦ Содержит текст переменной длины и¦
¦ ¦.DB ф-ле¦обычно слишком длинный, чтобы хра-¦
¦ ¦ неогра-¦ниться в алфавитно-цифровом поле. ¦
¦ ¦ничен в ¦ Поля мемо могут хранить буквы,числа¦
¦ ¦.MB ф-ле¦и спецсимволы, любые печатные симво-¦
¦ ¦ ¦лы, а также символы перехода на но-¦
¦ ¦ ¦вую строку, возврата каретки и дру-¦
¦ ¦ ¦гие символы управления печятью. ¦
¦ ¦ ¦ Поля мемо могут быть практически¦
¦ ¦ ¦любой длины. Значение задаваемого¦
¦ ¦ ¦размера относится к части мемо-поля,¦
¦ ¦ ¦которая хранится в таблице. Она мо-¦
¦ ¦ ¦жет быть от 1 до 240 символов. ¦
¦ ¦ ¦ Оставшуюся часть мемо-поля Paradox¦
¦ ¦ ¦хранит вне таблицы в файле с расши-¦
¦ ¦ ¦рением .МВ. Paradox считывает данные¦
¦ ¦ ¦из файла .МВ когда листается запись¦
¦ ¦ ¦в таблице. Количество данных, кото-¦
¦ ¦ ¦рое может содержаться в этом поле¦
¦ ¦ ¦ограничено только доступным дисковым¦
¦ ¦ ¦пространством. ¦
L---------+--------+------------------------------------- ---------T--------T------------------------------------¬
¦Формати-¦1-240 в ¦ Форматированное мемо-поле не отли-¦
¦рованное¦.DB ф-ле¦чается от мемо-поля кроме того, что¦
¦ мемо ¦неогра- ¦что в нем можно хранить отформатиро-¦
¦ ¦ничен в ¦ванный текст. ¦
¦ ¦.МВ ф-ле¦ Paradox распознает и хранит наряду¦
¦ ¦ ¦с данными атрибуты текста (оформле-¦
¦ ¦ ¦ние различными цветами, стили, цвета¦
¦ ¦ ¦и размер букв), а также и формат па-¦
¦ ¦ ¦раграфов (позиции табуляции, отступы¦
¦ ¦ ¦и выравнивания). ¦
+--------+--------+------------------------------------+
¦Двоичный¦1-240 в ¦ Содержит данные, которые Paradox не¦
¦ ¦.DB ф-ле¦может интерпретировать. Принято ис-¦
¦ ¦неогра- ¦пользовать двоичные поля для хране-¦
¦ ¦ничен в ¦нения звуковых данных. Paradox не¦
¦ ¦.МВ ф-ле¦может отобразить или интерпретиро-¦
¦ ¦ ¦вать двоичные данные, но при помощи¦
¦ ¦ ¦ObjectPAL можно к ним получать дос-¦
¦ ¦ ¦туп. ¦
+--------+--------+------------------------------------+ ¦ Графи- ¦-||-||-|¦ Содержит графику (рисунки). ¦
¦ ческий ¦ ¦ ¦
+--------+--------+------------------------------------+
¦ OLE ¦1-240 в ¦ Содержит объекты, помещенные в таб-¦
¦ ¦.DB ф-ле¦лицу из других приложений Windows,¦
¦ ¦неогра- ¦которые поддерживают OLE (Object¦
¦ ¦ничен в ¦Linking and Embedding - Связывание и¦
¦ ¦.МВ ф-ле¦Встраивание Объектов) как сервер.¦
L--------+--------+-------------------------------------

Задание размера поля для трех последних полей не обязательно.

1.1.2. Типы полей dBASE

Paradox позволяет создавать и использовать таблицы фор мата dBASE так же просто, как и таблицы формата Paradox.

При использовании таблиц dBASE надо учитывать, что типы их полей отличаются от типов полей Paradox-таблиц.

   ---------T--------T------------------------------------¬
¦Тип поля¦ Размер ¦ Описание ¦
+--------+--------+------------------------------------+ ¦Символь-¦ 1-254 ¦ Хранит любой печатный символ (вклю-¦
¦ ное ¦ ¦чая пробелы). ¦
+--------+--------+------------------------------------+
¦Действи-¦ 1-20 ¦ Хранит численные данные в двоичном¦
¦тельное ¦ ¦формате с плавающей точкой. ¦
¦ число ¦ ¦ ¦ +--------+--------+------------------------------------+
¦ Число ¦ 1-20 ¦ Содержит числовые данные в формате¦
¦ ¦ ¦ВСD (Binary Coded Decimals). При вы-¦
¦ ¦ ¦числении в них дают большую точность¦
+--------+--------+------------------------------------+
¦ Дата ¦ 8 ¦ Содержит даты. Формат по умолчанию¦
¦ ¦(автома-¦для ввода и отображения дат устанав-¦
¦ ¦тически)¦ливается в Windows Control Panel, но¦
¦ ¦ ¦можно форматировать поля даты dBASE¦
¦ ¦ ¦точно также, как и поля даты Paradox¦
¦ ¦ ¦ ¦
L--------+--------+------------------------------------
---------T--------T------------------------------------¬
¦Логичес-¦Не нужен¦ Содержит величины, имеющие значения¦
¦ кое ¦ ¦Истинно или Ложно. ¦
+--------+--------+------------------------------------+
¦ Мемо ¦Не нужен¦ Содержит блоки текста, слишком¦
¦ ¦ ¦большие для того, чтобы хранить их в¦
¦ ¦ ¦символьном поле. Содержимое мемо-по-¦
¦ ¦ ¦лей хранится в отдельном файле с¦
¦ ¦ ¦именем таблицы и расширением .DBT.¦
L--------+--------+-------------------------------------

1.1.3. BLOB-поля

Мемо, форматированное мемо, графичeские, OLE и двоичные поля могут содержать так называемые Двоичные Файлы Больших Объектов. К этой группе полей применимы определенные правила, поэтому они иногда собирательно обозначаются как BLOB поля. Мемо-поле dBASE таблицы также является BLOB-полем.

1.1.4. Временные таблицы

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

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

   ----------T-------------------------T--------------------¬
   ¦  Имя   ¦       Содержимое        ¦ Создается во время ¦
   ¦        ¦                         ¦     операции       ¦
   +--------+-------------------------+--------------------+
   ¦ Answer ¦ Результат запроса       ¦ Запрос             ¦
   +--------+-------------------------+--------------------+
   ¦ Changed¦ Копии   первоначального ¦ Запрос CHANGETO или¦
   ¦        ¦содержания    измененных ¦операция добавления ¦
   ¦        ¦записей                  ¦Add                 ¦
   +--------+-------------------------+--------------------+
   ¦Crosstab¦ Кросстаблица            ¦Создание кросстабли-¦
   ¦        ¦                         ¦цы в форме          ¦
   +--------+-------------------------+--------------------+
   ¦ Deleted¦ Удаление записи         ¦ Запрос DELETE      ¦
   +--------+-------------------------+--------------------+
   ¦ Errchng¦ Записи, которые не могут¦ Запрос CHANGETO    ¦
   ¦        ¦быть изменены            ¦                    ¦
   +--------+-------------------------+--------------------+
   ¦ Errdel ¦ Записи, которые не могут¦ Запрос DELETE      ¦
   ¦        ¦быть удалены             ¦                    ¦
   +--------+-------------------------+--------------------+
   ¦ Errins ¦ Записи, которые не могут¦ Запрос INSERT      ¦
   ¦        ¦быть добавлены           ¦                    ¦
   +--------+-------------------------+--------------------+
   ¦ Export ¦ Специальная  таблица для¦ Операция Export    ¦
   ¦        ¦экспортирования текста  с¦                    ¦
   ¦        ¦полями     фиксированной ¦                    ¦
   ¦        ¦длины                    ¦                    ¦
   L--------+-------------------------+---------------------

   ---------T-------------------------T--------------------¬
   ¦ Import ¦ Специальная таблица  для¦ Операция Import    ¦
   ¦        ¦импортирования   текста с¦                    ¦
   ¦        ¦полями     фиксированной ¦                    ¦
   ¦        ¦длины                    ¦                    ¦
   +--------+-------------------------+--------------------+
   ¦Inserted¦ Добавление записи       ¦ Запрос INSERT      ¦
   +--------+-------------------------+--------------------+
   ¦ Keyvoil¦ Записи с  дублированным ¦ Изменение структуры¦
   ¦        ¦значением ключевого поля ¦таблицы или операция¦
   ¦        ¦                         ¦добавления   записей¦
   +--------+-------------------------+--------------------+
   ¦ Locks  ¦ Все   активные  в данном¦ File¦Multiuser     ¦
   ¦        ¦сеансе работы  с  Paradox¦ Display¦Locks      ¦
   ¦        ¦заблокированные записи   ¦                    ¦
   +--------+-------------------------+--------------------+
   ¦ Pal$scr¦ Список  исходных  кодов,¦ Language¦Browse    ¦
   ¦        ¦объектов, методов в форме¦ Sources            ¦
   +--------+-------------------------+--------------------+
   ¦Problems¦ Непреобразованные записи¦ File¦Utilities¦    ¦
   ¦        ¦                         ¦Import   Restructure¦
   +--------+-------------------------+--------------------+
   ¦ Struct ¦Определения полей таблицы¦Create  Restructure ¦
   L--------+-------------------------+---------------------

1.2. ФОРМЫ

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

Если редактируются данные в форме, то Paradox обновляет со ответствующую информацию в таблице.

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

1.3. ОТЧЕТЫ

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

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

1.4. ЗАПРОСЫ

Запрос в Paradox - это некий вопрос об информации в базе данных. При помощи запросов можно:

- вести поиск или выбор данных в таблице;

- комбинировать данные из нескольких таблиц;

- производить вычисления над данными;

- вставлять данные;

- удалять данные;

- изменять данные;

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

Paradox предоставляет простой, но гибкий и мощный способ создания запросов. В окне Query можно выбрать таблицы, по которым можно сделать запрос. Затем вводится образец данных, удовлетворяющий условиям, а Paradox выбирает из таблицы те данные, которые соответствуют этому образцу. Это называется Запрос По Образцу.

1.5. ПРОГРАММЫ

Программы - это последовательность команд на языке ObjectPAL (языке разработки приложений Paradox), которые позволяют автоматизировать выполнение определенной последовательности действий над базой данных. Коды ObjectPAL обычно "присоединяются" к объектам форм, но можно написать и отдельные программы, которые будут выполняться независимо от какой-либо формы. Например, можно написать программу для открытия определенной таблицы и выполнения вычислений над одним или более полями этой таблицы. Программы такого типа запускаются непосредственно из основного окна Paradox, а не в результате того, что произошло какое-либо событие, которое запустило на выполнение программу, присоединенную к не которому объекту формы.

Paradox также позволяет создавать библиотеки программ.

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

1.6. КОНСТРУКЦИОННЫЕ ОБЪЕКТЫ

Кроме рассмотренных выше объектов Paradox предоставляет набор так называемых конструкционных объектов, при помощи которых разрабатывается структура форм и отчетов. Эти объекты создаются при использовании специальных средств, находящихся на SpeedBar, (линейке, расположенной в верхней час ти экрана и содержащей набор кнопок-иконок для вызова раз личных операций), и могут размещаться на документе, который разрабатывает пользователь, будь то форма или отчет.

В случае формы - страница, на которой пользователь размещает объекты, сама является объектом. Можно изменить ее свойства, например, цвет, или присоединить к ней методы (метод - это последовательность команд ObjectPAL, выполняющая определенные действия). Методы, присоединенные к странице, могут начать выполняться при открытии или закрытии документа, при щелчке или двойном щелчке клавишей мыши или при выполнении другого события.

1.6.1. Текстовые объекты

Текстовый объект - это объект, содержащий текст. Пользователь может создать рамку, в которую можно будет поместить текст. Текст может быть любой длины и любого формата.

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

1.6.2. Прямоугольники, линии, эллипсы

Прямоугольники, линии и эллипсы - это объекты, которые могут размещаться в форме или отчете для придания документу более привлекательного вида. Можно рисовать прямоугольники или эллипсы вокруг полей или таблиц, использовать дополни тельные линии для того, чтобы указать на какую-либо важную особенность в документе.

1.6.3. Поля

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

1.6.4. Таблицы

Таблица - один из основных объектов Paradox. В разрабатываемых документах (формах или отчетах) можно использовать инструмент Table для того, чтобы создать столбцы и ряды таблицы, а затем задать и саму таблицу с данными. В таблицах на экранных формах и отчетах можно размещать поля и их заголовки гораздо свободнее и разнообразнее, чем в режиме просмотра и редактирования таблиц в окне Table.

1.6.5. Кросстаблицы

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

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

1.6.6. Графики

Иногда более удобно анализировать и представлять информацию в виде графиков и диаграмм. Paradox дает возможность легко создавать графики. Можно изменять тип графика, его строение и свойства. Paradox автоматически обновляет график, если изменяются данные в таблице (даже если изменение произошло при работе другого сетевого пользователя этой таблицы.

1.6.7. Многозаписные объекты

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

1.6.8. Кнопки

Кнопки - это объекты Paradox, которые можно размещать в формах и присоединять к ним методы ObjectPAL. Работая с формой, можно щелкнуть мышью на кнопке для того, чтобы вы полнить действия, определяемые присоединенным методом. К кнопке можно добавить любой текст или рисунок, поясняющий ее значение.

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

1.6.9. Графика

Графика - это графические образы, которые можно помещать в поля графического типа Paradox-таблиц, или размещать как независимый графический объект в форме или отчете.

Рaradox может импортировать графику из файлов формата .BMP, .EPS, .PCX, .TIF, .gif или из буфера Windows Clipboard.

1.6.10. OLE-объекты

OLE - технология связывания и встраивания объектов. Используя технологию OLE, можно создавать "контейнеры", которые будут содержать объекты из других приложений Windows.

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

2. ОСНОВЫ ПРЕДСТАВЛЕНИЯ ДАННЫХ

2.1. КЛЮЧИ

Paradox поддерживает два типа формата таблиц - Paradox и dBASE. При использовании таблиц Paradox-формата следуетпонимать, как работают ключи таблиц (dBASE тоже использует индексы, но в dBASE нет понятия первичного ключа в том смысле, как в Paradox).

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

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

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

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

2.1.1. Составной первичный ключ

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

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

Например, таблица "Клиенты" может иметь несколько записей, имеющих значение поля "Фамилия" "Сидоров". Аналогично, может быть несколько записей со значением поля "Имя" "Петр". Ни одно из этих полей не идентифицирует запись однозначно. Но предположим, что их комбинация в упрощенном случае (Петр Сидоров) уникальным образом идентифицирует запись (то есть среди клиентов нет двух с одинаковыми фамилией и именем). Тогда можно создать для этой таблиццы состав ной первичный ключ, состоящий из сочетания полей "Фамилия" и "Имя". Конечно, этого может быть в реальном случае не достаточно. Как правило, следует всегда включать в таблицу достаточное количество полей, чтобы обеспечить уникальность каждой записи таблицы. Если пользователь не может разумным способом создать составной ключ, в этой ситуации он может определить поле идентификатора записи, которое имеет единственное значение для каждой записи таблицы. Например, для таблицы "Клиенты" можно ввести поле "Номер клиента", задав каждому клиенту уникальный (и в достаточной степени произвольный) номер.

2.2. ИНДЕКСЫ

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

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

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

2.2.1. Первичный индекс Paradox-таблицы

Paradox упорядочивает записи в индексированной таблице в соответствии со значением поля (полей), являющегося ключом таблицы. Этот порядок называется первичным индексом.

По умолчанию все индексы (как первичные, так и вторичные) упорядочивают и позволяют получить доступ к записям в возрастающем порядке значений ( от А до Z или от 0 до 9).

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

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

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

2.2.2. Вторичные индексы Paradox-таблицы

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

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

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

Paradox допускает создание составного вторичного индекса, использующего группу полей таблиц.

2.2.3. Индексирование dBASE-таблиц

Хотя Paradox поддерживает индексные файлы двух форматов: .MDX и .NDX, рекомендуется использовать только формат .MDX.

2.3. СИСТЕМА ССЫЛОК МЕЖДУ ТАБЛИЦАМИ

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

Например, таблица "Заказы" имеет поле "Номер клиента".

Пользователь хочет быть абсолютно уверен, что любое значение этого поля представляет номер, который был присвоен клиенту при занесении его в таблицу "Клиент", связанную с таблицей "Заказы" по этому полю. Чтобы обеспечить такое строгое соответствие (для того, чтобы не было счетов, выпи санных неизвестно кем), можно объявить поле "Номер клиента" заимствованным, использую связь с ключом из таблицы "Клиент". Тогда Paradox каждый раз, как только вводится новый счет и заполняется и вводится в поле "Номер клиента" идентификационный номер клиента, проверяет, допустимо ли это значение, и есть ли в базе данных клиент с таким номером.

2.3.1. Каскадное обновление

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

Продолжая предыдущий пример, допустим, возникла необходимость у какого-либо клиента в таблице "Клиент" изменить его идентификационный номер "Номер Клиента". Если при этом не будет использоваться система ссылок, то все заказы в до черней таблице "Заказы" не будут отслеживать изменения, происходящие с данными о клиентах из таблицы "Клиент". При использовании системы ссылок Paradox самостоятельно произведет каскадное обновление соответствующих записей в таблице "Заказы". Paradox найдет все записи из таблицы "Заказы", для которых значение заимствованного ключа совпадает со значением ключа родительской таблицы "Клиент", и заменит их на новое значение идентификационного номера клиента.

3. ТЕРМИНЫ И ПОНЯТИЯ PARADOX

3.1. ПСЕВДОНИМ

Псевдоним - это имя, которое можно присвоить каталогу DOS для краткости. Если пользователь работает с базой данных, состоящей из таблиц, текстовых файлов, форм, отчетов, программ и графиков, находящихся в одном и том же каталоге: C:\PARADOX\PRJ\NEW\PLAN. Используя диалоговое окно Alias Manager, можно дать этой последовательности псевдоним.

Использование псевдонимов дает следующие преимущества:::

- избавляет пользователя от необходимости печатать длинные имена каталогов DOS;

- ссылки к файлам в формах, отчетах и подобных объектах Paradox могут использовать имена псевдонимов вместо указания полного пути доступа к ним;

- в любой момент можно изменить определение псевдонима.

Тогда все формы, отчеты и другие объекты Paradox автоматически будут ссылаться к файлам из другого каталога.

3.2. РАБОЧИЙ КАТАЛОГКАТАЛОГ

Рабочий каталог Paradox - это каталог, содержащий таблицы, с которыми пользователь работает в данный момент времени (соответствует текущему каталогу DOS). Рабочий каталог Paradox определяет, какие файлы будут показаны в диалоговом окне, которое открывается при использовании команды меню File|Open или File|Save. При инсталляции Paradox на отдельной машине, не подключенной к локальной сети, Paradox создает каталог с именем WORKING в своем системном каталоге.

Это рабочий каталог пользователя по умолчанию..

Можно определить любой каталог в качестве рабочего. Paradox присваивает рабочему каталогу псевдоним :WORK:, и если этому каталогу был присвоен ранее другой псевдоним, Paradox все равно будет использовать для рабочего каталога псевдоним :WORK:.

3.3. ЛИЧНЫЙ КАТАЛОГ

В многопользовательской среде каждому пользователю не обходимо место для размещения временных объектов. Временные таблицы, такие как, Answer или Inserted (создающиеся в результате запросов) должны храниться в неразделяемом каталоге, иначе другой пользователь, работающий одновременно и запустивший позже на исполнение запрос, может переписать эти таблицы. В локальной сети каждый пользователь Parаdox должен задавать свой личный каталог для хранения временных объектов.

Файлы, содержащиеся в личном каталоге пользователя, будут показаны в диалоговом окне, которое появляется при выполнении команд File|Open или File|Save вместе с файлами из рабочего каталога. Они располагаются в конце списка фай лов с префиксом :PRIV: и доступны только конкретному пользователю.

Задать личный каталог можно командой File|Private Di rectory. Parаdox присваивает ему псевдоним :PRIV:.

При установке Parаdox на машине, не подключенной к сети, личным каталогом по умолчанию будет каталог с именем PRIVATE в системном каталоге Parаdox.

3.4. ИНСПЕКТОР ОБЪЕКТА

Каждый объект Parаdox содержит в себе меню. Для большинства объектов Parаdox - таблиц, форм, запросов - это меню содержит команды (такие как View, Design, Run). В случае конструкционных объектов это меню предоставляет выбор свойств данного объекта (например, цвет, формат представления чисел или стиль отображения текста). Пользователь полу чает доступ к этому меню, инспектируя объект. Эта возможность присуща Parаdox for Windows, Quattro Pro for Windows и другим объектам фирмы Borland и называется "инспектор Объекта".>