Имя поля в таблице формата Paradox представляет собой строку, написание которой подчиняется следующим правилам:
1. Имя должно быть не длиннее 25 символов.
2. Имя не должно начинаться с пробела, однако может содержать пробелы. Однако, если Вы предполагаете в будущем переносить базу данных в другие форматы, разумнее будет избегать включения пробелов в название поля. Фактически, в целях переносимости лучше ограничиться девятью символами в названии поля, не включая в него пробелы.
3. Имя не должно содержать квадратные [], круглые () или фигурные {} скобки, символ тире -, а также комбинацию символов “тире” и “больше” (->).
4. Имя не должно быть только символом #, хотя этот символ может присутствовать в имени среди других символов. Хотя Paradox поддерживает точку (.) в названии поля, лучше ее избегать, поскольку точка зарезервирована в Delphi для других целей.
Типы полей очень сильно различаются друг от друга, в зависимости от формата таблицы. Cписки типов полей, характерные для форматов Paradox приводятся в таблице 1.
|
|
|
Таблица 1.
Списки типов полей, характерные для форматов Paradox.
| Тип поля | Характеристика |
| A lpha | строка длиной 1-255 байт, содержащая любые печатаемые символы |
| N umber | числовое поле длиной 8 байт, значение которого может быть положительным и отрицательным. Диапазон чисел - от 10-308 до 10308 с 15 значащими цифрами |
| $ (Money) | числовое поле, значение которого может быть положительным и отрицательным. По умолчанию, является форматированным для отображения десятичной точки и денежного знака |
| L ogical | поле длиной 1 байт, которое может содержать только два значения - T (true, истина) или F (false, ложь). Допускаются строчные и прописные буквы |
| Продолжение таблицы 1. | |
| # (BCD) | числовое поле, содержащее данные в формате BCD (Binary Coded Decimal). Скорость вычислений немного меньше, чем в других числовых форматах, однако точность - гораздо выше. Может иметь 0-32 цифр после десятичной точки |
| D ate | поле даты длиной 4 байта, которое может содержать дату от 1 января 9999 г. до нашей эры - до 31 декабря 9999 г. нашей эры. Корректно обрабатывает високосные года и имеет встроенный механизм проверки правильности даты |
| M emo | поле для хранения символов, суммарная длина которых более 255 байт. Может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (1-240) - остальные символы сохраняются в отдельном файле с расширением.MB |
| F ormatted Memo | поле, аналогичное Memo, с добавлением возможности задавать шрифт текста. Также может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (0-240) - остальные символы сохраняются в отдельном файле с расширением.MB. Однако Delphi в стандартной поставке не обладает возможностью работать с полями типа Formatted Memo |
| Продолжение таблицы 1. | |
| B inary | поле, содержащее любую двоичную информацию. Может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (0-240) - остальные символы сохраняются в отдельном файле с расширением.MB. |
| O LE | поле, содержащее OLE-данные (Object Linking and Embedding) - образы, звук, видео, документы - которые для своей обработки вызывают создавшее их приложение. Может иметь любую длину. Смысл размера - такой же, как и в Formatted Memo. Database Desktop “умеет” создавать поля типа OLE, однако наполнять их можно только в приложении. Delphi “напрямую” не умеет работать с OLE-полями, но это легко обходится путем использования потоков |
| @ (Timestamp) | обобщенное поле даты длиной 8 байт - содержит и дату и время |
| + (Autoincrement) | поле длиной 4 байта, содержащее нередактируемое (read-only) значение типа long integer. Значение этого поля автоматически увеличивается (начиная с 1) с шагом 1 - это очень удобно для создания уникального идентификатора записи (физический номер записи не может служить ее идентификатором, поскольку в Paradox таковой отсутствует. |
| B y tes | строка цифр длиной 1-255 байт, содержащая любые данные |
| Продолжение таблицы 1. | |
| 1 | |
| Long I nteger | числовое поле длиной 4 байта, которое может содержать целые числа в диапазоне от -2147483648 до 2147483648 |
| S hort | числовое поле длиной 2 байта, которое может содержать только целые числа в диапазоне от -32768 до 32767 |
После создания таблицы, с ней можно связать некоторые свойства, перечень которых зависит от формата таблицы. Так, для таблиц формата Paradox можно задать:
|
|
|
· Validity Checks (проверка правильности) - относится к полю записи и определяет минимальное и максимальное значение, а также значение по умолчанию. Кроме того, позволяет задать маску ввода.
· Table Lookup (таблица для “подсматривания”) - позволяет вводить значение в таблицу, используя уже существующее значение в другой таблице.
· Secondary Indexes (вторичные индексы) - позволяют получать доступ к данным в порядке, отличном от порядка, задаваемого первичным ключом.
· Password Security (парольная защита) - позволяет закрыть таблицу паролем.
· Table Language (язык таблицы) - позволяет задать для таблицы языковый драйвер.
· Referential Integrity (ссылочная целостность) - позволяет задать связи между таблицами и поддерживать эти связи на уровне ядра для сохранения целостности базы данных. Обычно задается после создания всех таблиц в базе данных.
Для поддержания ссылочной целостности данных во многих СУБД имеется механизм так называемых внешних ключей. Смысл этого механизма состоит в том, что некоему атрибуту (или группе атрибутов) одного отношения назначается ссылка на первичный ключ другого отношения; тем самым закрепляются связи подчиненности между этими отношениями. При этом отношение, на первичный ключ которого ссылается внешний ключ другого отношения, называется master-отношением, или главным отношением; а отношение, от которого исходит ссылка, называется detail-отношением, или подчиненным отношением. После назначения такой ссылки СУБД имеет возможность автоматически отслеживать вопросы “ненарушения“ связей между отношениями, а именно:
· если попытаться вставить в подчиненную таблицу запись, для внешнего ключа которой не существует соответствия в главной таблице (например, там нет еще записи с таким первичным ключом), СУБД сгенерирует ошибку;
· если попытаться удалить из главной таблицы запись, на первичный ключ которой имеется хотя бы одна ссылка из подчиненной таблицы, СУБД также сгенерирует ошибку.
· если попытаться изменить первичный ключ записи главной таблицы, на которую имеется хотя бы одна ссылка из подчиненной таблицы, СУБД также сгенерирует ошибку.
|
|
|
Задание 4. Установка ссылочной целостности.
1. Выберите опцию «File» - «Open» - «Table». Затем откройте таблицу Cootvet.
2. Выполните последовательность действий «Table» - «Restructure».
3. В «Table properties» выберите пункт Referential Integrity. Нажмите кнопку Define.
4. Двойным щелчком мыши выберите в поле Fields: NomBrig, а в поле Table: Brigada.db. С помощью черных стрелочек установите нужную связь между атрибуами NomBrig таблиц Brigada.db и Cootvet.db.

Рис. 7. Установка связи между полями таблиц.
5. Нажмите OK и сохраните под именем е1.
6. Также выполните для NomOb (Fields: NomOb и Table: Obgekt.db), сохранив под именем е2.
7. Таким же образом установите связь между полями NomBrig в таблицах Rabohie.db и Brigada.db
8. Закройте Database Desktop.