Полезная при создании таблиц информация

 

Имя поля в таблице формата Paradox представляет собой строку, написание которой подчиняется следующим правилам:

1. Имя должно быть не длиннее 25 символов.

2. Имя не должно начинаться с пробела, однако может содержать пробелы. Однако, если Вы предполагаете в будущем переносить базу данных в другие форматы, разумнее будет избегать включения пробелов в название поля. Фактически, в целях переносимости лучше ограничиться девятью символами в названии поля, не включая в него пробелы.

3. Имя не должно содержать квадратные [], круглые () или фигурные {} скобки, символ тире -, а также комбинацию символов “тире” и “больше” (->).

4. Имя не должно быть только символом #, хотя этот символ может присутствовать в имени среди других символов. Хотя Paradox поддерживает точку (.) в названии поля, лучше ее избегать, поскольку точка зарезервирована в Delphi для других целей.

Типы полей очень сильно различаются друг от друга, в зависимости от формата таблицы. Cписки типов полей, характерные для форматов Paradox приводятся в таблице 1.

Таблица 1.

Списки типов полей, характерные для форматов Paradox.

Тип поля Характеристика
Alpha строка длиной 1-255 байт, содержащая любые печатаемые символы
Number числовое поле длиной 8 байт, значение которого может быть положительным и отрицательным. Диапазон чисел - от 10-308 до 10308 с 15 значащими цифрами
$ (Money) числовое поле, значение которого может быть положительным и отрицательным. По умолчанию, является форматированным для отображения десятичной точки и денежного знака
Logical поле длиной 1 байт, которое может содержать только два значения - T (true, истина) или F (false, ложь). Допускаются строчные и прописные буквы
  Продолжение таблицы 1.
# (BCD) числовое поле, содержащее данные в формате BCD (Binary Coded Decimal). Скорость вычислений немного меньше, чем в других числовых форматах, однако точность - гораздо выше. Может иметь 0-32 цифр после десятичной точки
Date поле даты длиной 4 байта, которое может содержать дату от 1 января 9999 г. до нашей эры - до 31 декабря 9999 г. нашей эры. Корректно обрабатывает високосные года и имеет встроенный механизм проверки правильности даты
Memo поле для хранения символов, суммарная длина которых более 255 байт. Может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (1-240) - остальные символы сохраняются в отдельном файле с расширением .MB
Formatted Memo поле, аналогичное Memo, с добавлением возможности задавать шрифт текста. Также может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (0-240) - остальные символы сохраняются в отдельном файле с расширением .MB. Однако Delphi в стандартной поставке не обладает возможностью работать с полями типа Formatted Memo
  Продолжение таблицы 1.
Binary поле, содержащее любую двоичную информацию. Может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (0-240) - остальные символы сохраняются в отдельном файле с расширением .MB.
OLE поле, содержащее OLE-данные (Object Linking and Embedding) - образы, звук, видео, документы - которые для своей обработки вызывают создавшее их приложение. Может иметь любую длину. Смысл размера - такой же, как и в Formatted Memo. Database Desktop “умеет” создавать поля типа OLE, однако наполнять их можно только в приложении. Delphi “напрямую” не умеет работать с OLE-полями, но это легко обходится путем использования потоков
@ (Timestamp) обобщенное поле даты длиной 8 байт - содержит и дату и время
+ (Autoincrement) поле длиной 4 байта, содержащее нередактируемое (read-only) значение типа long integer. Значение этого поля автоматически увеличивается (начиная с 1) с шагом 1 - это очень удобно для создания уникального идентификатора записи (физический номер записи не может служить ее идентификатором, поскольку в Paradox таковой отсутствует.
Bytes строка цифр длиной 1-255 байт, содержащая любые данные
  Продолжение таблицы 1.
1
   
Long Integer числовое поле длиной 4 байта, которое может содержать целые числа в диапазоне от -2147483648 до 2147483648
Short числовое поле длиной 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.