Свойства таблиц Paradox 7
Как уже говорилось, тип таблиц Paradox 7 предпочтителен при создании файл-серверных БД. Таблицы Paradox 7 по сравнению с другими поддерживают самый богатый набор разных типов полей, что позволяет автоматически следить за правильностью вводимых в поля данных (пункт Validity Checks в списке Table properties), выбирать данные из другой таблицы (Lookup Table), строить вторичные индексы, в том числе составные (Secondary Indexes), следить за ссылочной целостностью БД (Referential Integrity), защищать таблицу от несанкционированного доступа (Password Security), выбирать языковый драйвер (Table Language).
Типы полей
Типы полей, которые могут использоваться в таблицах Paradox. В этой таблице в колонках Туре и Size указаны соответственно условный символ типа и его длина, то есть те данные, которые помещаются в одноименные колонки таблицы Field roster DBD.
Таблица 1.1. Типы данных в таблицах Paradox
Type | Size | Тип | Описание | |
А | 1-255 | Alpha | Текстовое поле указанной длины | |
N | Number | Числа с плавающей запятой в диапазоне от -10307 до +10307 с 15 значащими десятичными разрядами | ||
$ | Money | Денежное поле. Содержит вещественные числа с фиксированной запятой, 6 знаками целой части и 2 знаками дробной | ||
s | Short | Целые числа в диапазоне от -32 768 до +32 767 | ||
I | Long Integer | Целые числа в диапазоне от -2 147 483 648 до +2 147 483 647 | ||
» | 0-32 | BCD | Двоично-десятичные вещественные числа. Size — количество разрядов после запятой | |
D | Date | Дата в диапазоне от 1.01.0000 до 31.12.9999 | ||
T | Time | Время с точностью до миллисекунд | ||
@ | Times tamp | Дата и время | ||
M | 1-240 | Мемо | Мемо-поледля размещения произвольных текстовых строк неограниченной длины. Первые Size символов хранятся в основной таблице, остальные — в файле с расширением .MB | |
F | 0-240 | Formatted Memo | Мемо-поле для размещения форматированного текста в формате RTF | |
G | 0-240 | Graphic | Графическое изображение в формате TIF. Size байтов этого поля хранится в основной таблице, остальные — в отдельном файле | |
0-240 | OLE | Объект OLE | ||
L | Logical | Логическое поле. Содержит значение True или False | ||
+ | Autoincrement | Автоинкрементное поле | ||
B | 0-240 | Binary | Набор байтов произвольной длины. Первые Size байтов хранятся в основной таблице, остальные — в отдельном файле | |
Y | 1-255 | Bytes | Набор из Size байтов (целиком хранится в таблице) | |
Контроль за содержимым полей
По умолчанию сразу после открытия окна редактирования структуры таблицы в списке Table properties выбран пункт Validity Checks (см. рис. 1.5), что позволяет контролировать содержимое полей.
С помощью флажка Required Field вы можете потребовать обязательного заполнения поля при вводе новой записи — за этим будет следить BDE. Также на BDE можно возложить контроль за минимальным и максимальным значениями числового поля (строки Minimum Value и Maximum Value). В строке Default Value можно указать значение поля по умолчанию — при вводе новой записи значение в это поле поместит BDE. С помощью строки Picture можно задать шаблон для автоматического форматирования значения поля.
Таблица подстановки
Для какого-либо поля таблицы иногда требуется установить однозначную связь с полем другой таблицы. В этом случае BDE будет следить за тем, чтобы значение вновь вводимой записи в поле первой таблицы было бы одним из значений указанного поля в другой таблице, которая в этом случае называется таблицей подстановки.
Для установления связи нужно выбрать пункт Table Lookup в списке Table properties и щелкнуть на кнопке Define. В появившемся окне (рис. 1.7) в списке Fields выбирается поле, за значениями которого нужно следить, и щелчком на кнопке со стрелкой вправо имя этого поля переносится в строку Field name. Затем в списке Lookup table выбирается нужная таблица и щелчком на кнопке со стрелкой влево имя первичного ключевого поля этой таблицы переносится в строку Lookup field.
Связь будет установлена только в том случае, если поле, за значением которого нужно следить, имеет такой же тип, как и первое индексное поле в таблице подстановки. Так как в таблицах Paradox вторичный индекс можно создать только при наличии в таблице первичного ключа, который можно создать только в первом поле, подстановочное поле должно быть ключевым и первым в списке полей таблицы подстановки. В показанном на рис. 1.7 примере таблица NAKLS имеет первичный ключ по полю автоинкрементного типа, поэтому поле MNakl имеет совместимый с этим типом тип Long Integer. Если бы мы захотели создать подстановочную связь для любого другого поля, это бы не удалось, так как типы Short и Money несовместимы с типом Autoincrement.
Рис. 1.7. Установление связи с таблицей подстановки Назначение переключателей:
- Justcurrentfield— проверяется соответствие только связанных полей;
- All corresponding fields — проверяется соответствие всех полей обеих таблиц (в этом случае структуры обеих таблиц должны быть идентичными);
- Fill no help — при редактировании проверяемого поля таблица подстановки не показывается;
- Help and fill — при редактировании проверяемого поля показывается таблица подстановки.
Ссылочная целостность
Ссылочная целостность — это особый механизм, способствующий поддержанию непротиворечивых сведений в таблицах БД, связанных реляционными отношениями. В демонстрационной БД таблица NAKLS содержит данные о накладных, а таблица MOVEBOOK — о связанных с ними книгах. Перед удалением данных о накладной нужно предварительно удалить связанный с ней список книг, иначе таблица MOVEBOOK будет содержать записи о «ничейных» книгах. Другой пример. Если мы захотим удалить запись в таблице MOVEBOOK (удалить из накладной данные о какой-либо книге), нам следует соответствующим образом изменить количество книг на складе (таблица BOOKS) и сальдо партнера (таблица FIRMS). Если таблицы связаны механизмом ссылочной целостности, BDE будет автоматически блокировать попытки изменения поля связи в родительской таблице, пока соответствующим образом не изменены связанные с ней записи в дочерней таблице.
Для установления ссылочной целостности нужно выбрать пункт Referential Integrity в списке Table properties и щелкнуть на кнопке Define (см. рис. 1.5). Откроется окно Referential Integrity, показанное на рис. 1.8.
Рис. 1.8. Установление ссылочной целостности
В списке Fields выбирается поле связи редактируемой таблицы (она должна быть дочерней), а в списке Table — нужная родительская таблица. После щелчков на кнопках со стрелками имена полей связи переносятся в строки Child fields и Parent's key. Далее нужно щелкнуть на кнопке ОК. DBD запросит имя вновь создаваемой ссылочной целостности и затем создаст ее. После этого попытка удаления информации о любой накладной будет отвергаться до тех пор, пока не удалены данные обо всех связанных с ней книгах.
С помощью переключателей в группе Update rule определяются правила поддержания ссылочной целостности:
- Prohibit — BDE отвергает любые изменения в связанном поле родительской таблицы без соответствующего изменения записей в дочерней таблице; удаление записи родительской таблицы блокируется до удаления связанных с ней записей в дочерней таблице;
- Cascade — BDE автоматически производит каскадные изменения в дочерней таблице при изменениях родительской таблицы1.
Парольная защита
Любая таблица Paradox может быть полностью или частично защищена от несанкционированного доступа. Для этого (см. рис. 1.5) в списке Table properties выбирается пункт Password Security и щелчком на кнопке Define открывается соответствующее диалоговое окно (рис. 1.9).
Рис. 1.9. Окно определения пароля
Пароль может содержать от 1 до 15 любых символов, в том числе и пробелы. Он чувствителен к регистру букв. С помощью кнопки Auxiliary Passwords вызывается дополнительное окно, в котором можно уточнить, какие поля и как защищаются2.