Создание базы данных в Delphi 7. Личное дело

Автор работы: Пользователь скрыл имя, 28 Января 2012 в 15:52, курсовая работа

Описание работы

Цель: Создание рабочей базы данных личных дел студентов, а так же данных об оплате обучения и специальностях существующих на ускоренном заочном отделении.
Задачи:
Сбор и обработка теоретических данных;
Определение структуры базы данных;
Создание программы;

Содержание работы

Введение……………………………………………………………………...3
Глава 1.
Базы данных……………………………………..……………………..5
Системы управления базами данных и их функции..……………....12
1.3. Языковые средства СУБД ………………...………………………….20
Базы данных в Delphi 7…………………………………………….....25
Глава 2.
2.1. Создание базы данных в Delphi 7. Личное дело.…………………….42
Реализация доступа к БД …………………………………………….47
Реализация отчетов……………………………………………………47
Разработка пользовательского интерфейса………………………….47
Основные принципы построения интерфейса…………………..48
Обоснование использования элементов интерфейса…………...49
Поставленные задачи …………………..…………………………….53
Обоснование выбора программного обеспечения ………………....54
Заключение………………………………………………………………….56
Список сокращений………………………………………………………..57
Список литературы……………………………………

Файлы: 1 файл

Диплом.doc

— 329.50 Кб (Скачать файл)

   11. Освобождение всех ресурсов (освобождение  буфера записи, записи курсора,  таблицы, BDE) .

   При использовании в программе функции  из API BDE необходимо включить в секцию uses модуль BDE.

   В компонентах VCL для доступа к данным (TTable, TQuery, TStored Proc) инкапсулирован механизм взаимодействия с динамическими библиотеками BDE. Любой компонент для доступа к данным имеет в иерархии наследования класс TBDE DataSet, унаследованные методы которого используется для установления связи с базой данных через BDE. Важную роль при этом играет зарегистрированный в BDE псевдоним базы данных, (свойство компонента называется DataBaseName) . Второе важнейшее свойство -Activ, имеющее тип Doolean, позволяет открыть или закрыть сеанс связи с базой данных.

   Визуализацию  полученных данных обычно выполняет  компонент TDataSource и один или несколько  компонентов отображения данных (Data Controls) . Основная задача компонента TData Scource - разделение набора данных на поля или группы полей и передача их по назначению. Он же отвечает за возврат сделанных изменений и передачу сигналов управления от пользователя в набор данных.

   Любой компонент отображения данных умеет  визуализировать полученные от компонента TDataSourse данные в соответствии с их типом, отслеживает правильность вносимых изменений и передает их в TDataScource.

   Таким образом, компонент TDataScource служит мостом между набором данных и пользовательским интерфейсом. С точки зрения разработчика приложений процесс подключения  набора данных не содержит сложностей. Эту работу выполняет механизм доступа к данным, основой которого является процессор баз данных Borland Database Engine.

   Типы  данных.

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

   Существует  большая группа типов данных, конкретная реализация которых практически  не отличается от платформы к платформе. Это, например, строки, символы, целые  и вещественные числа.

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

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

   В классе TField имеется свойство Data Type, которое отвечает за тип данных, но оно не может быть измерено.

   Практически во всех серверах БД пользователь имеет  возможность создавать собственные  типы данных. Для их использования  в приложении Delphi имеется абстрактный тип данных и класс TADT Field. Абстрактный тип может в себя включать любой скалярный тип данных (числа, даты, ссылки, массивы, наборы данных).

   Афтоинкриментный  тип данных используется для получения  уникального индификатора записи. Поле автоинкриментного типа для каждой новой записи автоматически увеличивает свое значение на единицу.

   Данные  типа Blob (Binary Large OBject) представляют собой  двоичные массивы произвольной длинны. В самом поле содержится только ссылка на отдельный файл базы данных, в котором хранится двоичный массив. Таким образом, поля типа Blob являются универсальным носителем любых данных, которые имеют скалярную и не скалярную структуру и которое можно преобразовать в двоичное представление.

   Новой возможностью Delphi стало использование массивов. Этот тип организует массив из данных любой структуры, за исключением таких же массивов. Для каждого элемента массива может создаваться собственный объект TField. Для управления этим механизмом используется свойство SparseArays в классе TDataSet.

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

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

   Состояние набора данных в процессе функционирования набор данных может выполнить различные операции: перемещение по записям, редактирование данных, удаление записи, и т.п. Эффективность работы и разнообразие функций обеспечивает сложный механизм доступа к данным. В нем все операции объединены в группы по функциональному признаку. Для каждой группы операций BDE выполняет ряд подготовительных действий по предварительной настройке набора данных. При этом состояние набора данных изменяется.

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

   Базовый класс TDataSet, инкапсулирующий свойства набора данных, позволяет изменять состояния, а также проверять текущее состояние набора данных. Текущее состояние набора данных передается в свойство State, имеющее вид NDataSetState.

   Состояние просмотра по блокам используется набором  данных при реализации быстрого перемещения  по большим массивам записей в  компонентах отображения данных и без вызова обработчика события перемещения по записям. Для реализации быстрого перемещения по наборам данных можно использовать методы Disable Controls и Enable Controls/ Объект поля Назначение класса TField, как базового класса поля, заключается в умении взаимодействовать с компонентом отображения данных для обеспечения правильной визуализации данных. Например, объект поля хранит способ выравнивания, параметры шрифта, текст заголовка и т.д., визуализацией полей набора данных можно управлять и другими средствами Свойства полей можно задать в словаре данных.

   С точки зрения набора данных объект поля является хранилищем текущего значения этого поля (а не всего столбца  данных). Класс TField Тесно интегрирован с компонентами доступа к данным.

   Динамические  и статические  поля.

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

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

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

   Фильтрация  данных

   Наиболее  эффективным способом отбора записей в набор данных (особенно из больших таблиц) является создание и выполнение соответствующего запроса SQL.

   В случае, если набор данных функционирует  на базе компонента Ttable используют встроенный в компонент механизм фильтрации данных.

   Текст фильтра должен содержаться в  свойстве Filter, а свойство Filtered включает и выключает фильтр. Параметры  фильтра определяются свойством FilterOptions.

   Эти свойства уже присутствуют в базовом  классе TdataSet, однако в нем работают только методы присваивания значений для этих свойств. Сам механизм фильтрации включен в класс TBDEDatаSet, так как BDE производит фильтрацию данных для их передачи в компонент приложения.

   Компонент Tquery также может использовать фильтры. Это позволяет решать некоторые проблемы, которые иначе требует изменение текста запроса.

   При использовании фильтра его текст  транслируется BDE в синтаксис SQL и передается для выполнения на сервер или через соответствующий драйвер в локальную СУБД.

   Фильтры можно создавать  двумя способами:

    1. при помощи свойства Filter;
    2. для создания более сложных фильтров с применением средств языка программирования применяется метод-обработчик набора данных OnFilterRecord.

   Также фильтры можно разделять на статистические и динамические.

   Статистические фильтры создаются во время разработки приложения. Динамические фильтры можно создавать и редактировать во время выполнения приложения.

   При создании текста фильтра для свойства Filter используются для полей соответствующей  таблицы БД, а для задания отношений между ними применяются все операторы сравнения и логические операторы AND, OR, NOT.

   Нельзя  сравнивать между собой два поля.

   Параметры фильтра определяются свойством FilterOptions, который может принимать следующие  значения: foCaseInsenSitive – отключает сравнение строковых значений с учетом регистра символов; FoNoPatialCompare – отключает отбор строковых значений по заданной части строки.

   Важнейшее преимущество метода OnFilterRecord по сравнению  со свойством Filter состоит в том, что  он позволяет сравнивать между собой поля и производить вычисления с их значениями.

   Такой фильтр можно модифицировать путем  присвоения методу процедурной переменной, содержащей ссылку на новый метод.

   Закладки

   Закладки, как инструмент работы с записями набора данных, позволяю быстро перемещаться на нужную запись. Механизм заплаток инкапсулирован уже в базовом классе TdataSet, но все основные методы для работы с закладками перекрыты в классе TBDEDataSet, так как именно обеспечивает их функционирование.

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

   При работе с закладками используются три  основных метода: GetBookmark – создает  новую закладку для текущей записи; GotoBookmark – осуществляет переход к заплатке, переданной в параметре; FreeBookmark – удаляет закладку, переданную в параметре.

   Кроме того, можно, использовать метод BookmarkValid, который проверяет, указывает ли закладка на реально существующую запись и метод CompareBookmark, который позволяет сравнить между собой две закладки. В классе набора данных имеется свойство Bookmark, которое содержит название текущей закладки.

   Примечание  механизм закладок также используется в компоненте TDBGrid. Сетка имеет свойство SelecntdRows типа TbookmarkList, которое представляет свой список закладок, указывающих на одновременно выделенные записи.

   Индексация  данных

   Важнейшей проблемой для любой БД является достижение максимальной производительности и ее сохранение при дальнейшем объемов хранимых данных. Использование индексов решает эту задачу.

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

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

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

   Свойства  и методы для работы с индексами присутствуют только в классе VCL Delphi Ttable, так как в компоненте TQuery работа с индексами осуществляются средствами SQL. Следовательно, в ближайшем общем предке – классе TBDE DataSet – отсутствуют возможности для использования индексов.

Информация о работе Создание базы данных в Delphi 7. Личное дело