Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания лабы БД программисты.doc
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
798 Кб
Скачать
☆

Лабораторная работа №5 Тема: Определение отношений между таблицами

Цель: Научиться определять отношения между таблицами, связывать таблицы разными способами.

Задание:

  1. Изучить основные виды связей между таблицами.

  2. Уметь устанавливать все возможные связи в таблицах.

  3. Изучить основные особенности связей.

  4. Установить связи в разрабатываемой БД инструментальным способом.

  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;