Файл: Учебник Макаровой.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 17.07.2024

Просмотров: 1508

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Иван

Сидоров

12.1.80

123247

Марина

Петрова

1.1.80

233244

Итог пересечения:

 

 

 

 

 

 

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Марина

Петрова

1.1.80

233244

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

Пример 19.47. Имеются таблицы СТУДЕНТЫ (весь контингент студентов дневная и заочная формы обучения) и СТУДЕНТ-ЗАОЧНИК (заочная форма обучения). При вычитании таблиц выявляются студенты очной формы обучения:

СТУДЕНТЫ

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Петр

Иванов

12.12.80

123245

Марина

Петрова

1.1.80

233244

Иван

Сидоров

12.1.80

123247

СТУДЕНТ-ЗАОЧНИК

 

 

 

 

 

 

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Иван

Сидоров

12.1.80

123247

Марина

Петрова

1.1.80

233244

Итог вычитания таблиц: СТУДЕНТ

 

 

 

 

 

Имя

Фамилия

Дата

 

 

рождения

зач.книжки

Петр

Иванов

12.12.80

123245

Между записями реляционных таблиц устанавливаются отношения следующих типов:

1:1 – одно однозначное соответствие, когда записи в первой таблице соответствует запись в связанной с ней другой таблице (в обратном направлении также выполняется данное соответствие).

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

Связь М:М не реализуется в реляционных языках непосредственно, для этого используются промежуточные таблицы-связки для замены типа соответствия на 1:М.

Пример 19.48. Если таблица СТУДЕНТ содержит первичный ключ [№ зач.книжки], а таблица ОЦЕНКА имеет схему ([№ зач.книжки], [Код дисциплины], [Результат]), то поле [№ зач.книжки] таблицы ОЦЕНКА выступает как внешний ключ для организации связи с таблицей СТУДЕНТ. Связь возможна, если тип данных и значение данного поля в обеих таблицах

608


будут одинаковыми, при этом эти поля могут иметь и произвольные названия. Так, в таблице ОЦЕНКА может использоваться поле [Код студента], к примеру.

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

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

Пример 19.49. Имеются таблицы СТУДЕНТ и ДИСЦИПЛИНА([Код дисциплины], [Наименование дисциплины]). Декартово произведение таблиц дает новую таблицу

УСПЕВАЕМОСТЬ со схемой ([Имя], [Фамилия], [Дата рождения], [№ зач.книжки], [Код дисциплины], [Наименование дисциплины]). Если какой-либо

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

СТУДЕНТ

Имя

 

 

Фамилия

 

Дата

 

 

 

 

 

 

 

 

 

 

 

 

рождения

 

 

зач.книжки

 

Петр

 

 

 

Иванов

12.12.80

 

 

 

123245

 

 

 

Марина

 

Петрова

1.1.80

 

 

 

233244

 

 

 

ДИСЦИПЛИНА

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Код

 

Наименование дисциплины

 

 

 

 

 

дисциплины

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

Высшая математика

 

 

 

 

 

 

 

2

 

 

 

 

Информатика

 

 

 

 

 

 

 

УСПЕВАЕМОСТЬ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Имя

 

Фамилия

Дата

 

№ эач.

 

 

 

Код

 

Наименование

 

 

 

 

 

рождения

 

книжки

 

дисциплины

 

дисциплины

Петр

 

Иванов

 

12.12.80

 

123245

 

1

 

 

 

 

Высшая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

математика

Петр

 

Иванов

 

12.12.80

 

123245

 

2

 

 

 

 

Информатика

Марина

 

Петрова

 

1.1.80

 

233244

 

1

 

 

 

 

Высшая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

математика

Марина

 

Петрова

 

1.1.80

 

233244

 

2

 

 

 

 

Информатика

Условием совместной обработки разносхемных реляционных таблиц в ряде случаев является наличие общих по типу и значению полей, так называемых внешних ключей.

Соединение две таблицы, имеющие общие поля внешние ключи, участвуют в создании новой таблицы, схема которой строится объединением всех полей исходных отношений, а результирующие записи формируются по определенным условиям:

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

Пример 19.50. Соединить таблицы СТУДЕНТЫ и ОЦЕНКА при условии, что включены все записи таблицы СТУДЕНТ и соответствующие им записи таблицы ОЦЕНКА. Объединение таблиц возможно по общему полю – [№ зач.книжки].

СТУДЕНТЫ

Имя

Фамилия

Дата рождения

№ зач. книжки

609


Петр

 

Иванов

12.12.80

 

123245

Марина

 

Петрова

1.1.80

 

233244

Иван

 

Сидоров

12.1.80

 

123247

