Важным моментом при
создании базы данных является распределение информации между полями записи.
Очевидно, что информация может быть распределена между полями различным образом.
Например, сведения
об исторических памятниках Санкт-Петербурга могут быть организованы в виде записей,
состоящих из полей "Памятник" и "Историческая справка" или
из полей "Памятник", "Архитектор", "Год" и "Историческая
справка".
В первом варианте поле
"Памятник" будет содержать название памятника, например Эрмитаж, а
поле "Историческая справка" - - всю остальную информацию. При этом
пользователь сможет найти информацию об интересующем его памятнике только по
названию. При втором варианте организации записи пользователь сможет найти информацию
о памятниках, архитектором которых является конкретный зодчий, или о памятниках,
возведенных в данный исторический период.
Можно сформулировать
следующее правило: если предполагается, что во время использования базы данных
будет выполняться выборка информации по некоторому критерию, то информацию,
обеспечивающую возможность этой выборки, следует поместить в отдельное поле.
После того как определены
поля записи, необходимо выполнить распределение полей по таблицам. В простой
базе данных все поля можно разместить в одной таблице. В сложной базе данных
поля распределяют по нескольким таблицам, и вводом некоторой дополнительной
информации, однозначно идентифицирующей каждую запись, обеспечивается связь
между таблицами.
Примечание
Базы данных, состоящие из нескольких, связанных между собой таблиц, называются реляционными. В реляционных базах данных, для того чтобы избежать дублирования информации в таблицах, к основной информации добавляется некоторая служебная информация, которая однозначно идентифицирует запись. Подробное рассмотрение организации реляционных баз данных в задачу этой книги не входит. Читатель может самостоятельно ознакомиться с вопросами организации реляционных баз данных, обратившись к литературе.
После того как определена
структура записей базы данных, можно приступить непосредственно к созданию таблицы.
Таблицы создаются при помощи входящей в состав Delphi утилиты Database Desktop.
Утилита Database Desktop
позволяет выполнять все необходимые при работе с базами данных действия. Она
обеспечивает создание, просмотр и модификацию таблиц баз данных различных форматов
(Paradox, dBASE, Microsoft Access). Кроме того, утилита позволяет выполнять
выборку информации путем создания запросов.
Для того чтобы создать
новую таблицу, нужно выбором из меню Tools команды Database Desktop запустить
Database Desktop. Затем в появившемся окне утилиты Database Desktop надо из
меню File выбрать команду New и в появившемся списке выбрать тип создаваемого
файла — Table. Затем в открывшемся диалоговом окне Create Table
следует выбрать тип создаваемой таблицы (значением по умолчанию является тип
Paradox 7).
В результате открывается
диалоговое окно Create Paradox 7 Table,
в котором можно определить структуру записей таблицы.
Для каждого поля таблицы
необходимо задать имя, тип и, если нужно, размер поля. Имя поля используется
для доступа к данным. В качестве имени поля, которое вводится в колонку Field
Name, можно использовать последовательность из букв латинского алфавита
и цифр длиной не более 25 символов.
Тип поля определяет
тип данных, которые могут быть помещены в поле. Тип задается вводом в колонку
Туре символьной константы. Типы полей и соответствующие им константы приведены
в табл. 17.1.
Таблица 17.1.
Тип поля определяет тип информации, которая может в нем находиться
Тип |
Константа |
Содержимое поля |
||
Alpha |
A |
Строка символов. Максимальная
длина строки определяется характеристикой Size, значения которой находятся
в диапазоне 1—255 |
||
Number |
N |
Число из диапазона 10-307—
10308 с 15-ю значащими цифрами |
||
Money |
$ |
Число в денежном формате.
Цифры числа делятся на группы при помощи разделителя групп разрядов.
Также выводится знак денежной единицы |
||
Short |
S |
Целое число из диапазона
-32767—32767 |
||
Long Integer |
I |
Целое число из диапазона
-2 147 483 648-2 147 483 647 |
||
Date |
D |
Дата |
||
Time |
Т |
Время с полуночи, выраженное
в миллисекундах |
||
Time stamp |
@ |
Время и дата |
||
Memo |
M |
Строка символов произвольной
длины. Поле типа Memo используется для хранения текстовой информации,
которая не может быть сохранена в поле типа Alpha. Размер поля (1—240)
определяет, сколько символов хранится в таблице. Остальные символы
хранятся в файле, имя которого совпадает с именем файла таблицы, а
расширение файла — mb |
||
Formatted Memo |
F |
Строка символов произвольной
длины (как у типа Memo). Имеется возможность указать тип и размер
шрифта, способ оформления и цвет символов |
||
Graphic |
G |
Графика |
||
Logical |
L |
Логическое значение "истина"
(True) или "ЛОЖЬ" (False) |
||
Auto-increment |
+ |
Целое число. При добавлении
к таблице очередной записи в поле записывается число на единицу большее,
чем находится в соответствующем поле последней добавленной записи |
||
Тип |
Константа |
Содержимое поля | ||
Bytes |
Y |
Двоичные данные. Поле
этого типа используется для хранения данных, которые не могут быть
интерпретированы Database Desktop |
||
Binary |
В |
Двоичные данные. Поле
этого типа используется для хранения данных, которые не могут быть
интерпретированы Database Desktop. Как и данные типа Memo, эти данные
не находятся в файле таблицы. Поля типа Binary, как правило, содержат
audio-данные |
||
Константа, определяющая
тип поля, может быть введена с клавиатуры или путем выбора типа поля из списка,
который появляется при щелчке правой кнопкой мыши в колонке Туре или
при нажатии клавиши < Пробел >.
Одно или несколько
полей можно пометить как ключевые. Ключевое поле определяет логический порядок
следования записей в таблице. Например, если символьное (тип Alpha) поле Fam
(Фамилия) пометить как ключевое, то при выводе таблицы записи будут упорядочены
в соответствии с алфавитным порядком
фамилий. Если поле Fam не помечать как ключевое, то записи будут выведены в
том порядке, в котором они были введены в таблицу. Следует обратить внимание
на то, что в таблице не может быть двух записей с одинаковым содержимым ключевых
полей. Поэтому в рассматриваемом примере ключевыми полями должны быть поля Fam
(Фамилия) и Name (Имя). Тогда в таблицу можно будет ввести информацию об однофамильцах.
Однако по-прежнему нельзя будет ввести однофамильцев, у которых совпадают имена.
Поэтому в качестве ключевого поля обычно выбирают поле, которое содержит уникальную
информацию. Для таблицы, содержащей список людей, в качестве ключевого можно
выбрать поле Pasp (Паспорт).
Для того чтобы пометить
поле как ключевое, необходимо выполнить двойной щелчок в колонке Key. Следует
обратить внимание на то, что ключевые поля должны быть сгруппированы в верхней
части таблицы.
Если данные, для хранения
которых предназначено поле, должны обязательно присутствовать в записи, то следует
установить флажок Required Field. Например, очевидно, что поле Fam (Фамилия)
обязательно должно быть заполнено, в то время как поле Tel (Телефон) может оставаться
пустым.
Если значение, записываемое
в поле, должно находиться в определенном диапазоне, то вводом значений в поля
Minimum value (Минимальное значение) и Maximum value (Максимальное
значение) можно задать границы диапазона.
Поле Default value
позволяет задать значение по умолчанию, которое будет автоматически записываться
в поле при добавлении к таблице новой записи.
Поле Picture позволяет
задать шаблон, используя который можно контролировать правильность вводимой
в поле информации. Шаблон представляет собой последовательность обычных и специальных
символов. Специальные символы перечислены в табл. 17.2.
Во время ввода информации
в позицию поля, которой соответствует специальный символ, будут появляться только
символы, допустимые для данного символа шаблона. Например, если в позиции шаблона
стоит символ #, то в соответствующую этому символу позицию можно ввести только
цифру. Если в позиции шаблона стоит обычный символ, то во время ввода информации
в данной позиции будет автоматически появляться указанный символ.
Например, пусть поле
Tel типа А (строка символов) предназначено для хранения номера телефона, и программа,
работающая с базой данных, предполагает, что номер телефона должен быть представлен
в обычном виде, т. е. в виде последовательности сгруппированных, разделенных
дефисами цифр. В этом случае в поле Picture следует записать шаблон:
###-##-##. При вводе информации в поле Tel будут появляться только цифры (нажатия
клавиш с другими символами игнорируются), причем после ввода третьей и пятой
цифр в поле будут автоматически добавлены дефисы.
Таблица 17.2.
Специальные символы, используемые при
записи шаблонов
Символ шаблона |
Допустимый при вводе
символ |
||
*
& @
*. |
Цифра Любая буква (прописная
или строчная) Любая буква (автоматически преобразуется в прописную)
Любая буква (автоматически преобразуется в строчную) Любой символ Любой символ (если введена
буква, то она автоматически преобразуется в прописную) Символ, следующий за символом
"точка с запятой", интерпретируется как обычный символ,
а не символ шаблона Любое количество повторяющихся,
определяемых следующим за "звездочкой" символом шаблона |
||
Некоторые элементы
данных поля могут быть необязательными, например, код города для номера телефона.
Элементы шаблона, обеспечивающие ввод необязательных данных, заключают в квадратные
скобки. Например, шаблон [(###)]###-##-## позволяет вводить в поле номер телефона
как с заключенным в скобки кодом города, так и без кода.
Шаблоны позволяют не
только контролировать правильность вводимых в поле данных путем блокирования
ввода неверных символов, но и обеспечивают автоматизацию ввода данных. Это достигается
путем указания в шаблоне в квадратных или фигурных скобках списка допустимых
значений содержимого поля.
Например, если для
поля Address задать шаблон
{Санкт-Петербург, Москва, Воронеж}*@ или [Санкт-Петербург, Москва, Воронеж]*@,
то во время ввода данных в это поле название соответствующего города будет появляться
сразу после ввода одной из букв: с, м или в. Отличие фигурных скобок от квадратных
и, следовательно, этих шаблонов друг от друга состоит в том, что в первом шаблоне
содержимое поля обязательно должно начинаться с названия одного из перечисленных
в списке городов, а во втором — город может называться по-другому, однако его
название придется вводить полностью.
После того как будет
определена структура таблицы, таблицу следует сохранить. Для этого необходимо
нажать кнопку Save As. В результате открывается окно Save Table As.
В этом окне из списка Alias нужно выбрать псевдоним базы данных, частью
которой является созданная таблица, а в поле Имя файла ввести имя файла,
в котором нужно сохранить созданную таблицу.
Если перед тем как
нажать кнопку Сохранить установить флажок Display table, то в
результате нажатия кнопки Сохранить открывается диалоговое окно Table
, в котором можно ввести данные в только что созданную таблицу.
Если таблица базы данных
недоступна, то для того чтобы ввести данные в таблицу, таблицу нужно открыть.
Для этого надо из меню File выбрать команду Open | Table, затем
в появившемся диалоговом окне Open table в списке Alias выбрать
псевдоним нужной базы данных и таблицу. Следует обратить внимание, что таблица
будет открыта в режиме просмотра, в котором изменить содержимое таблицы нельзя.
Для того чтобы в таблицу можно было вводить данные, нужно активизировать режим
редактирования таблицы, для чего необходимо из меню Table выбрать команду
Edit Data.
Данные в поля записи
вводятся с клавиатуры обычным образом. Для перехода к следующему полю нужно
нажать клавишу <Enter>. Если поле является последним полем последней записи,
то в результате нажатия клавиши <Enter> в таблицу будет добавлена еще
одна запись.
Если во время заполнения
таблицы необходимо внести изменения в какое-то уже заполненное поле, то следует
выбрать это поле, воспользовавшись клавишами перемещения курсора, нажать клавишу
<F2> и внести нужные изменения.
Если при вводе данных в таблицу буквы русского алфавита отображаются неверно, то надо изменить шрифт, используемый для отображения данных. Для этого необходимо в меню Edit выбрать команду Preferences и в появившемся диалоговом окне, во вкладке General, щелкнуть на кнопке Change. В результате этих действий откроется диалоговое окно Change Font, в котором нужно выбрать русифицированный шрифт. Следует обратить внимание, что в Windows 2000 (Windows XP) используются шрифты типа Open Type, в то время как программа Database Desktop ориентирована на работу со шрифтами TrueType. Поэтому в списке шрифтов нужно выбрать русифицированный шрифт именно TrueType. После этого надо завершить работу с Database Desktop, так как внесенные в конфигурацию изменения будут действительны только после перезапуска утилиты.