NetNado
  Найти на сайте:

Учащимся

Учителям



Создание таблиц баз данных





Лабораторная работа «Создание таблиц баз данных»
Цель работы. Освоить навыки создания таблиц баз данных (БД) системы управления базами данных (СУБД) Paradox, работающей в однопользовательском режиме, в среде программирования Delphi.

Основные сведения, необходимые для выполнения работы

  1. Основные понятия


Приложение Delphi осуществляет доступ к БД через BDE (Borland Database Engine — Процессор баз данных фирмы Borland). BDE представляет собой набор драйверов, обеспечивающих доступ к данным. Система BDE должна устанавливаться на всех компьютерах, на которых работают с БД приложения Delphi. Локальные БД расположены на том же компьютере, что и приложения, работающие с ними (рис.1) [1,2].


Рис.1. Локальная БД


Реляционная БД состоит из взаимосвязанных таблиц. Обычно таблицы, об­разующие БД, находятся в каталоге на жестком диске. Таблицы хранятся в файлах. Они похожи на отдельные документы или электронные таблицы, их можно перемещать и копировать обычным способом, например, с помощью проводника Windows. Для одной таблицы создается несколько файлов, содержащих данные, индексы, ключи и т. п. Имя главного файла таблицы (файла, содержащего данные) — оно же является именем таблицы — задается при создании таблицы. Имена остальных файлов таблицы назначаются автоматически, причем имена всех этих файлов совпадают с именем таблицы, за исключением расширении имен; разные расширения указывают на содержимое соответствующего файлам [2].

Каждая таблица БД, состоящая из строк и столбцов, предназначена для хранения информации об однотипных объектах системы. Строка таблицы называется записью, а столбец таблицы — полем. Каждое поле должно иметь уникальное в пределах таблицы имя. Поле содержит данные одного из допустимых типов. В таблицах могут определяться ключи и индексы. Ключ - это комбинация полей, данные в которых однозначно определяют каждую запись в таблице. Простой ключ состоит из одного поля, а сложный (составной) — из несколь­ких полей. Поля, по которым построен ключ, называются ключевыми. Ключ служит для однозначной идентификации записей таблицы, а также для пре­дотвращения повторения значений ключа. При этом значения отдельных полей составного ключа (но не всех одновременно) могут повторяться. Индекс, как и ключ, строится по полям таблицы, однако он может допускать повторение значений составляющих его полей. Поля, по которым построен ключ, называют индексными. Индексы именуются при их создании. Индекс служит для сортировки таблиц по индексным полям. Кроме того, при исполь­зовании индексирования повышается скорость поиска данных в таблице. В некоторых СУБД (Paradox) индексы хранятся в специальных файлах. Ключевые поля в СУБД обычно автоматически индексируются. В таблицах Paradox ключ также является главным (первичным) индексом, который не именуется [3].

Таблицы Paradox являются достаточно развитыми и удобными при создании БД. Основные достоинства таблиц Paradox:

  • Имеется много различных типов полей для представления данных

  • Поддерживается целостность данных

  • Возможность организации проверки вводимых данных

  • Поддерживается защита таблиц с помощью паролей

В табл.1 представлен список типов полей таблиц Paradox 7. Для каждого типа приводится символ, используемый для обозначения этого типа в про­грамме Database Desktop, а также описание значений, которые может со­держать поле рассматриваемого типа [3].

Таблица 1. Типы полей таблиц Paradox 7


Тип

Обозначение

Описание значения

Alpha

A

Строка символов. Длина не более 255 символов

Number

N

Число с плавающей точкой. Диапазон -10307- 10308 Точность 15 цифр мантиссы

Money

$

Денежная сумма. Отличается от типа Number тем, что в значении отображается денежный знак. Обозначение денежного знака зависит от установок Windows

Short

S

Целое число. Диапазон -32 768— 32 767

Longlnteger

I

Целое число.

Диапазон -2 147 483 648 — 2147483647







Таблица 1. (окончание)

BCD

#

Число в двоично-десятичном формате

Date

D

Дата. Диапазон 01.01.9999 до н.э. . -. 31.12.9999

Time

T

Время

Timestamp

@

Дата и время

Memo

M

Строка символов. Длина не ограничена. Первые 240 символов хранятся в файле таблицы, ос­тальные в файле с расширением MB

Formatted

F

Строка символов. Отличается от типа Memo тем, что строка может содержать форматированный текст

