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

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

При проектировании реальных БД информацию обычно размещают в нескольких таблицах. Таблицы при этом связаны семантикой (смыслом) информации. В реляционных СУБД для указания связей таблиц производят операцию их связывания. Многие СУБД при связывании таблиц автоматически выполняют контроль целостности вводимых в базу данных в соответствии с установленными связями. Это повышает достоверность хранимой в БД информации. Кроме того, установление связи между таблицами облегчает доступ к данным.

Чаще всего между таблицами устанавливают бинарные связи (между двумя таблицами). В таком случае выделяют основную таблицу и подчиненную. Для связывания таблиц в реляционной модели используют поля связи - внешние ключи: пусть в отношении R1(подчиненном) имеется не ключевой атрибут А, значения которого являются значениями ключевого атрибута В другого отношения R2 (основного). Тогда говорят, что атрибут А отношения R1 есть внешний ключ.

Например, имеются два отношения СТУДЕНТ (№зачетной книжки, ФИО, Дата рождения, Код специальности) и СПЕЦИАЛЬНОСТЬ (Код специальности, Наименование, Факультет). Отношение СПЕЦИАЛЬНОСТЬ – основное, отношение СТУДЕНТ – подчиненное. В отношении СТУДЕНТ внешним ключом является поле Код специальности, оно ссылается на первичный ключ Код специальности в отношении СПЕЦИАЛЬНОСТЬ. Таким образом, связь между таблицами установлена (рис.2).

Рис. 2. Связь между таблицами по внешнему ключу

Данная связь имеет вид 1: М (один-ко-многим). Ее смысл заключается в том, что одному кортежу в таблице СПЕЦИАЛЬНОСТЬ может соответствовать несколько кортежей в таблице СТУДЕНТ (на одной Специальности могут обучаться множество Студентов).

Реляционная модель накладывает на внешние ключи ограничение для обеспечения целостности данных, называемое ссылочной целостностью. Это означает, что каждому значению внешнего ключа в подчиненной таблице должны соответствовать значения первичного ключа в основной таблице для связываемых отношений. Например, в данном случае множество кодов специальностей в таблице СПЕЦИАЛЬНОСТЬ может быть таким:

Код специальности = {230200, 211800, 211010}.

А в таблице СТУДЕНТ, откуда происходит ссылка:

Код специальности = {230200, 211800}.

Такая ситуация допустима, т.е. ссылочная целостность поддерживается, так как выполняется ссылка на существующие значения. Если бы в таблице СТУДЕНТ были следующие значения Кода специальности = {230200, 211800, 240612}, то система сразу же зафиксировала бы состояние ошибки, так как значения 240612 среди Кодов специальности в таблице СПЕЦИАЛЬНОСТЬ нет.

2.4. Запросы в бд

К отношениям можно применять систему операций, позволяющую по­лучать одни отношения из других. Запрос – специальным образом описанное требование, определяющее состав производимых над базой данных операций по выборке или модификации хранимых данных. Существуют запросы на выборку, обновление, удаление, или добавление записей в таблицах. С помощью запросов можно также создавать новые таблицы, используя данные из одной или нескольких существующих таблиц. С их помощью можно также просматривать, анализировать и изменять данные из нескольких таблиц, а можно использовать запросы в качестве источника данных для форм и отчётов. С помощью запроса можно выполнить следующие виды обработки данных:

  • выбрать записи, удовлетворяющие условиям отбора;

  • произвести вычисления в каждой из полученных записей;

  • включить в результирующую таблицу запроса заданные пользователем поля;

  • сгруппировать записи с одинаковыми значениями в одном или нескольких полях в одну запись с одновременным выполнением над другими полями групповых функций;

  • произвести обновление полей в выбранном подмножестве записей;

  • создать новую таблицу базы данных, используя данные из существующих таблиц;

  • удалить выбранное подмножество записей из таблицы базы данных; добавить выбранное подмножество записей в другую таблицу.

Многотабличный запрос позволяет сформировать записи результата путем объединения взаимосвязанных записей из таблиц БД и выбора нужных полей из нескольких таблиц. В частности, при объединении двух связанных одно-многозначными отношениями таблиц результирующая запись образуется на основе записи подчиненной таблицы, в которую добавляются поля из связанной записи в главной таблице. По умолчанию связи устанавливаются путем объединения: объединение только тех записей, в которых значения связанных полей обеих таблиц совпадают.

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

Например, на основе схемы данных на рис.2, можно было бы составить запросы на выборку данных: