Основные сведения о ссылочной целостности. Задание индексов.

Для выполнения задания, необходимо сформировать в Database Desktop (DBD) структуры 2-х таблиц типа Paradox7, между которыми будет организована связь «один-ко-многим».

     

Рис. 1 Структура основной и подчиненной таблиц в Paradox7.

Данные структур сохраним в папке WorkDir с именами stud.db и ozen.db.

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

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

Для организации связи 2-х таблиц с помощью Data Desktop в окне задания структуры, когда в нем находится структура подчиненной таблицы (в нашем случае, ozen.db), следует у списка Table properties (характеристики таблицы) выбрать значение Referential Integrity (ссылочная целостность), после чего определить Define связь. В открывшемся окне задаем характеристики связи таблиц, выбрав в левом окне поле для организации связи, в правом – имя требуемой таблицы (двойным щелчком мыши). Количество выбранных полей из каждой таблицы и их типы должны совпадать.

 

 

Рис. 2 Связь подчиненной и основной таблицы по ключевым полям.

 

Здесь же можно задать характеристики связи: 1) правило обновления (update rule) – для определения варианта обновления значений в подчиненной таблице при изменении или удалении связанных значений в основной (каскадный, запрещенный); 2) выключатель защиты целостности (strict referential integrity) – для определения невозможности изменения данных в таблицах, для которых установлена ссылочная целостность. После определения параметров связи задаем имя связи.

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

Имя связи Поле младшей таблицы Старшая таблица Update rule Strict Referential Integrity
Cascade Prohibit
sv Zach stud ·   Ö

 

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

Для задания вторичных индексов с помощью DBD, следует у списка Table properties (характеристики таблицы) выбрать значение Secondary Indexes (вторичные индексы), после чего определить Defineполя, используемые в индексе, их последовательность (!!!) и ряд характеристик: 1) уникальность (unique); 2) режим обновления (maintained); 3) чувствительность к регистру (case sensitive); 4) порядок сортировки (descending). По завершению формирования индекса задаем имя индекса.

Предварительно сформируем таблицу, в которой перечислим все индексы и их характерные особенности:

Имя индекса Поля Unique Maintained Case sensitive Descending
ind Naim   Ö    
Zach Zach Oz   Ö    
             

 

 
 

Рис. 3 Задание вторичного индекса