Graphic

G

Графическое изображение. Форматы BMP, PCX, TIP, GIF и EPS. При загрузке в поле изображение преобразуется к формату BMP. Для хранения изображения используется файл с расширением MB

OLE

O

Данные в формате, который поддерживается технологией OLE. Данные хранятся в файле с расширением MB

Logical

L

Логическое значение. Допустимые значение T(Истина) и F (Ложь). Разрешается использование прописных букв

Autoincrement

+

Автоинкрементное поле. При добавлении к таблице новой записи в поле автоматически заносится уникальное значение. При удалении записи значение ее автоинкрементного поля больше не будет использовано. Значение такого поля доступно для чтения и обычно используется в качестве ключевого

Binary

B

Последовательность байтов. Длина не ограничена. Байты содержат произвольное двоичное значение. Первые 240 байт хранятся в файле таблицы, остальные в файле с расширением MB

Bytes

Y

Последовательность байтов. Длина не более 255 байт


Замечание

При работе с таблицей в среде программы Database Desktop значения таких типов, как Graphic, Binary, Memo, OLE не отображаются.
Имя поля в таблице Paradox должно состоять из букв (в том числе из букв кириллицы) и цифр и начинаться с буквы. Максимальная длина имени составляет 25 символов. В имени можно использовать такие символы, "пробел", "#", "$" и некоторые другие. Не рекомендуется применять в имени символы ".", " >" и "|”, так как они зарезервированы в Delphi для других целей [3].

Ключевые поля должны быть первыми в структуре таблицы.
Замечание

Если требуется обеспечить возможность совместимости данных из таблиц Paradox с данными таблиц других форматов, то желательно составлять поля из латинских букв и цифр, длина которого не больше 10 символов.
При поддержке целостности данных обеспечивается правильность ссылок между таблицами. Например, если в БД имеются таблицы, которые могут быть связаны следующим образом: каждая запись главной таблицы ссылается через специальное индексное поле на запись в подчиненной таблице. Если в главной таблице любым способом удалить запись с информацией, то BDE автоматически удалит в подчиненной таблице все соответствующие записи. Подобное удаление взаимосвязанных записей называется каскадным [3].

Для полей можно определить специальный диапазон, в котором должны находиться значения, вводимые в эти поля, а также определить минималь­но и максимально допустимое значение. При попытке ввода в поле значе­ния, выходящего за границы допустимого диапазона, возникнет исключи­тельная ситуация, значение не будет введено и содержимое поля не изменится.

Кроме диапазона допустимых значений, для каждого поля можно задать значение по умолчанию, которое автоматически заносится в поле при до­бавлении к таблице новой записи.

При работе с конфиденциальной информацией может потребоваться защита таблиц и их полей. Для каждой таблицы Paradox можно указать основной па­роль, который используется при изменениях во всей таблице, связанных со сменой структуры таблицы или с редактированием данных в любом поле. Кроме того, возможно задание дополнительного пароля, который позволяет ограничить доступ к конкретному полю или группе полей таблицы, а также ограничить набор операций, применимых к таблице, например, допуская только чтение записей таблицы и не допуская их модификацию. При нали­чии паролей они автоматически запрашиваются и контролируются при по­пытке доступа к таблице [2].

Недостатком таблиц Paradox является наличие относительного большого количества файлов, требуемых для хранения данных, содержащихся в таб­лице. При копировании или перемещении какой-либо таблицы из одного каталога в другой необходимо обеспечить копирование или перемещение всех файлов, относящихся к этой таблице. Файлы таблиц имеют следующие расширения [3]:

  • DB - таблица с данными

  • MB - BLOB-данные

  • РХ - главный индекс (ключ)

  • XG? и YG? - вторичные индексы

  • VAL — параметры для проверки данных и целостности ссылок

  • TV и РАМ — форматы вывода таблицы в программе Database Desktop

Замечание

Указанные файлы создаются при необходимости, конкретная таблица может не иметь всех этих файлов.
2. Средства работы с базами данных
Delphi не имеет своего формата таблиц БД, однако, обеспечивает мощную поддержку многих СУБД. К средствам Delphi, предназначенным для работы с БД, относятся следующие:

  • Инструментальные средства (специальные программы и пакеты, обеспечивающие обслуживание БД вне разрабатываемых приложений)

  • Компоненты, предназначенные для создания приложений, осуществляющих операции с БД.

