(Продолжение. Начало в №7-9, 11, 12, 13, 14, 15, 16, 17, 18)
LeoBase позволяет упорядочить выделенные записи по возрастанию одного или нескольких ключевых полей из активной и любой подчиненной БД, а после этого исключить дублируемые записи с одинаковым значением комбинации полей, по которой проходило упорядочение. Следует различать термины "порядок следования" и "упорядочение". Порядок следования выделенных записей мог устанавливаться выделением записей на требуемые места, но это вовсе не значит, что установлено упорядочение по какому-либо полю или их комбинации. Упорядочение считается установленным, когда оно проведено системными средствами, о которых речь пойдет в этой статье.
Упорядочение может быть установлено одновременно по нескольким ключевым полям. Индексы полей не должны быть заблокированы. Ключом упорядочения называется ключевое поле, по которому осуществляется упорядочение. Одновременно может быть установлено до 255 ключей упорядочения. Упорядочение может быть начальным и продолженным. Поясним это на примере.
Допустим, что в БД "Преподаватели" выделены записи, содержащие фамилии преподавателей, имеющих личные автомобили (ключевые поля "Марка машины" и "Владелец":
№ записи | Марка машины | Владелец |
1 | «Жигули» | Иванов |
2 | «Mercedes-Benz» | Пивоваров |
3 | «Москвич» | Сидоров |
4 | «Жигули» | Пименов |
5 | «Москвич» | Перепелкин |
После установки начального упорядочения по полю "Марка машины" у этих записей будет такой порядок следования:
№ записи | Марка машины | Владелец |
2 | «Mercedes-Benz» | Пивоваров |
4 | «Жигули» | Пименов |
1 | «Жигули» | Иванов |
3 | «Москвич» | Сидоров |
5 | «Москвич» | Перепелкин |
Если установить продолженное упорядочение по полю "Владелец", то будет следующая картина:
№ записи | Марка машины | Владелец |
2 | «Mercedes-Benz» | Пивоваров |
1 | «Жигули» | Иванов |
4 | «Жигули» | Пименов |
5 | «Москвич» | Перепелкин |
3 | «Москвич» | Сидоров |
Если бы в записи было еще одно ключевое поле, то, проведя дополнительное упорядочивание по нему, мы получили бы уже три уровня упорядочения. Начальное упорядочение автоматически уничтожает результаты предыдущих упорядочений.
Операция уникальности LeoBase предназначена для исключения дублирования записей с одинаковым значением поля или их комбинации среди упорядоченных выделенных записей. К примеру, если мы захотим узнать, какими марками автомобилей располагают преподаватели, то логичным представляется по проведении начального упорядочения установить режим уникальности по полю "Марка машины", после чего выделенными окажутся три записи:
№ записи | Марка машины | Владелец |
2 | «Mercedes-Benz» | Пивоваров |
4 | «Жигули» | Пименов |
3 | «Москвич» | Сидоров |
С помощью специальной функции можно узнать количество повторов значений и таким образом понять, что "Mercedes-Benz" в личном пользовании имеет, увы, только один преподаватель, зато "Жигулей" и "Москвичей" имеется по две штуки.
Уникальность устанавливается для того поля или комбинации полей, по которым проведено упорядочение. При выполнении уникальности порядок, который был установлен в результате упорядочения, в результирующих выделенных записях остается.
В тех случаях, когда:
- установлен ключ начального упорядочения для строкового поля из активной рабочей области;
- установлен режим уникальности только по одному полю строкового типа,
LeoBase предоставляет возможность использовать уточняющий поиск по данному полю. Уточняющий поиск выдает первый логический номер записи, из которой индексируемое поле начинается с заданной комбинации букв.
Например, в случае с упорядоченным списком преподавателей, при вводе "П", функция выдаст номер 2 (запись "Перепелкин"), при вводе следующей буквы "И" - номер записи "Пивоваров", при последующем вводе "М" - записи "Пименов".
1 | Иванов |
2 | Перепелкин |
3 | Пивоваров |
4 | Пименов |
5 | Сидоров |
Это - эффективное средство для организации интерактивного "быстрого поиска". Данные по уточняющему поиску сохраняются в состоянии БД, поэтому при переключении РО нет необходимости вручную сохранять его результаты.
В следующей статье мы расскажем о состояниях БД и переходах между ними.
Владимир КОТЛЯРОВ,
"СофтИнформ", тел. 213-28-13,
e-mail: ui@activ.minsk.by
Горячие темы