ОЦЕНКА

 

 

 

 

 

 

 

 

 

 

 

 

 

Код

 

№ зач. книжки

 

Результат

 

 

дисциплины

 

 

 

 

 

 

1

 

123245

 

3

 

 

1

 

233244

 

4

 

 

2

 

233244

 

5

 

 

2

 

123245

 

5

 

 

РЕЗУЛЬТАТЫ

Имя

Фамилия

Дата

№ зач.

Код

№ зач.

Результат

 

 

рождения

книжки

дисциплины

книжки

 

Петр

Иванов

12.12.80

123245

1

123245

3

Петр

Иванов

12.12.80

123245

1

233244

4

Марина

Петрова

1.1.80

233244

2

233244

5

Марина

Петрова

1.1.80

233244

2

123245

5

Иван

Сидоров

12.1.80

123247

пустые поля, так как нет соответствующих

 

 

 

 

записей в таблице ОЦЕНКА

 

 

 

 

 

 

 

 

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

Пример 19.51. Результат деления таблицы УСПЕВАЕМОСТЬ на таблицу ОЦЕНКА дает таблицу СТУДЕНТ (см. предыдущий пример).

КЛАССИФИКАЦИЯ РЕЛЯЦИОННЫХ ЯЗЫКОВ

Типы реляционных языков

Реляционные языки обеспечивают типовые операции по обработке реляционных таблиц, позволяют формулировать логические условия, используемые в операциях выборки, проверку целостности (непротиворечивости) данных взаимосвязанных таблиц.

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

Выделяют следующие разновидности языков реляционной алгебры:

dBASe-подобные языки приближены к языкам структурного программирования, обеспечивают создание интерфейса пользователя и типовые операции обработки; графические реляционные языки, которые ориентированы на конечных пользователей; SQL-подобные языки запросов, реализованные в большинстве многопользовательских и распределенных систем управления базами данных.

dBASe-подобные реляционные языки

СУБД реляционного типа, такие, как dBASe, Paradox, FoxPro, Clipper, Rbase и др., используют языки манипулирования данными, обеспечивающие основные операции обработки реляционных баз данных, образующих класс dBASE-подобных (X-Base).

Рассмотрим данный класс языков на примере СУБД класса dBASe.

610



С помощью полноэкранных команд, вызываемых через главное меню (Управляющий центр, режим Assist и т.п.), осуществляются создание и редактирование схемы реляционной таблицы (файла), ввод и редактирование данных. Для реализации тех же действий на программном уровне имеются соответствующие команды языка (CREATE, MODIFY, UPDATE, DELETE и др.).

Работа с реляционной таблицей (файлом базы данных) организуется в отдельной рабочем области, которой присваивается имя (алиасное имя или номер). После активизации файла к нему можно перейти, указав номер рабочей области. СУБД запоминает указатель на последней обрабатываемой записи (при первоначальном открытии файла текущий номер записи – 1). Позиционирование в файле на запись выполняется:

непосредственно, указанием номера записи (начало или конец файла, определенный номер записи); при поиске записи по заданному логическому условию.

Язык обеспечивает выполнение всех рассмотренных типовых операций над отдельным файлом, а именно:

APPEND BLANK, BROWSE, CHANGE, EDIT, INSERT - добавление, редактирование записей (в

режиме полноэкранного ввода);

DELETE – удаление записей (в программном режиме); SEEK, FIND, LOCATE – поиск записи по условию;

COPY – копирование всех или части записей активного файла в новый файл; CONTINUE - продолжение поиска записи по ранее сформулированному условию и т.п. Границы области действия команды принимают значения:

RECORD n – определенная запись с номером n; ALL – все записи файла;

NEXT n – следующие n записей, начиная с текущей; REST – все записи, начиная с текущей и до конца файла.

Условия выполнения команд задаются с помощью формата ключевых слов FOR и WHILE.

Условие1 действует в качестве фильтра (ВЫБОРКА) записей исходного файла: если записи соответствуют условию, они участвуют в операции. Условие формулируется применительно к полям записи, например:

Условие2 позволяет прекратить операцию в случае его нарушения, например: WHILE [Дата рождения] < 1.1.80

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

Пример 19.52.

DELETE границы FOR условие1 WHILE условие2

Операция логического удаления (пометки) записей активного файла, если они отвечают требованию условия1. Операция выполняется до тех пор, пока истинно

условие2.

COPY TO нов_файл границы FIELDS список_полей FOR условие1 WHILE ycловие2

Записи активного файла, удовлетворяющие условию1, если истинно условие2, используются для формирования нового файла, схема которого задается как

список_полей.

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

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

Пример 19.53.

611