2.1 Инструментальные средства

Для операций с БД система Delphi предлагает такие инструментальные средства:

  • Borland DataBase Engine (BDE) – процессор баз данных, который представляет собой набор библиотек, предназначенных для организации доступа к БД из приложений Delphi. BDE является центральным звеном, используемым для доступа к данным;

  • BDE Administrator – утилита для настройки BDE. Позволяет настраивать различные параметры БД;

  • Database Desktop – программа для создания и редактирования таблиц, SQL- и QBE- запросов;

  • SQL Explore – проводник БД, позволяющий настраивать параметры БД;

  • SQL Monitor – программа для отслеживания порядка выполнения SQL запросов;

  • SQL Links – драйверы для доступа к удаленным промышленным СУБД;

  • Local InterBase Server – локальная версия SQL-сервера Borland InterBase, которая используется при отладке приложений, предназначенных для работы с удаленными БД в архитектуре клиент-сервер. (После отладки на локальном компьютере приложение может быть перенесено на сетевые компьютеры без изменения, необходимо только установить новые параметры соединения с удаленной БД. Версия сервера рассчитана на два одновременных соединения с сервером.);

  • InterBase Server for Windows 95 – многопользовательская версия SQl – сервера Borland InterBase, рассчитанная на четыре одновременных соединения. В основном используется для отладки приложений.


2.1.1 Программа BDE Administrator
Программа BDE Administrator представляет собой администратор процессора баз данных BDE. BDE позволяет настраивать параметры БД и системные параметры (операционной системы). В их числе в качестве основных можно выделить следующие:

  • Параметры псевдонима БД:

    • Название;

    • Тип;

    • Путь.

  • Параметры драйвера:

    • Тип;

    • Язык.

  • Системные установки:

  • Установки по умолчанию;

  • Форматы даты, времени и числовые форматы.

Для настройки некоторого параметра в левой части окна администратора BDE выбирается нужный объект, после чего в правой части окна становится доступным список параметров этого объекта. Добавить новый объект можно, выбрав в окне администратора пункт меню Object/New (Объект/ Новый).

Работа с псевдонимами. Псевдоним (alias) указывает на местоположение файлов БД и представляет собой специальное имя для обозначения каталога. Использование псевдонимов существенно облегчает перенос файлов БД в другие каталоги и на другие компьютеры. При этом не требуется изменять приложение, которое осуществляет доступ к таблицам БД. Если в приложении расположение таблиц указано с помощью псевдонима, то после перемещения БД для обеспечения работоспособности приложения достаточно изменить путь, на который указывает псевдоним. Если же в приложении путь к БД указан без помощи псевдонима, то после перемещения БД нужно изменять само приложение – вносить изменения в исходный код и заново транслировать [3].

Для добавления нового псевдонима перед вызовом опции Object / New администратора нужно выбрать вкладку Databases в левой части окна, в противном случае команда New будет недоступна. После задания этой команды появляется диалоговое окно (рис. 2), позволяющее выбрать тип драйвера Database Driver Name. Для локальных таблиц Paradox выбирается тип STANDARD.


Рис.2. Выбор типа драйвера


После нажатия OK создается новый псевдоним, и его данные отображаются в окне администратора BDE (рис.3).

Новый псевдоним автоматически получает имя STANDARD1 и параметры по умолчанию. При необходимости можно переименовать псевдоним, выполнив команду Rename (Переименовать) контекстного меню псевдонима или пункта Object (Объект) главного меню администратора. Псевдоним для работы с локальными БД имеет следующие три параметра:

    • Default Driver – указывает формат таблиц БД (по умолчанию значение Paradox) [3];

    • Enable BCD – указывает на возможность перевода чисел в формат BCD, что позволяет более точно выполнять численные вычисления, но уменьшает скорость их выполнения. По умолчанию имеет значение false и соответственно выключено[3];

    • Path – указывает расположение (каталог) БД. После создания нового псевдонима путь не определен, его необходимо установить самостоятельно [3].




Рис.3. Установка параметров псевдонима


Значение параметров Path можно ввести вручную или с помощью выбора требуемого каталога в окне Select Directory (Выбор каталога), которое появляется при двойном щелчке в поле значения параметра. Смена пути выполняется при перемещении БД, например, в другой каталог.



Рис.4. Установка значения Path

