Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП 01. Базы данных. Часть 2 — копия.doc
Скачиваний:
33
Добавлен:
09.12.2018
Размер:
637.44 Кб
Скачать

Задание на практическую работу № 1

  1. Создать таблицы БД в формате dBase IV или Paradox 7.

  2. Установить индексы для каждой таблицы.

  3. Задать ограничения целостности.

  4. Ввести данные в таблицы. Количество записей в справочной таблице (в таблице со стороны «1» связи 1:М) должно быть не менее 10.

1.2. Практическая работа № 2: установление связей между таблицами в многотабличной базе данных

1.2.1. Создание алиаса

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

Для создания алиаса запустите утилиту конфигурации BDE, Пуск | Программы | Borland Delphi | BDE (рис. 5). Выполните команду меню Object | New и в появившемся окне выбора драйвера БД нажмите ОК. Появится новый алиас с именем STANDARD1.

Теперь можно изменить название алиаса на другое. Например, в нашем случае он будет называться Music. На вкладке Definition в пункте PATH необходимо указать путь к таблицам базы данных. Они все должны находиться в одном каталоге, в нашем случае d:\students\v313\bd. Для того чтобы сохранить изменения, выполните Object | Apply.

На этом конфигурирование BDE заканчивается, и окно можно закрыть.

1.2.2. Связывание таблиц

После того, как таблицы созданы, можно приступить к созданию приложения в Delphi. Для запуска Delphi выполните Пуск | Программы | Borland Delphi | Delphi.

Немного теории. Имеется несколько основных компонентов, которые используются для доступа к БД. Эти компоненты могут быть разделены на три группы:

Рис. 5. Создание алиаса (псевдонима) БД

  • невизуальные: TTable, TQuery, TDataSet, TField;

  • визуальные: TDBGrid, TDBEdit, TDBComboBox и другие элементы управления;

  • связующие: TDataSource.

Первая группа включает компоненты, которые используются для управления таблицами и запросами. Это компоненты типа TTable, TQuery, TDataSet и TField. В палитре компонентов эти объекты расположены на странице BDE и Data Access.

Вторая группа компонентов — визуальные, которые показывают данные пользователю и позволяют ему просматривать и модифицировать их. Эта группа включает компоненты типа TDBGrid, TDBEdit, TDBImage и TDBComboBox. В палитре компонентов эти объекты расположены на странице Data Controls.

Третий тип используется для того, чтобы связать предыдущие два типа объектов. К третьему типу относится только невизуальный компонент TDataSource (страница Data Access).

Построим простейшее приложение, работающее с базой данных.

Поместите на форму необходимое количество компонентов Table с вкладки BDE, DataSource с вкладки компонентов Data Access и DBGrid c вкладки Data Controls, иcходя из количества таблиц. В нашем случае таблиц четыре, следовательно, и каждого вида компонентов тоже будет четыре. Также необходимо поместить компонент DBNavigator c вкладки Data Controls, он позволяет манипулировать данными таблиц.

Теперь установим цепочку связей между этими компонентами. Для этого выделите мышкой DataSource1 и найдите в Object Inspector (в инспекторе объектов) пункт DataSet. Щелкните на этом свойстве и выберите из списка Table1.

Выделите на форме DBGrid1 и в окне Object Inspector щелкните на его свойстве DataSource. Выберите из списка DataSource1.

Осталось связать компонент Table1 с необходимой таблицей базы данных. Для этого служат два свойства компонента Table: DatabaseName и TableName. Выделяем компонент Table1 и в Object Inspector в пункте DatabaseName выбираем созданный нами алиас (в нашем случае Music), а в пункте TableName таблицу a.dbf.

Теперь таблица привязана к сетке DBGrid1, но данные таблицы еще не отображаются. Для отображения данных необходимо свойство Active компонента Table1 установить в True. Эта операция осуществляет соединение с базой данных.

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

Свойство DataSource компонента DBNavigator необходимо установить на компонент DataSource, связанный с таблицей, которой вы хотите управлять.

Когда связи между компонентами установлены, необходимо произвести связывание таблиц базы данных. Связывание таблиц выполняется между компонентами Table.

Две таблицы чаще всего связаны друг с другом отношением «один-ко-многим» (1:M) по ключевым полям (индексированными полями). Одна из этих связанных таблиц является главной (master), а другая — вспомогательной, детализирующей (detail).

Для установления отношения "один-ко-многим" в наборе данных предназначены три свойства — MasterSource, IndexName и MasterFields, которые задаются для подчиненной таблицы. Набор данных главной таблицы не требует никаких дополнительных настроек, и заданная связь будет работать только при перемещениях курсора по записям главной таблицы.

Свойство MasterSource определяет компонент DataSource, который связан с главной таблицей.

Свойство IndexName указывает имя индекса подчиненной таблицы, который будет использован для связывания. Это индекс ключевого поля, по которому устанавливается связь.

Примечание: для таблиц Paradox свойство IndexName устанавливать не требуется, если связывание происходит по первичному ключу. В этом случае IndexName необходимо оставить пустым.

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

Для задания свойства MasterFields можно использовать редактор связей полей Field Link Designer (рис. 6), который вызывается щелчком на кнопке в поле редактирования этого свойства в инспекторе объектов.

Здесь в разворачивающемся списке Available Indexes выбирается требуемый индекс для подчиненной таблицы. После этого в списке Detail Fields появляются имена всех полей, входящих в этот индекс. В списке Master Fields отображаются все поля главной таблицы.

Рис. 6. Редактор связей полей

Для создания связи между полями в левом списке выбирается поле подчиненной таблицы, а затем соответствующее ему поле главной таблицы в правом списке. Нажимаем кнопку Add, после чего появляется отношение по двум полям главной и подчиненной таблиц. Созданная связь отображается в списке Joined Fields.

Уже созданные связи можно удалить. Кнопка Delete удаляет выбранную связь, кнопка Clear — все связи.

Рис. 7. Пример связывания таблиц БД

После создания связей между полями отношение "один-ко-многим" считается установленным. Теперь достаточно открыть оба набора данных, чтобы увидеть работу отношения (рис. 7).

В нашем примере мы хотим, чтобы пользователь, перемещаясь по таблице музыкальных альбомов, видел не только информацию об альбоме, но и имя исполнителя, название стиля, а также информацию о записях, входящих в альбом. В этом случае главной является таблица C, а подчиненными — таблицы A, B и D.