- •Раздел 1. Проектирование баз данных. 2
- •Раздел 2. Разработка приложений для работы с Базами Данных в среде Delphi. 25
- •Раздел 1. Проектирование баз данных.
- •1.1. Основы построения баз данных. Модели данных.
- •1.1.1. Реляционная модель данных.
- •1.1.2. Нормализация базы данных.
- •1.2. Проектирование базы данных методом “сущность-связь”.
- •Раздел 2. Разработка приложений для работы с Базами Данных в среде Delphi.
- •2.1. Технология создания информационной системы.
- •2.1.1.Создание таблиц базы данных в Database Desktop.
- •2.1.2. Целостность базы данных.
- •Программа bde Administrator и модули данных.
- •Компоненты доступа и работы с данными. Тема: Наборы данных. Состояние и режимы наборов данных.
- •Тема: Объекты поля. Операции с полями.
- •Тема. Отображение и выбор значения поля.
- •Тема. Визуальные компоненты отображения записей из набора данных.
- •Закладки.
- •Тема. Ограничения на вводимые значения.
- •Тема. Сортировка набора данных.
- •Тема. Операции с таблицей базы данных.
- •Тема. Фильтрация записей.
- •Тема. Поиск записей.
- •Тема. Модификация набора данных.
- •Тема. Работа с отчетами
- •Отчет для связанных наборов данных
- •Составной отчет
- •Модули данных
- •Конструктор отчетов Rave Report
- •Реляционный способ доступа к данным.
- •Основные сведения о языке sql.
- •Оператор выбора Select.
- •Агрегирование и группирование записей.
- •Объединение таблиц.
- •Вложенные запросы.
- •Модификация записей.
- •Примеры баз данных
Тема. Операции с таблицей базы данных.
В приложении можно выполнять создание, удаление, переименование таблиц, а также установку доступа к таблицам.
Для программирования этих действий в приложении необходимо использовать следующие свойства набора данных Table.
Свойства:
DatabaseName –путь к файлам базы данных (папка)
TableType – тип таблицы:
ttDefault – (по умолчанию) формат определяется по расширению названия файла:
DB или отсутствует – таблица Paradox;
DBF – таблица dBase;
TXT – таблица ASCII;
ttParadox – таблица Paradox;
ttDBase – таблица dBase;
ttFoxPro – таблица FoxPro;
ttASCII – таблица ASCII (текстовый файл, разбитый на колонки).
FieldDefs – описание полей,
IndexDefs – описание индексов,
TableName – название таблицы, т.е. имя физического файла таблицы, который находится в папке, указанной в свойстве DatabaseName.
IndexName – название индекса;
IndexFieldNames – список столбцов, используемых в индексе таблицы.
Для свойства FieldDefs определены следующие методы:
Clear – очистка значения свойства,
Add(const Name:String; DataType:TFieldType; Size: Word; Required: Boolean) – добавляет к массиву полей описание нового поля, где
Name –название поля,
DataType – тип поля, который выбирается из списка: ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency и т.д.
Size – размер поля или 0 (ноль),
Required – определяет, должно ли поле обязательно содержать значение (true) или может быть пустым (false).
Методы:
procedure CreateTable; - на диске создается пустая (без записей) таблица. Если таблица существует, то метод перезаписывает таблицу. Перед вызовом метода необходимо определить следующие свойства набора данных, причем набор данных должен быть закрыт:
- DatabaseName – путь к файлам базы данных (каталог),
- TableType – тип таблицы,
- FieldDefs – описание полей,
- IndexDefs – описание индексов,
- TableName – название таблицы.
procedure DeleteTable; - выполняется физическое удаление всех файлов таблицы, имя которой и путь определены в свойствах DatabaseName и TableName набора данных.
procedure RenameTable(const NewTableName:String) – выполняет переименование всех файлов, относящихся к таблице. Здесь NewTableName – новое название таблицы.
Пример. Создание таблицы на основе набора данных Table.
procedure TForm1.BtnNewTableClick(Sender: TObject);
begin
Table1.Active:=false; // Закрытие набора данных
Table1.DatabaseName:='NewTovar'; // путь к базе данных
Table1.TableName:='NewTable'; // имя создаваемой таблицы
Table1.TableType:=ttParadox; // тип таблицы
// Параметры таблицы
Table1.FieldDefs.Clear;
Table1.FieldDefs.Add('Code',ftAutoInc,0,true);
Table1.FieldDefs.Add('Nazv',ftString,20,True);
Table1.FieldDefs.Add('Cena',ftInteger,0,False);
Table1.FieldDefs.Add('Date',ftDate,0,False);
// Описание полей таблицы
Table1.IndexDefs.Clear;
Table1.IndexDefs.Add('','Code',[ixPrimary, ixUnique]);
Table1.IndexDefs.Add('indNazv','Nazv',[ixCaseInsensitive]);
// Создание таблицы
Table1.CreateTable;
// Установка текущего индекса
Table1.IndexName:='indNazv';
//
Table1.Active:=True;
Label1.Caption:=Table1.TableName;
DataSource1.DataSet:=Table1;
DBGrid1.DataSource:=DataSource1;
DBNavigator1.DataSource:=DataSource1;
end;
procedure TForm1.BtnDeleteTableClick(Sender: TObject);
begin
Table1.Active:=False;
Table1.DeleteTable;
Label1.Caption:='Таблица удалена!';
end;
procedure TForm1.BtnRenameTableClick(Sender: TObject);
begin
Table1.Active:=False;
if LabeledEdit1.Text<>''
then Table1.RenameTable(LabeledEdit1.Text)
else Table1.RenameTable('NewTable');
Label1.Caption:=Table1.TableName;
Table1.Active:=True;
end;
Уровень доступа к базе данных определяет возможность записи и чтения данных в таблицу в случае одновременного обращения к ней из различных приложений. Такой режим набора данных Table обеспечивается методами:
LockTable(LockTable:TLockTable) – устанавливается блокировка от вмешательства других приложений. Параметры
ltReadLock – таблица переводится в режим монопольного доступа; Например,
Table1.LockTable(ltReadLock);
ltWriteLock – другим пользователям запрещено записывать данные в таблицу, но разрешено считывать имеющиеся данные. Например,
Table1.LockTable(ltWriteLock);
UnLockTable(LockTable:TLockTable) – снимается блокировка таблицы. Например,
Table1.UnlockTable(ltReadLock);
Table1.UnlockTable(ltWriteLock).