Применить сделанные изменения можно, выбрав синюю круглую стрелку (Apply) панели инструментов, или выбрав пункт меню Object (Объект)/ Apply (Применить).
2.1.2. Программа Database Desktop
Программа предназначена для создания и редактирования таблиц, визуальных запросов и SQL – запросов, а также для выполнения действий с псевдонимами. Эту программу можно вызвать из среды Delphi по команде Tools/Database Desktop.

Работа с псевдонимами. Для работы с псевдонимами БД используется Менеджер псевдонимов (рис.5), вызываемый по команде Tools/Alias Manager (Средства/ Менеджер псевдонимов) меню программы Database Desktop.




Рис.5. Окно Менеджера псевдонимов


С помощью Менеджера псевдонимов можно создать (кнопка New) и удалить (кнопка Remove) псевдонимы. Имя псевдонима вводится (для нового псевдонима) или выбирается (для существующего псевдонима) в списке Database Alias. Кроме того, можно изменять параметры псевдонимов – тип драйвера (список Driver Type) и путь (поле Path).

Процесс создания новой таблицы начинается по команде File\ New\ Table (Файл/ Новая /Таблица) и происходит в интерактивном режиме, при этом разработчик должен:

  • Выбрать тип таблицы

  • Задать структуру таблицы

  • Указать ключевые поля

  • Определить ограничения на значения полей

  • Определить пароль

  • Задать ссылочную целостность (связи) между таблицами

Обязательны два первых действия, перечисленные в этом списке. Сначала в окне Create Table (рис.6) выбирается ее формат. По умолчанию предполагается формат таблицы Paradox версии 7, который и используем.



Рис. 6. Выбор формата таблицы


После выбора типа таблицы появляется окно определения ее структуры (рис.7), в котором выполняются все остальные действия, при этом нужно задать хотя бы одно поле.

Для каждого поля задается имя (в столбце Field Name) и тип (в столбце Type) и при необходимости размерность (в столбце Size). Можно задать тип поля, непосредственно указав соответствующий символ, или выбрать из списка (рис.7), раскрываемого после нажатия клавиши «Пробел» или щелчка кнопки мыши на столбце с указанием типов. Список содержит все типы полей, допустимые для заданного формата таблицы.

Для указания ключевых полей в столбце ключа Key нужно ввести символ «*», дважды щелкнув по полю кнопкой мыши. При повторном нажатии снимается отметка о принадлежности поля ключу. Ключевые поля должны быть в списке первыми, т.е. располагаться при задании структуры таблицы вверху.

Для выполнения дополнительных действий по определению структуры таблицы используется комбинированный список Table properties (Свойства таблицы), содержащий следующие пункты [3]:

  • Secondary Indexes – задание индекса

  • Validity checks – ограничения на ввод значений полей

  • Password security – определение пароля

  • Referential Integrety – определение ссылочной целостности между таблицами

  • Table Language – задание языка

  • Table Lookup – задание полей просмотра





Рис. 7. Окно для определения структуры таблицы


Задание индекса. При выборе пункта Secondary Indexes комбинированного списка становится доступной кнопка Define (определить). После ее нажатия появляется окно Define Secondary Index (Задание вторичного индекса) (рис.8). В этом окне задаются индексные поля, отображаемые в правом списке, и параметры индексов, основные из которых изменяются с помощью следующих флажков [3]:

  • Unique – индекс допускает уникальные значения для составляющих его полей

  • Case sensitive – для полей строкового типа учитывается регистр символов

  • Descending – сортировка выполняется в порядке убывания значений. (Если для индекса таблиц Paradox установлен флажок Descending, то при попытке сделать этот индекс текущим, возникает ошибка)





Рис. 8. Окно задания индекса


После задания состава индексных полей и нажатия кнопки OK появляется окно Save Index As (рис.9), в котором указывается имя индекса. Для удобства чтения программ рекомендуется имя индекса начинать с ind (в примере - indFamily).



Рис. 9. Сохранение вторичного индекса


После определения структуры таблицы ее необходимо сохранить, нажав кнопку Save as.. и указав расположение таблицы на диске, выбрав Alias (Псевдоним) БД, (для данного примера псевдоним - Student), а затем называем таблицу и сохраняем ее (например, Table_Work) (см. рис.10).



Рис.10. Сохранение таблицы БД

2.2 Компоненты

