- •Лабораторная работа №1 Тема: Анализ предметной области задачи. Проектирование структуры базы данных
- •Постановка задачи
- •Лабораторная работа №2 Тема: Создание таблиц бд инструментальным способом
- •Задания:
- •Лабораторная работа №5 Тема: Определение отношений между таблицами
- •Задание:
- •Лабораторная работа №6 Тема: Создание таблиц бд реляционным способом
- •Задание:
- •Задание:
- •Лабораторная работа №7 Тема: Навигация нд. Модификация нд
- •Лабораторная работа №9 Тема: Поиск записей
- •Лабораторная работа №10 Тема: Запросы
- •Задание:
- •Лабораторная работа №11 Тема: Запросы с параметром. Динамический запрос
- •Задание:
- •Лабораторная работа №12 Тема: Простой отчет (Rave Report, qReport)
- •Задание:
- •Создание простейшего отчёта с помощью qReport
- •Лабораторная работа №13 Тема: Отчет с группировкой. Отчет со связанными таблицами
- •Задание:
- •Создание отчёта с группировкой (qReport)
- •Создание отчёта с группировкой (Rave Report)
- •Создание отчёта для связных нд (qReport)
- •Лабораторная работа №14 Тема: Экспорт и импорт данных в Word, Excel
- •Задание:
- •Экспорт в ms excel
- •Экспорт в ms Word
- •Лабораторная работа №15 Тема: Экспорт и импорт данных в Calc, Writer
Лабораторная работа №5 Тема: Определение отношений между таблицами
Цель: Научиться определять отношения между таблицами, связывать таблицы разными способами.
Задание:
Изучить основные виды связей между таблицами.
Уметь устанавливать все возможные связи в таблицах.
Изучить основные особенности связей.
Установить связи в разрабатываемой БД инструментальным способом.
Установить связи в разрабатываемой БД навигационным способом.
Существуют три типа связей между таблицами:
Тип отношения |
Способ связи |
Один к одному
Один ко многим
Многие ко многим
|
Каждой записи соответствует ровно одна запись другой таблицы. В принципе, можно вообще обойтись одной таблицей
Каждой записи соответствует несколько записей другой таблицы.
Множеству записей соответствует множество записей другой таблицы. Это отношение не всегда поддерживается в реляционных СУБД, и для его реализации часто вводят промежуточные таблицы. |
Для установки связей между таблицами подчинённая таблица использует следующие свойства:
MasterSource – источник данных в главной таблице;
IndexName – текущий индекс подчинённой таблицы;
IndexFieldNames – поля или поле связи текущего индекса подчинённой таблицы;
MasterField - поля или поле связи индекса главной таблицы, служит для задания полей, по которым будет осуществляться связь между двумя таблицами.
Для того чтобы установить связь между таблицами инструментальным способом, необходимо вручную прописать у каждой подчинённой таблицы вышеописанные свойства. В нашем случае это будет выглядеть следующим образом:
Таблица Gryppa.db является подчинённой таблице Spec.db:
TGryppa.MasterSource:=DSSpec;
TGryppa.IndexFieldNames:='kod_spec';
TGryppa.MasterFields:='kod_spec';
Таблица Stydent.db является подчинённой таблице Gryppa.db:
TStydent.MasterSource:=DSGryppa;
TStydent.IndexFieldNames:='nazvanie_gr';
TStydent.MasterFields:='nazvanie_gr';
Таблица Dodovor.db является подчинённой таблице Stydent.db:
TDogovor.MasterSource:=DSStydent;
TDogovor.IndexFieldNames:='kod_styd';
TDogovor.MasterFields:='kod_styd';
Таблица PlatPor.db является подчинённой таблице Dogovor.db:
TPlatPor.MasterSource:=DSDogovor;
TPlatPor.IndexFieldNames:='nom_dogovora';
TPlatPor.MasterFields:='nom_dogovora';
Создание связей между таблицами навигационным способом:
with DataModule2 do
begin
TGryppa.MasterSource:=DSSpec;
TGryppa.IndexFieldNames:='kod_spec';
TGryppa.MasterFields:='kod_spec';
TStydent.MasterSource:=DSGryppa;
TStydent.IndexFieldNames:='nazvanie_gr';
TStydent.MasterFields:='nazvanie_gr';
TDogovor.MasterSource:=DSStydent;
TDogovor.IndexFieldNames:='kod_styd';
TDogovor.MasterFields:='kod_styd';
TPlatPor.MasterSource:=DSDogovor;
TPlatPor.IndexFieldNames:='nom_dogovora';
TPlatPor.MasterFields:='nom_dogovora';
end;
