
Задания / LAB2
.DOCЛабораторная работа № 2
Тема: Установление связей между таблицами в многотабличной
базе данных.
Итак, в первой лабораторной работе была создана многотабличная БД. Характерной особенностью программ, созданных с помощью Delphi и предназначеных для работы с базами данных, является их зависимоть от средств доступа к базам данных. Есть несколько технологий доступа к данным, каждая из них обладает своими особенностями, своими достоинствами и недостатками. Рассмотрим наиболее часто используемые и самые универсальные из них:
-
При реализации программного обеспечения на языке JAVA можно использовать два вида доступа, с использованием технологии JDBC(Java Data Base Connectivity) и с использованием JDS(Java Data Store) от Borland. Технология JDBC по своей структуре очень похожа на ODBC, но используется для приложений на JAVA. Технология JDS по сути является оболочкой технологии JDBC значительно расширяющая ее возможности.
-
Технология доступа ADO (ActiveX Data Object) Основана на модели COM. Достаточно универсальна и удобна в использовании. Применение ADO возможно из различных сред и языков программирования поддерживаемых Microsoft, такие как C++, VB, ASP.
-
Технология доступа dbExpress. Эта технология, также разработанная компанией Borland, обладает хорошей универсальностью и высокой скоростью доступа, благодаря своей архитектуре. Универсальность dbExpress в том, что она может работать в двух операционных системах Windows и Linux
-
Технология доступа BDE(Borland Data Base Engine) Это одна из первых технологий доступа к базам данных, разработанная компанией Borland. В первых версиях она разрабатывалась для доступа к «настольным» и файл-серверным системам. Позже она стала поддерживать и клиент серверные системы. BDE также как и ADO может работать с драйверами ODBC, но также BDE имеет некоторые собственные драйвера.
Мы остановимся на технологии BDE.
Создание Алиаса
Удобно не просто указывать путь доступа к таблицам базы данных, а использовать для этого некий заменитель - псевдоним, называемый алиасом. Он сохраняется в отдельном конфигурационном файле в произвольном месте на диске и позволяет исключить из программы прямое указание пути доступа к базе данных. Такой подход дает возможность располагать данные в любом месте, не перекомпилируя при этом программу. Кроме пути доступа, в алиасе указываются тип базы данных, языковый драйвер и много другой управляющей информации.
Д
ля
создания алиаса запустите утилиту
конфигурации BDE, Пуск | Программы | Borland
Delphi| BDE.
Д
алее
создаем непосредственно новый алиас:
Object | New
Теперь
можно изменить название алиаса STANDARD1
на другое например, в нашем случае, он
будет называться AZS.
Теперь на вкладке Definition
в пункте PATH необходимо
указать путь к нашим базам данных, они
все должны находиться в одном каталоге,
в нашем случае d:\students\v229\bd.
Для того, чтобы сохранить изменения
проделываем следующее: Object
| Apply или используя
пиктограмму.
На этом конфигурирование BDE заканчивается и окно можно закрыть.
Связывание таблиц
После того, как таблицы созданы, можно задать их связанность.
Запускаем Delphi.
Немного теории: Имеется несколько основных компонентов (объектов), которые используются для доступа к БД. Эти объекты могут быть разделены на три группы:
-
невизуальные: TTable, TQuery, TDataSet, TField
-
визуальные: TDBGrid, TDBEdit
-
связующие: TDataSource
Первая группа включает невизуальные классы, которые используются для управления таблицами и запросами. Эта группа сосредотачивается вокруг компонентов типа TTable, TQuery, TDataSet и TField. В Палитре компонентов эти объекты расположены на странице Data Access и BDE.
Вторая группа классов - визуальные, которые показывают данные пользователю, и позволяют ему просматривать и модифицировать их. Эта группа классов включает компоненты типа TDBGrid, TDBEdit, TDBImage и TDBComboBox. В Палитре компонентов эти объекты расположены на странице Data Controls.
Ттретий тип используется для того, чтобы связать предыдущие два типа объектов. К третьему типу относится только невизуальный компонент TDataSource (на странице Data Access).
Поместите на форму необходимое количество компонентов Data Source, с вкладки компонентов Data Access, Table с вкладки BDE и DbGrid c вкладки Data Controls, иcходя из количества таблиц. В нашем случае таблицы четыре, следовательно, и каждого вида компонентов тоже будет четыре. Также необходимо поместить компонент DBNavigator c вкладки Data Controls, он позволяет манипулировать с БД.
Теперь необходимо связать таблицы c сетками. Для чего выбираем Data Source1 и в Object Inspector в пункте DataSet выбираем Table1. Выбираем DbGrid1 и в Object Inspector в пункте DataSource устанавливаем DataSource1. Выбираем компонент Table1 и в Object Inspector в пункте Database Name выбираем нами созданный алиас ( в нашем случае ZAKAZ), а в пункте Table Name таблицу a.dbf
Теперь таблица привязана к сетке DbGrid1, но данные на нее еще не отображаются. Для отображения данных в строках и столбцах необходимо в свойстве Active компонента Table1 установить True. Аналогично связываются и др. таблицы с сетками DbGrid. Проделать самостоятельно.
Когда каждой сетке сопоставлена таблица, необходимо произвести связывание таблиц. Связывание таблиц происходит между компонентами Table.
Рассмотрим связывание таблиц B и D.
Так как таблица D подчинена таблице B, то в свойстве компонента Table таблицы выбираем поле Master Source и указываем Data Source2 (таблицы B). В поле Master Fields указываем поле по которому будет происходить связывание, в нашем случае -это KOD_TOVARA.
В левой колонке выбираем поле подчинённой таблицы, а в правой главной. Затем нажимаем Add и ОК. Теперь таблицы B и D связаны по полю KOD_TOVARA.
Проделайте тоже самое с остальными таблицами.
Далее свяжем компонент DB Navigator c основной таблицей, указав в его свойстве DataSource – Datasource2(основная таблица) и приложение построено.
Вот что должно получиться:
Единственное, что осталось сделать, поменять названия полей на русский язык для удобства. Щелкаем правой кнопкой мыши по компоненту DbGrid. И выбираем пункт Colamns Editor. Открывается диалоговое окно, где нажимаем кнопку Add All Fields.
Потом просто меняем свойство FieldName, как показано на рисунке.
В итоге получаем следующее:
Задание
-
Создать алиас БД.
-
Установить связи между таблицами в базе данных.
-
Связать основную таблицу с навигатором.