Рассмотрим компоненты, которые предназначены для создания приложений, работающих с БД. Кроме компонентов, Delphi также представляет специальные объекты, например, TField. Как и другие управляющие элементы Delphi, связанные с БД компоненты делятся на визуальные и невизуальные [4].

Невизуальные компоненты служат для организации доступа к данным, содержащимся в таблицах. Они представляют собой промежуточное звено между данными таблиц БД и визуальными компонентами.

Визуальные компоненты используются для организации интерфейсной части приложения. С их помощью пользователь может выполнять такие операции с таблицами БД, как просмотр или редактирование данных. Визуальные компоненты также называются элементами, чувствительными к данным [4].

Компоненты, используемые для работы с БД, которые понадобятся для выполнения курсовой и лабораторных работ, находятся на страницах Data Access, Data Control и BDE Палитры компонентов.

На странице Data Access находится невизуальный компонент DataSource – источник данных, с помощью которого можно организовать доступ к данным (рис.11).




Рис.11. Страница Data Access

На странице BDE (рис.12) находятся невизуальные компоненты

Рис.12. Страница BDE


  • Table –набор данных, основанный на таблице БД;

  • Query – набор данных, основанный на SQL-запросе.


На странице Data Control (рис.13) находятся следующие визуальные компоненты, предназначенные для управления данными:



Рис.13. Страница Data Control


  • DBGrid – сетка (таблица);

  • DBNavigator – навигационный интерфейс;

  • DBText – надпись;

  • DBEdit – однострочный редактор;

  • DBMemo – многострочный редактор;

  • DBImage – графический образ;

  • DBListBox – простой список;

  • DBComboBox – комбинированный список;

  • DBCheckBox – независимый переключатель;

  • DBRadioGrooup – группа независимых переключателей;

  • DBLookupComboBox – постой список, формируемый по полю другого набора данных;

  • DBRichEdit – полнофункциональный тестовый редактор;

  • DBCtrlGrid – модифицированная сетка;

  • DBChart – диаграмма.


2.2.1 Набор данных Table

В терминах системы Delphi набор данных – это совокупность записей, взятых из одной или нескольких таблиц БД. Компонент Table представляет набор данных, который в некоторый момент времени может быть связан с одной таблицей БД. Набор данных является логической таблицей, с которой можно работать при выполнении приложения. Взаимодействие таблицы и набора данных напоминает взаимодействие физического файла и файловой переменной [3]. Расположение БД, с таблицами которой выполняются операции, указывает свойство DatabaseName типа String. Значением свойства является имя каталога, в котором расположены файлы БД, или псевдоним, ссылающийся на этот каталог. Если для БД определен псевдоним, то его можно выбрать через Инспектор Объектов в раскрывающемся списке. Связь между таблицей и компонентом Table устанавливается через его свойство TableName типа TFileName, которое определяет имя таблицы (и имя файла, содержащего данные). При задании значения свойства TableName указывается имя этого файла и расширение имени файла.
2.2.2 Источник данных DataSource

Компонент источник данных используется как промежуточное звено между набором данных и визуальными компонентами, с помощью которых пользователь управляет набором данных. В Delphi источник данных представлен компонентом DataSource. Для указания набора данных, с которым связан источник данных, используется свойство DataSet типа TDataSet последнего. Визуальные компоненты связаны с источником данных через свои свойства DataSource. Обычно связь между источником и набором данных устанавливается при проектировании в Инспекторе Объектов. Эту связь можно установить или разорвать динамически. При смене у компонента DataSource набора данных визуальные компоненты автоматически подключаются к новому набору данных [3]:

DataSource2.DataSet:=nil;

DataSource1.DataSet:=Table2;

Для компонента DataSource2 связь с набором данных разрывается, а для компонента DataSource1 назначается набор данных Table2.
2.2.3 Визуальные компоненты

Визуальные компоненты предназначены для построения интерфейсной части приложения и используются для перемещения по набору данных, а также для отображения и редактирования записей. Как было указано выше, связь с набором данных Table осуществляется через источник данных DataSource с помощью свойства DataSource визуального компонента.
Сетка

Для вывода содержимого набора данных в табличном виде удобно использовать сетку, представленную в Delphi компонентом DBGrid. Внешний вид соответствует внутренней структуре таблицы БД и набора данных, при этом строке сетки соответствует запись, а столбцу – поле.
Навигатор

