 Добро пожаловать,
|
|
|
|
|
|
Книги-online
Delphi Client/Server Edition Preview
32 урока по Delphi
Урок
17: Создание таблиц с помощью Database Desktop
Содержание урока 17:
Обзор
Утилита Database Desktop
Заключение
Обзор
На данном уроке мы изучим, как создавать таблицы базы данных
с помощью утилиты Database Desktop, входящей в поставку Delphi. Хотя для
создания таблиц можно использовать различные средства (SQL - компонент
TQuery
и WISQL, компонент TTable),
применение этой утилиты позволяет создавать таблицы в интерактивном режиме
и сразу же просмотреть их содержимое - и все это для большого числа форматов.
Это особенно удобно для локальных баз данных, в частности Paradox и dBase.
Утилита
Database Desktop
Database Desktop - это утилита,
во многом похожая на Paradox, которая поставляется вместе с Delphi для
интерактивной работы с таблицами различных форматов локальных баз данных
- Paradox и dBase, а также SQL-серверных баз данных InterBase, Oracle,
Informix, Sybase (с использованием SQL Links). Исполняемый файл утилиты
называется DBD.EXE, расположен он, как правило, в директории, называемом
DBD (при установке по умолчанию). Для запуска Database Desktop просто дважды
щелкните по ее иконке.
После старта Database Desktop
выберите команду меню File|New|Table для создания новой таблицы. Перед
Вами появится диалоговое окно выбора типа таблицы, как показано на рис.1.
Вы можете выбрать любой формат из предложенного, включая различные версии
одного и того же формата.
После выбора типа таблицы
Database Desktop представит Вам диалоговое окно, специфичное для каждого
формата, в котором Вы сможете определить поля таблицы и их тип, как показано
на рис.2.
Имя поля в таблице формата
Paradox представляет
собой строку, написание которой подчиняется следующим правилам:
-
Имя должно быть не длиннее 25
символов.
-
Имя не должно начинаться с пробела,
однако может содержать пробелы. Однако, если Вы предполагаете в будущем
переносить базу данных в другие форматы, разумнее будет избегать включения
пробелов в название поля. Фактически, в целях переносимости лучше ограничиться
девятью символами в названии поля, не включая в него пробелы.
-
Имя не должно содержать квадратные,
круглые или фигурные скобки [],
() или {},
тире, а также комбинацию символов “тире” и “больше” (->).
-
Имя не должно быть только символом
#,
хотя этот символ может присутствовать в имени среди других символов. Хотя
Paradox поддерживает точку (.)
в названии поля, лучше ее избегать, поскольку точка зарезервирована в Delphi
для других целей.
Имя поля в таблице формата dBase
представляет собой строку, написание которой подчиняется правилам, отличным
от Paradox:
-
Имя должно быть не длиннее 10
символов.
-
Пробелы в имени недопустимы.
Таким образом, Вы видите, что
имена полей в формате dBase подчиняются гораздо более строгим правилам,
нежели таковые в формате Paradox. Однако, мы еще раз хотим подчеркнуть,
что если перед Вами когда-либо встанут вопросы совместимости, то лучше
сразу закладывать эту совместимость - давать полям имена, подчиняющиеся
более строгим правилам.
Укажем еще правила, которым
подчиняется написание имен полей в формате InterBase.
-
Имя должно быть не длиннее 31
символа.
-
Имя должно начинаться с букв
A-Z,
a-z.
-
Имя поля может содержать буквы
(A-Z,
a-z),
цифры, знак $
и символ подчеркивания (_).
-
Пробелы в имени недопустимы.
-
Для имен таблиц запрещается
использовать зарезервированные слова InterBase.
Следующий (после выбора имени
поля) шаг состоит в задании типа поля. Типы полей очень сильно различаются
друг от друга, в зависимости от формата таблицы. Для получения списка типов
полей перейдите к столбцу “Type”, а затем нажмите пробел или щелкните правой
кнопкой мышки. Приведем списки типов полей, характерные для форматов Paradox,
dBase и InterBase.
Итак, поля таблиц формата
Paradox могут иметь следующий тип (для ввода типа поля можно набрать только
подчеркнутые буквы или цифры):
Табл. A: Типы полей
формата Paradox
Alpha |
строка длиной
1-255 байт, содержащая любые печатаемые символы |
Number |
числовое поле
длиной 8 байт, значение которого может быть положительным и отрицательным.
Диапазон чисел - от 10-308 до 10308 с 15 значащими
цифрами |
$
(Money) |
числовое поле,
значение которого может быть положительным и отрицательным. По умолчанию,
является форматированным для отображения десятичной точки и денежного знака |
Short |
числовое поле
длиной 2 байта, которое может содержать только целые числа в диапазоне
от -32768 до 32767 |
Long
Integer |
числовое поле
длиной 4 байта, которое может содержать целые числа в диапазоне от -2147483648
до 2147483648 |
#
(BCD) |
числовое поле,
содержащее данные в формате BCD (Binary Coded Decimal). Скорость вычислений
немного меньше, чем в других числовых форматах, однако точность - гораздо
выше. Может иметь 0-32 цифр после десятичной точки |
Date |
поле даты длиной
4 байта, которое может содержать дату от 1 января 9999 г. до нашей эры
- до 31 декабря 9999 г. нашей эры. Корректно обрабатывает високосные года
и имеет встроенный механизм проверки правильности даты |
Time |
поле времени
длиной 4 байта, содержит время в миллисекундах от полуночи и ограничено
24 часами |
@
(Timestamp) |
обобщенное
поле даты длиной 8 байт - содержит и дату и время |
Memo |
поле для хранения
символов, суммарная длина которых более 255 байт. Может иметь любую длину.
При этом размер, указываемый при создании таблицы, означает количество
символов, сохраняемых в таблице (1-240) - остальные символы сохраняются
в отдельном файле с расширением .MB |
Formatted
Memo |
поле, аналогичное
Memo, с добавлением возможности задавать шрифт текста. Также может иметь
любую длину. При этом размер, указываемый при создании таблицы, означает
количество символов, сохраняемых в таблице (0-240) - остальные символы
сохраняются в отдельном файле с расширением .MB. Однако, Delphi в стандартной
поставке не обладает возможностью работать с полями типа Formatted Memo |
Graphic |
поле, содержащее
графическую информацию. Может иметь любую длину. Смысл размера - такой
же, как и в Formatted Memo. Database Desktop “умеет” создавать поля типа
Graphic, однако наполнять их можно только в приложении |
OLE |
поле, содержащее
OLE-данные (Object Linking and Embedding) - образы, звук, видео, документы
- которые для своей обработки вызывают создавшее их приложение. Может иметь
любую длину. Смысл размера - такой же, как и в Formatted Memo. Database
Desktop “умеет” создавать поля типа OLE, однако наполнять их можно только
в приложении. Delphi “напрямую” не умеет работать с OLE-полями, но это
легко обходится путем использования потоков |
Logical |
поле длиной
1 байт, которое может содержать только два значения - T (true, истина)
или F (false, ложь). Допускаются строчные и прописные буквы |
+
(Autoincrement) |
поле длиной
4 байта, содержащее нередактируемое (read-only) значение типа long integer.
Значение этого поля автоматически увеличивается (начиная с 1) с шагом 1
- это очень удобно для создания уникального идентификатора записи (физический
номер записи не может служить ее идентификатором, поскольку в Парадоксе
таковой отсутствует. В InterBase также отсутствуют физические номера записей,
но отсутствует и поле Autoincrement.
Его с успехом заменяет встроенная функция Gen_id, которую удобней
всего применять в триггерах) |
Binary |
поле, содержащее
любую двоичную информацию. Может иметь любую длину. При этом размер, указываемый
при создании таблицы, означает количество символов, сохраняемых в таблице
(0-240) - остальные символы сохраняются в отдельном файле с расширением
.MB. Это полнейший аналог поля BLOb в InterBase |
Bytes |
строка цифр
длиной 1-255 байт, содержащая любые данные |
Поля таблиц формата dBase
могут иметь следующий тип (для ввода типа поля можно набрать только подчеркнутые
буквы или цифры):
Табл. B: Типы полей
формата dBase
Character
(alpha)строка длиной 1-254 байт, содержащая
любые печатаемые символы |
|
Float
(numeric) |
числовое поле
размером 1-20 байт в формате с плавающей точкой, значение которого может
быть положительным и отрицательным. Может содержать очень большие величины,
однако следует иметь в виду постоянные ошибки округления при работе с полем
такого типа. Число цифр после десятичной точки (параметр Dec в DBD) должно
быть по крайней мере на 2 меньше, чем размер всего поля, поскольку в общий
размер включаются сама десятичная точка и знак |
Number
(BCD) |
числовое поле
размером 1-20 байт, содержащее данные в формате BCD (Binary Coded Decimal).
Скорость вычислений немного меньше, чем в других числовых форматах, однако
точность - гораздо выше. Число цифр после десятичной точки (параметр Dec
в DBD) также должно быть по крайней мере на 2 меньше, чем размер всего
поля, поскольку в общий размер включаются сама десятичная точка и знак |
Date |
поле даты длиной
8 байт. По умолчанию, используется формат короткой даты (ShortDateFormat) |
Logical |
поле длиной
1 байт, которое может содержать только значения “истина” или “ложь” - T,t,Y,y
(true, истина) или F,f,N,n (false, ложь). Допускаются строчные и
прописные буквы. Таким образом, в отличие от Парадокса, допускаются буквы
“Y” и “N” (сокращение от Yes и No) |
Memo |
поле для хранения
символов, суммарная длина которых более 255 байт. Может иметь любую длину.
Это поле хранится в отдельном файле. Database Desktop не имеет возможности
вставлять данные в поле типа Memo |
OLE |
поле, содержащее
OLE-данные (Object Linking and Embedding) - образы, звук, видео, документы
- которые для своей обработки вызывают создавшее их приложение. Может иметь
любую длину. Это поле также сохраняется в отдельном файле. Database Desktop
“умеет” создавать поля типа OLE, однако наполнять их можно только в приложении.
Delphi “напрямую” не умеет работать с OLE-полями, но это легко обходится
путем использования потоков |
Binary |
поле, содержащее
любую двоичную информацию. Может иметь любую длину. Данное поле сохраняется
в отдельном файле с расширением .DBT. Это полнейший аналог поля BLOb в
InterBase |
Поля таблиц формата InterBase
могут иметь следующий тип:
Табл. C: Типы полей
формата InterBase
SHORT |
числовое поле
длиной 2 байта, которое может содержать только целые числа в диапазоне
от -32768 до 32767 |
LONG |
числовое поле
длиной 4 байта, которое может содержать целые числа в диапазоне от -2147483648
до 2147483648 |
FLOAT |
числовое поле
длиной 4 байта, значение которого может быть положительным и отрицательным.
Диапазон чисел - от 3.4*10-38 до 3.4*1038 с 7 значащими
цифрами |
DOUBLE |
числовое поле
длиной 8 байт (длина зависит от платформы), значение которого может быть
положительным и отрицательным. Диапазон чисел - от 1.7*10-308
до 1.7*10308 с 15 значащими цифрами |
CHAR |
строка символов
фиксированной длины (0-32767 байт), содержащая любые печатаемые символы.
Число символов зависит от Character Set, установленного в InterBase для
данного поля или для всей базы данных (например, для символов в кодировке
Unicode число символов будет в два раза меньше длины строки) |
VARCHAR |
строка символов
переменной длины (0-32767 байт), содержащая любые печатаемые символы. Число
символов также зависит от Character Set, установленного в InterBase для
данного поля или для всей базы данных |
DATE |
поле даты длиной
8 байт, значение которого может быть от 1 января 100 года до 11 декабря
5941 года (время также содержится) |
BLOB |
поле, содержащее
любую двоичную информацию. Может иметь любую длину. Database Desktop не
имеет возможности редактировать поля типа BLOB |
ARRAY |
поле, содержащее
массивы данных. InterBase позволяет определять массивы, имеющие размерность
16. Поле может иметь любую длину. Однако, Database Desktop не имеет возможности
не только редактировать поля типа ARRAY, но и создавать их |
TEXT
BLOB |
подтип BLOB-поля,
содержащее только текстовую информацию. Может иметь любую длину. Database
Desktop не имеет возможности редактировать поля типа TEXT BLOB |
Итак, мы изучили все типы
полей, являющиеся “родными” для Delphi.
После этого для таблиц
Paradox мы можем определить поля, составляющие первичный ключ, причем
все они должны быть в начале записи, а первое поле, входящее в ключ, должно
быть первым полем в записи. Для этого достаточно по ней дважды щелкнуть
мышкой или нажать любую клавишу.
После создания таблицы, с
ней можно связать некоторые свойства, перечень которых зависит от формата
таблицы. Так, для таблиц формата Paradox можно задать:
-
Validity Checks (проверка
правильности) - относится к полю записи и определяет минимальное и максимальное
значение, а также значение по умолчанию. Кроме того, позволяет задать маску
ввода
-
Table Lookup (таблица
для “подсматривания”) - позволяет вводить значение в таблицу, используя
уже существующее значение в другой таблице
-
Secondary Indexes (вторичные
индексы) - позволяют доступаться к данным в порядке, отличном от порядка,
задаваемого первичным ключом
-
Referential Integrity
(ссылочная целостность) - позволяет задать связи между таблицами и поддерживать
эти связи на уровне ядра. Обычно задается после создания всех таблиц в
базе данных
-
Password Security (парольная
защита) - позволяет закрыть таблицу паролем
-
Table Language (язык
таблицы) - позволяет задать для таблицы языковый драйвер.
В таблицах dBase
не существует первичных ключей. Однако, это обстоятельство можно преодолеть
путем определения уникальных (Unique) и поддерживаемых (Maintained) индексов
( Indexes). Кроме
того, для таблиц dBase можно определить и язык таблицы (Table
Language) - языковый драйвер, управляющий
сортировкой и отображением символьных данных.
Определения дополнительных
свойств таблиц всех форматов доступны через кнопку “Define” (для таблиц
InterBase данная кнопка называется “Define Index...” и позволяет определять
лишь только индекс, но не первичный ключ) в правой верхней части окна (группа
Table Properties). Причем, все эти действия можно проделывать не только
при создании таблицы, но и тогда, когда она уже существует. Для этого используется
команда Table|Restructure Table (для открытой в данный момент таблицы)
или Utilities|Restructure (с возможностью выбора таблицы). Однако, если
Вы желаете изменить структуру или добавить новые свойства для таблицы,
которая в данный момент уже используется другим приложением, Database Desktop
откажет Вам в этом, поскольку данная операция требует монопольного доступа
к таблице. Но зато все произведенные в структуре изменения сразу же начинают
“работать” - например, если Вы определите ссылочную целостность для пары
таблиц, то при попытке вставить в дочернюю таблицу данные, отсутствующие
в родительской таблице, в Delphi возникнет исключительное состояние.
В заключение отметим еще
часто используемую очень полезную возможность Database Desktop. Создавать
таблицу любого формата можно не только “с чистого листа”, но и путем
копирования структуры уже существующей таблицы. Для этого достаточно воспользоваться
кнопкой “Borrow”, имеющейся в левом нижнем углу окна. Появляющееся диалоговое
окно позволит Вам выбрать существующую таблицу и включить/выключить дополнительные
опции, совпадающие с уже перечисленными свойствами таблиц. Это наиболее
легкий способ создания таблиц.
Заключение
Итак, на данном уроке мы познакомились со штатной утилитой,
используемой для интерактивного создания и модификации таблиц различной
структуры. И хотя управление таблицами можно осуществлять с помощью различных
средств (SQL-скрипт в WISQL, компонент TTable,
компонент TQuery),
данная утилита позволяет делать это в интерактивном режиме наиболее простым
способом.
Внимание! Если у вас не получилось найти нужную информацию, используйте рубрикатор или воспользуйтесь поиском
.
книги по программированию исходники компоненты шаблоны сайтов C++ PHP Delphi скачать
|
|