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

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

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

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

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

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

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

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

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

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

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

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

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

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

Запрос позволяет выбрать необходимые данные из одной или нескольких взаимосвязанных таблиц, произвести вычисления и получить результат в виде виртуальной таблицы. Полученная таблица может использоваться в качестве источника данных в следующих запросах, формах, отчетах, страницах доступа к данным.

С помощью запроса можно выполнить следующие виды обработки данных:

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

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

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

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

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

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

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

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

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

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

  1. на основе одной таблицы СПЕЦИАЛЬНОСТЬ: вывести на экран наименования и коды всех хранимых в БД специальностей;

  2. на основе двух таблиц СТУДЕНТ и СПЕЦИАЛЬНОСТЬ: вывести на экран номера зачетных книжек, фамилии, наименования специальностей всех студентов, обучающихся на факультете ФЭВТ и т.д.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]