Навигатор обеспечивает интерфейс для управления набором данных. В Delphi навигатор представлен компонентом DBNavigator. Навигатор содержит набор кнопок, обеспечивающих выполнение различных операций с набором данных путем автоматического вызова соответствующих методов. Состав видимых кнопок определяет свойство VisibleButtons типа TButtonSet, принимающее комбинации следующих значений (в скобках указан вызываемый метод):

  • nbFirst – перейти к первой записи (First)

  • nbPrior– перейти к предыдущей записи (Prior)

  • nbNext– перейти к следующей записи (Next)

  • nbLast– перейти к последней записи (Last)

  • nbInsert – вставить новую запись (Insert)

  • nbDelete – удалить текущую запись (Delete)

  • nbEdit – редактировать текущую запись (Edit)

  • nbPost – утвердить результат изменения записи (Post)

  • nbCancel – отменить изменения в текущей записи (Cancel)

  • nbRefresh – освежить информацию в наборе данных (Refresh)

По умолчанию в навигаторе видимы все кнопки. При нажатии кнопки Delete Record может появляться диалоговое окно подтверждения удаления текущей записи, в котором пользователь должен подтвердить или отменить удаление. Появлением окна подтверждения управляет свойство ConfirmDelete типа Boolean, по умолчанию имеет значение True, окно подтверждения выводится. Свойство Flat типа Boolean управляет внешним видом кнопок. Подсказку для отдельной кнопки можно установить с помощью свойства Hints типа TString. По умолчанию список подсказок содержит текст на английском языке, который можно заменить на русский, вызвав строковый редактор String list editor. Для отображения подсказок нужно установить значение True свойству ShowHint, по умолчанию имеющему значение False [4].
Отображение и выбор значения

Для отображения значения некоторого поля текущей записи используется компонент DBText - аналог надписи Label. Значение поля выводится как нередактируемый текст. Для редактирования текущей записи используется компонент DBEdit. Для выбора одного значения из списка предназначены компоненты DBListBox, DBComboBox, DBLookupComboBox. Компонент связывается с полем «своего» набора данных через свойства DataSource и DataField.
2.3 Операции с таблицей БД

Создание, удаление и переименование

Для создания таблицы используется метод CreateTable. В результате на диске появится пустая таблица. Перед вызовом метода нужно подготовить необходимые данные, на основании которых выполняется создание таблицы. Эти данные следует присвоить в качестве значений соответствующим свойствам набора данных. Перед вызовом метода CreateTable набор данных должен быть закрыт и установлены значения следующих свойств [3]:

  • DatabaseName – расположение БД (псевдоним)

  • TableName – название таблицы

  • TableType – тип таблицы

  • FieldDefs – описание полей

  • IndexDefs – описание индексов

DatabaseName задает имя файла таблицы, который будет находиться в каталоге, указанном для размещения БД (свойство DatabaseName).

Формат таблицы TableName тира TTableName может быть следующим:

  • ttDefault – формат таблицы (по умолчанию) определяется на соновании следующих расширений имен файлов таблиц:

    • DB - Paradox

    • DBF – dBASE

    • TXT – ASCII

Если расширение файла отсутствует, то принимается формат Paradox

  • ttParadox - Paradox

  • ttDBase - dBASE

  • ttFoxPro - FoxPro

  • ttASCIIASCII (файл, содержащий текст, который разбит на колонки)

Для новой таблицы в свойстве FieldDefs типа TFieldDefs обязательно должно быть определено хотя бы одно поле. Перед описанием полей таблицы значение этого свойства следует очистить (удалить предыдущее значение), т.к. в ней может находится информация о полях предыдущей таблицы, с которой был связан набор данных. Для очистки значения свойства TFieldDefs можно применить метод Clear, для занесения информации о полях новой таблицы – метод Add. [4].

Процедура Add(const Name: String; DataType: TFieldType; Size: Word; Required: Boolean) добавляет к массиву полей описание нового поля. Параметр Name указывает название нового поля, а DataType – тип нового поля, который можно выбирать из следующего списка:ftUnknown, ftString, tSmallInt, ftInteger, ftWord, ftBoolean, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes, ftAutoInc, ftMemo, ftGraphic, ftEmtMemo, ftParadoxOle, ftBaseOle, ftTypedBinary, ftBlob, ftCursor, ftFixedChar, ftWideString, ftLargeInt, ftADT, ftArray, ftReference, ftDataSet,ftMemo. В перечисленных значениях префикс указывает ft, что значение относится к типу поля (Field Type), а последующая часть значения определяет сам тип.

