Автор: Пользователь скрыл имя, 04 Февраля 2013 в 10:01, лабораторная работа
Данная лабораторная работа предназначена для знакомства с основами работы с реляционными базами данных. Условно можно считать, что реляционная база данных состоит из набора таблиц, которые в свою очередь состоят из однотипных записей с несколькими полями. Обычно записи в таблицах представляют в виде горизонтальных рядов, а в колонках - значения соответствующих полей.
Лабораторная работа № 3:Создание базы данных
Данная лабораторная работа предназначена для знакомства с основами работы с реляционными базами данных. Условно можно считать, что реляционная база данных состоит из набора таблиц, которые в свою очередь состоят из однотипных записей с несколькими полями. Обычно записи в таблицах представляют в виде горизонтальных рядов, а в колонках - значения соответствующих полей.
Базы данных бывают серверного типа, когда они хранятся в специальном формате, и обращение к ним производится только через специальные программы-серверы баз данных, а также бывают локальные базы. В локальных базах обычно отдельные таблицы хранятся в виде одного или нескольких файлов, при этом базой данных считается каталог на диске, содержащий все эти файлы. В нашей работе мы будем работать с локальной базой данных в формате Paradox 7.
В данной работе будет необходимо создать простое приложение для ведения учета книг в домашней библиотеке. Для каждой книги в библиотеке должна быть создана запись в базе данных со следующими полями: фамилия автора, название книги, ее тип и фамилия того, кто взял книгу. Тип книг и список читателей необходимо оформить в виде таблиц-справочников, которые можно будет наполнять по мере необходимости. Просмотр списка книг должен производиться в одном из трех режимов: просмотреть все книги, книги заданного типа, либо книги, находящиеся у выбранного читателя.
В рамках работы необходимо будет освоить программу Database Desktop, предназначенную для создания и редактирования таблиц баз данных. Используя эту программу, нужно будет создать 3 таблицы, которые затем будут подключены к нашей программе в среде Delphi.
Цель работы
Изучение средств Delphi для работы с базами данных.
Задачи работы
Описание работы
Разработка любой базы данных начинается с проектирования её логической и физической структур. Физическая схема нашей базы изображена на рис. 24. На ней слева представлена главная таблица, имеющая 4 поля: имя автора, название книги, код типа книги и код читателя. Справа представлены две таблицы-справочника, в которых хранится соответствие кода типа книги с текстовым описанием типа и кода читателя с его текстовым именем. Для быстрого поиска и сортировки содержимого таблиц они должны быть проиндексированы по полям, отмеченным звездочками. В первой таблице по полям Author и Name должен быть создан первичный индекс, а по полям Туре и User два вторичных. В таблицах-справочниках индекс должен быть создан по полям ID. Он будет использоваться для быстрого поиска текстового описания по коду.
В таблицах-справочниках для полей ID необходимо указать тип данных Autoincrement, что означает, что при добавлении новой записи в таблицу для значения этого поля будет автоматически браться уникальное целочисленное значение. Тип данных Alpha означает текстовую строку. Этот тип имеет целочисленный параметр, означающий максимальную длину строки, которую можно поместить в это поле.
Для физического
создания таблиц нашей базы данных
можно воспользоваться программ
Затем с помощью команды меню File|New|Table... необходимо создать 3 таблицы, указав список полей таблиц, их типы, а также создать индексы. При выборе этой команды, в первую очередь, в диалоговом окне (рис 25) необходимо выбрать тип таблицы. Для нашей задачи лучше всего выбрать тип «Paradox 7», т.к. он обладает максимальными возможностями среди других доступных форматов не серверного типа.
После выбора типа таблицы откроется окно создания таблицы формата «Paradox 7», в котором в первую очередь необходимо сформировать список всех полей таблицы. На рис. 26 приведен внешний вид программы Database Desktop в процессе совдания новой таблицы, которую мы потом должны будет сохранить под именем Books.db. В первой колонке списка полей указывается имя поля, во второй — его тип. Для выбора нужного типа можно либо нажать клавишу с первой буквой нужного типа, либо нажать пробел и на экране появится полный список всех доступных типов. В нашей работе нам понадобятся только типы Alpha для представления строковых значений, Long Integer для представления целочисленных кодов типа книги и кода читателя, а также тип ± (Autoincrement).
Третья колонка списка полей предназначена для задания размера поля. В нашем случае она имеет смысл только для строковых полей. Размер поля определяет максимальную длину строки, которую можно поместить в данное поле.
Четвертая колонка позволяет указать поля, которые будут входить в первичный индекс. Для его задания необходимо просто нажать пробел. Индекс (ключ) используется при отображении данных в таблице в качестве критерия сортировки записей.
В нашей задаче для таблицы Books.db понадобятся также еще 2 вторичных индекса, в которые будет входить только одно поле, - Туре и User соответственно. Для этого в правой верхней части окна создания таблицы необходимо выбрать в выпадающем списке пункт Secondary Indexes. Затем необходимо нажать на появившуюся кнопку Define, после чего на экране появится диалог создания вторичного индекса (рис.27).
В диалоге создания вторичного индекса необходимо выбрать в левом списке имя поля, по которому необходимо создать индекс, и нажать кнопку =>. При этом в правом списке отображается список полей, которые будут участвовать во вторичном индексе. В нашем случае необходимо выбрать для индекса поле Туре и нажать клавишу ОК. При этом появится окно, в котором необходимо указать имя созданного индекса. Обычно для имени индекса указывают имя поля, составляющего индекс, с добавлением слова Index. В нашем случае укажем имя Typelndex.
После этого необходимо создать ещё один вторичный индекс, но уже по полю User. Аналогично сохраним этот индекс под именем Userlndex.
В дальнейшем для
изменения структуры уже
После физического создания таблиц базы данных можно переходить к созданию пользовательского интерфейса к базе данных в среде Delphi.
В Delphi для подключения к таблице базы данных используется невизуальный компонент типа ТТаЫе, находящийся на закладке «Database Access» палитры компонентов. В простейшем случае для обращения к реальной таблице необходимо указать только 3 свойства, приведенные в табл. 22.
Таблица 22. Основные свойства компонентов типа ТТаblе | ||
Свойство |
Тип |
Комментарий |
DatabaseName |
String |
Имя базы данных, указанной в компоненте TDatabase, зарегистрированном на компьютере в программе BDE Administrator или каталог, содержащий таблицы форматов DBase, FoxPro или Paradox |
TableName |
String |
Имя таблицы указанной базы данных |
Active |
Boolean |
Открыта ли таблица. Для открытия можно также воспользоваться методом Open, а для закрытия - Close |
Для удобства разработки компоненты баз данных обычно размещают в отдельных модулях (чтобы компоненты для доступа к базам не путались с остальными): это может быть отдельная пустая невидимая форма или специальный модуль данных (Data Module), который можно создать с помощью пункта меню File| New... В этом Модуле необходимо разместить компоненты типа ТТаblе, соответствующие таблицам нашей базы данных.
Для каждого компонента ТТаblе определен так называемый «курсор», определяющий текущую запись в таблице. Отметим особую роль таблиц-справочников в нашем приложении. Их необходимо будет редактировать при появлении новых читателей и типов книг, а также независимо перемещаться по ним для подмены кодов полей их строковыми значениями. Поэтому для этих таблиц необходимо будет поместить в модуль данных по два компонента ТТаЫе, каждый из которых имеет независимые курсоры. Состав модуля данных приведен на рис. 28.
Список полей таблицы представляется в свойстве таблицы Fields. Для его изменения необходимо вызвать редактор списка полей таблицы, который появляется при двойном щелчке мышкой на компоненте ТТаblе. По умолчании список полей пуст, что означает, что он будет формироваться автоматически при открытии таблицы базы данных. Если же мы хотим каким-то образом переопределить свойства полей, то необходимо в локальном меню редактора списка полей вызвать вначале команду Add all fields для получения полного списка полей. Для создания в главной таблице подстановочных полей необходимо выбрать команду локального меню New field...
В главной таблице
TableBooks для подстановки текстовых
значений вместо кодов типов книг
и кодов читателей будем
На рис. 29 приведен пример создания подстановочного поля типа книги LookupType, подменяющего числовой код типа книги его текстовым описанием с помощью другой таблицы-справочника TableTypesLookup.
.
Таблица 23. Основные свойства компонентов типа TField | ||
Сойство |
Тип |
Комментарий |
Alignment |
TAlignment |
Выравнивание текста поля при просмотре: по левой стороне, по правой или по центру |
DisplayLabel |
String |
Текст метки поля, используемый, например, в качестве заголовка столбца таблицы |
DisplayWidth |
Integer |
Ширина колонки таблицы по умолчанию в символах |
FieidKind |
TFieldKind |
Определяет, является ли поле отражением реальных данных в физической таблице (fkData), является ли поле подстановочным (fkLookup), вычисляемым (fkCalculated) и т.д |
FieldName |
String |
Физическое имя поля для типа fkData, либо логическое для других типов |
ReadOnly |
Boolean |
Разрешено ли изменение поля пользователем |
Required |
Boolean |
Обязательно ли заполнять значение поля при модификации записи |
Visible |
Boolean |
Видно ли поле в таблице по умолчанию |
LookupDataset |
TDataset |
Указывает на набор данных (например на таблицу), являющийся справочником |
KeyFields |
String |
Имя поля таблицы, где хранится код, который надо подменить по справочнику |
LookupKeyFields |
String |
Имя поля справочника с кодом |
LookupResultField |
String |
Имя поля справочника, возвращаемого как результат подмены кода |
Замечание
Для того чтобы в инспекторе объектов
в выпадающих списках свойств были доступны
компоненты, находящиеся в других
модулях, необходимо его указать с помощью
команды меню указать с помощью команды
меню File|Use unit...
Создаваемые поля компонента TTable являются потомками класса TField. Любое поле в списке можно выбрать, и затем изменить его настройки с помощью инспектора объектов. Список основных свойств объектов типа TField приведен в табл. 23.
После того Как
таблицы открыты, к ним можно
подключать визуальные компоненты для
отображения содержимого и
В главной форме нашего приложения необходимо разместить компоненты с соответствии с рис. 31. В правой части надо разместить компонент TDBGrid для отображения таблицы в виде сетки., С его помощью можно редактировать содержимое таблицы, добавлять новые записи с помощью клавиши Insert, а также удалять записи с помощью комбинации клавиш Ctrl+Delete. В верхней части формы необходимо разместить компонент TDBNavigator, помогающий перемещаться по таблице, редактировать ее, вставлять и удалять записи. Обоим этим компонентам надо указать источник данных - свойство DataSource - с помощью выпадающего списка в инспекторе объектов. Но т.к. наши источники данных находятся в другом модуле, то перед этим необходимо указать, что данный модуль (главная форма) использует другой (модуль данных). Это делается в Delphi с помощью команды меню File|Use Unit.... которая по сути добавляет в секцию uses раздела implementation выбранный модуль проекта.
В левой части главной формы необходимо разместить кнопку выхода из программы и две кнопки для редактирования справочников, которые просто должны выводить на экран две другие формы простого содержания, как на рис. 32-33. В этих формах также необходимо указать, что надо использовать модуль данных Data, и затем просто выставить свойства DataSource. Обратите внимание, что в этих формах видно только одно строковое поле, а поле ID скрыто. Просто у этого поля в редакторе списка полей свойство Visible установлено равным False.