![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Каждая таблица СУБД Paradox может иметь один первичный индекс (Primary Key), его называют также ключом. Первичный индекс может состоять из одного первого поля или нескольких подряд идущих полей, начиная с первого. Для формирования первичного индекса необходимо при создании таблицы в Database Desktop для соответствующих полей в столбце Key поставить знак «*» (например, с помощью клавиши «пробел»). Первичный индекс выполняет несколько функций.
1) Первичный индекс задает сортировку записей таблицы: порядок следования записей в таблице определяется по значениям первого ключевого поля, для записей с одинаковыми значениями первого ключевого поля – по значениям второго ключевого поля и т.д. Рассмотрим, например, таблицу со следующей структурой
Наименование поля | Тип | Ключ | Примечание, поясняющее назначение поля |
Course_Stud | S | * | Текущий курс студента |
Name_Stud | A 20 | * | ФИО студента |
Date_Sem | D | * | Дата завершения сессии |
Name_Subj | A 20 | * | Наименование дисциплины |
Date_Exam | D | Дата сдачи экзамена | |
Mark | S | Оценка |
В такой таблице записи по всем студентам будут упорядочены по возрастанию номера курса, затем по алфавиту, в соответствии с фамилией студента. Для каждого студента последовательно будут располагаться записи по увеличению дат сессий, а для одной и той же сессии - по алфавиту, в соответствии с наименованием дисциплины.
2) Первичный индекс позволяет эффективно, используя специальные алгоритмы поиска в отсортированных наборах данных, осуществлять поиск записей в таблице по значениям ключевых полей (см. Поиск, функции FindKey, Locate).
3) Первичный индекс позволяет при необходимости поддерживать целостность и однозначность данных таблицы БД: ключевые поля двух записей таблицы не могут содержать одинаковые значения! В данной таблице может храниться для каждого студента для каждой сессии только одна оценка по каждой дисциплине. При попытке внести в таблицу еще оценку будет выведено сообщение Key violation (нарушение уникальности ключа). В этом случае необходимо либо отменить изменения, либо изменить вводимые данные. Принимать решение о ключевых полях должен программист, основываясь на функциях разрабатываемой им системы. Если, например, необходимо в данной таблице хранить информацию обо всех «попытках» студента сдать экзамены, то ключевым должно быть и поле Date_Exam.
4) Первичный индекс позволяет поддерживать связь один-ко-многим между таблицами. Эта связь позволяет эффективно работать одновременно с двумя связанными содержательно таблицами (см. Мультиформы). Наличие ключевых полей позволяет однозначно определять запись главной таблицы (master table), с которой могут быть связано несколько записей подчиненной таблицы (detailed table).
Первичный индекс в СУБД Paradox представляется файлом с именем <имя таблицы>. px.
Каждая таблица СУБД Paradox может иметь несколько вторичныхиндексов. Вторичный индексможет также состоять из одного или нескольких полей (вне зависимости от порядка полей в таблице БД). Вторичный индекс выполняет функции сортировки, повышения скорости поиска записей по указанным значениям полей, может поддерживать уникальность записей с индексными полями.
Вторичные индексы создаются в Database Desktop. Для создания вторичного индекса необходимо в режиме создания или переструктурирования таблицы:
· выбрать в окне Table properties (свойства таблицы) значение Secondary Indexes (вторичные индексы);
· нажать кнопку Define (определить);
· выбрать в появившемся окне (рис. 6.1) поля таблицы БД, участвующие в формировании индекса, и определить их порядок;
· задать при необходимости опции Unique (уникальность значений полей индекса), Maintained (автоматическое перестраивание индекса), Case sensitive (учет регистра), Descending (убывающий порядок сортировки); Рис. 6.1
· ввести имя индекса;
· сохранить таблицу.
Во время работы приложения можно программно изменять текущий вторичный индекс с помощью метода IndexName компонента Table:
<имя таблицы>.IndexName:=<строка, содержащая имя индекса>.
Например, Table1.IndexName:='Ind_Mark' (в предположении, что для таблицы БД, связанной с компонентом Table1, существует вторичный индекс с именем Ind_Mark). Отменить программно установленный вторичный индекс можно с помощью оператора < имя таблицы >. IndexName:= ''.
Если вторичный индекс не установлен, для сортировки и поиска используется первичный индекс.
Дата публикования: 2014-12-11; Прочитано: 495 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!