Параметр Size определяет размер поля. Если для полей некоторых типов, например, поля даты ftDate, размер не задается, то параметр Size принимает нулевое значение. Логически параметр Required определяет, должно ли поле содержать значение (True) или может быть пустым (False). [3].

В таблице можно определить индексы, описание которых заносится в свойство IndexDefs. После предварительной очистки значения этого свойства методом Clear данные об индексах заносятся методом Add. После создания таблицы для нее можно создать индекс или удалить его с помощью методов AddIndex и DeleteIndex.

Для удаления таблицы используется метод DeleteTable, в результате выполнения которого происходит физическое удаление всех файлов указанной таблицы БД. Путь и имя удаляемой таблицы определяют свойства DatabaseName и TableName набора данных. Перед удалением таблицы набор данных должен быть закрыт. [4].

Для переименования таблиц можно использовать метод RenameTable (const NewTableName : String), при выполнении которого переименовываются все файлы, относящиеся к таблице. Параметр задает новое название таблицы.

Задание на лабораторную работу.
Написать программу просмотра и редактирования двух таблиц БД, не связанных между собой. Одна таблица (Table_Work) создана в программе Database Desktop, другая (Table_Relax) создается в процессе выполнения программы.
Порядок выполнения работы.


  1. Создать Alias (псевдоним) новой БД через утилиту BDE Administrator, например Student.

  2. Создать таблицу (Table_Work) БД в программе Database Desktop. Таблица имеет следующие поля:

(№ п/п – Autoincrement, ФИО – Alpha, Зарплата – Number, Дата рождения – Date, Дата приема на работу – Date.

Для поля строкового типа необходимо указать размер.

Таблица имеет два индексированных поля: первичный ключ образован по полю № п/п, вторичный – по полю ФИО.

  1. Запустить среду Delphi. Сохранить проект (и все модули, входящие в него) в директорию … <Student/Группа>/лб №1/.

  2. Поместить на форму (Form1 по умолчанию) следующие компоненты (имена оставлены по умолчанию): Table1, DataSource1, DBGrid1, DBNavigator1, Button1, BitBtn1. Переименовать название формы. Свойство Caption формы Form1 изменить на «Лабораторная работа №1». Внешний вид формы на этапе конструирования представлен (рис.14).





Рис.14. Внешний вид формы Form1 на этапе конструирования


  1. Для связи набора данных Table1, который связан с физической таблицей (Table_Work), созданной в программе Database Desktop, и сеткой DBGrid1, необходимо настроить свойства компонентов Table1, DataSource1 и DBGrid. Это можно сделать в Инспекторе Объектов (Object Inspector) или программно в процедуре-обработчике какого-нибудь события (открытия формы и т.д.):

DataSource1.DataSet:=Table1;

DBGrid1.DataSource:=DataSource1;

Аналогично настроить связь компонентов Table1, DataSource1 и DBNavigator1.

  1. Так как таблица Table_Work существует, можно ее свойства настроить на этапе конструирования:

  1. Свойству DatabaseName следует присвоить значение созданного псевдонима БД. Для этого в Инспекторе Объектов выбирается нужный псевдоним (Student, см. п.1), из списка доступных БД.

  2. Свойству TableName следует задать имя Table_Work, выбрав его из списка доступных таблиц выбранной БД.

  3. Свойству Active присвоить значение True.

Если все предыдущие действия были сделаны правильно, то на этапе конструирования сразу после активизации таблицы появятся поля таблицы Table_Work.

  1. Написать обработчик - закрытие формы при нажатии кнопки BitBtn1. Кнопку BitBtn1 переименовать, задав свойству Caption значение «Закрыть», а свойству Kind - значение bkClose. В теле процедуры необходимо закрыть набор данных Table1.

  2. Добавить новую форму (по умолчанию Form2), выбрав пункт меню File/New/Form. На форму поместить следующие компоненты: Table2, DataSource2, DBGrid2, DBNavigator2, Button2, BitBtn2. Сохранить модуль, например по умолчанию Unit2. Добавить модуль в проект, выбрав Project/ Add to Project. Внешний вид формы Form2 аналогичен внешнему виду формы Form1, представленной на рис.14, разница лишь в том, что в сетке DBGrid2 не отображается таблица Table_Relax, так как она в общем случае не существует.

  3. Написать обработчик нажатия на кнопку Button2. Свойству Caption присвоить значение «Другая форма». При нажатии на данную кнопку форма Form1 видна, а форма Form2 не видна. Написать аналогичную процедуру для кнопки Button1 формы Form1. При нажатии на кнопку Button1 последовательность показа форм противоположна нажатию на кнопку Button2.

  4. Написать процедуру «Показ формы» для формы Form2, в которой будет создана таблица Table_Relax. Таблица Table_Relax полностью совпадает с таблицей Table_Work (отличается только имя таблицы). Далее приведен код для создания таблицы:

with Form2.Table2 do

begin

Active:=false; //Требуется закрыть набор данных

DatabaseName:='Student';// Псевдоним БД

TableName:='Table_Relax.db';// Имя таблицы

TableType:=ttParadox; //Тип таблицы

if not Table2.Exists then //Если таблица не существует,

begin // то создаем ее

with FieldDefs do // Доступ к полям будущей таблицы

begin

Clear;// Очищаем список полей

with AddFieldDef do //определяем первое поле

begin

Name := '№п/п'; // Имя поля

DataType := ftAutoInc;// Тип поля - счетчик

Required:=True; // Обязательное заполнение поля

end;

with AddFieldDef do

begin

Name := 'ФИО';

DataType := ftString;// Тип поля - строка

Size := 50; //Для строки необходимо указать размер

Required:=true;

end;

with AddFieldDef do

begin

Name := 'Зарплата';

DataType := ftFloat;// Тип поля - вещественное число

Required:=false;

end;

with AddFieldDef do

begin

Name := 'Дата рождения';

DataType := ftDate;// Тип поля - дата

Required:=false;

end;

with AddFieldDef do

begin

Name := 'Дата приема на работу';

DataType := ftDate;// Тип поля - дата

Required:=false;

end;

end;
with IndexDefs do //Определение всех индексов будущей

таблицы

begin

Clear; // Очищаем список индексов

with AddIndexDef do// Определяем первичный индекс-

ключ таблицы

begin

Name := ''; //первичный индекс для Paradox не имеет

имени

Fields := '№п/п';// Индексируемое поле

Options := [ixPrimary]; //Опция -первичный индекс

end;

with AddIndexDef do// Определяем вторичный индекс

begin

Name := 'indFamily'; //Имя вторичного индекса

Fields := 'ФИО';// Индексируемое поле

Options := [ixCaseInsensitive]; //не учитывать регистр

букв

end;

end;

CreateTable;//Создаем таблицу

end;

Open;// Открываем набор данных

end;
Создавать поля таблицы также можно, используя процедуру .Add(const Name:String; DataType:TFieldType; Size:Integer; Required:Boolean), например, следующая строка создает поле с именем «маршрут» типа String, размером 30, обязательное заполнение: FieldDefs.Add(' маршрут ',ftString,30,true). Если для данного типа размер не требуется, то ставится 0, например, FieldDefs.Add('Дата',ftDate,0,true).

Добавлять индексы можно использовав процедуру Add (const Name: String; const Field: String; Option: TIndexOptions). Например, следующая строка добавляет вторичный индекс indFamily по полю «ФИО», параметры индекса – не учитывает регистр букв:

IndexDefs.Add('indFamily,’ФИО',[ixCaseInsensitive]);

  1. Написать обработчик - закрытие формы при нажатии кнопки BitBtn2. В данной процедуре следует закрыть оба набора данных – Table1 и Table2, а также форму Form1.

  2. Сохранить все.

  3. Запустить программу, для чего выбрать пункт меню Run/Run.

  4. Отладить работу программы


Список литературы


  1. Delphi 4. Учебный курс./Фаронов В.В. М.:Ноулидж, 1998.-464 с., ил.

  2. Программирование в Delphi 4./ П. Дарахвелидзе, Е. Марков СПб.:БХВ-Санкт-Петербург, 1999.-864 с.,ил.

  3. Delphi 5./Гофман В.Э, Хомоненко А.Д. СПб.:БХВ-Санкт-Петербург, 1999.-800 с.,ил.

  4. Delphi 6 для профессионалов. / Марко Кэнту – СПб.:Питер,2002.-1088 с.:ил.


страница 1


скачать

Другие похожие работы:

Создание таблиц баз данных

Лабораторная работа: 1 стр.