- •Рецензенты:
- •Введение
- •Содержание
- •1. Цель, задачи и реализуемые компетенции
- •2. Формулировка задания
- •3.2 Теоретическая часть курсового проекта
- •3.3 Практическая часть курсового проекта
- •3.3.1 Обследование предметной области
- •3. Структура работы
- •1. Теоретическая часть
- •2. Практическая часть
- •3.1 Введение к курсовому проекту
- •3.3.2 Разработка технического задания
- •3.3.3 Концептуальное проектирование
- •3.3.4 Инфологическое проектирование
- •3.3.5 Реляционная модель бд
- •3.3.6 Даталогическая модель бд
- •3.3.7 Запросы к базе данных
- •3.3.8 Разработка механизмов защиты данных от несанкционированного доступа
- •3.3.9 Требования к техническому обеспечению
- •3.3.10 Инструкция по использованию базы данных
- •3.3.11 Заключение
- •3.3.12 Список используемой литературы
- •3.3.13 Приложения
- •4. Общие требования к написанию и оформлению проекта
- •4.1 Оформление пояснительной записки
- •5. Последовательность выполнения задания
- •6. Критерии оценивания Проекта
- •7. Порядок защиты проекта
- •Список рекомендуемой литературы
- •Internet-ресурсы
- •Приложение 1
- •Направление (специальность) _______________________________________
- •Задание на курсовую работу (проект)
- •Приложение 2
- •Курсовой проект
- •Приложение 3
- •1 Безусловная выборка значений
- •2 Простая выборка
- •3 Выборка уникальных значений
- •4 Выборка вычисляемых значений
- •5 Выборка с условием
- •6 Выборка с упорядочением
- •7 Выборка с использованием оператора between
- •8 Выборка с использованием оператора in (принадлежит)
- •9 Выборка с использованием шаблонов
- •Имя поля like строковая константа
- •10 Выборка из связанных таблиц
- •Простое соединение
- •Соединение с дополнительным условием
- •Соединение трех таблиц
- •11 Использование группировки данных при организации запросов
- •Использование группировки данных совместно с условием
- •Использование having
- •12 Использование квантора существования в запросах
- •13 Объединение множеств
- •Субд ms Visual FoxPro
- •14 Модификация данных в таблицах
- •15 Удаление данных
- •16 Добавление записей
- •Insert into таблица [(поле [,поле] ...)] values (константа [,константа]...)
- •Insert into таблица [(поле [,поле] ...)] подзапрос
- •17 Запросы по дате
- •18. Соединение отношений. Оператор join
- •19. Коррелированные и некоррелированные подзапросы
- •20. Вычисления в таблицах. Команда calculate
18. Соединение отношений. Оператор join
Соединение отношений R1 и R2:
обозначается
символом «
»,
под которым на месте нижнего индекса
записывают условие соединения, в котором
—
арифметический оператор сравнения
(<,=,>,,,);
k—арность
отношения R1;
i
и j—номера столбцов соответственно в
отношениях R1
и R2.
Если является арифметическим оператором равенства, то операцию называют эквисоединением.
Пример 18.1. Рассмотрим пример соединения отношений с поименованными столбцами R11(А,В,С) и R12(D,Е). Вычислим эквисоединение при условии, что элементы столбцов В и D равны.
Отношения R11(А,В,С) и R12(D,Е) представлены в таблицах 18.1 и 18. 2.
Таблица 18.1 - R11(А,В,С) |
|
Таблица 18.2. - R12(D,Е) |
|||
A |
B |
C |
|
D |
Е |
а |
б |
с |
|
а |
и |
а |
и |
р |
|
е |
к |
д |
е |
ж |
|
|
|
Промежуточное действие – вычисление декартова произведения: R11*R12 . Результат представим в таблице 18.3.
Таблица 18.3 - R11*R12
-
А
В
С
D
Е
а
б
с
а
и
а
и
р
а
и
д
е
ж
а
и
а
б
с
е
к
а
и
р
е
к
д
е
ж
е
к
Следующее действие – селекция строк при условии, что элементы столбцов В и D равны. Результат содержит одну строку, представленную в таблице 18.4.
Таблица 18.4 – R13
-
A
B
C
Д
Е
д
е
ж
е
к
Естественное соединение отношений R1 и R2. Эта операция применяется только тогда, когда в отношениях R1 и R2 имеются одинаковые столбцы. Естественное соединение - это комбинация двух отношений по общим атрибутам. Условие реализации R1 ∩ R2 ≠ Ø.
Пусть отношения R1 и R2 имеют соответственно схемы
где имена A1,A2,...,Ak у обоих отношений совпадают, а остальные различаются (для упрощения совпадающие имена размещены в начале, но они, конечно, могут быть записаны в любом другом порядке). Естественное соединение равно:
R1.A1—имя столбца отношения R1×R2, соответствующего столбцу А1 в отношении R1; R2.A2 — имя столбца отношения R1×R2, соответствующего столбцу А1 в отношении R2. Запись «имя_таблицы.имя_атрибута», например, R1.A1 называется «уточненное имя атрибута».
Пример 18.2. Получим естественное соединение отношений ВЕДОМОСТЬ_1(Фамилия, алгебра) и ВЕДОМОСТЬ_2(Фамилия, геометрия). Отношения представлены в таблицах 18.5 и 18.6. В этих отношениях имеется один совпадающий столбец. Условие естественного соединения – в одноименных столбцах атрибуты должны принимать совпадающие значения.
Таблица 18.5 -ВЕДОМОСТЬ_1 |
|
Таблица 18.6 - ВЕДОМОСТЬ_2 |
||
Фамилия |
алгебра |
|
Фамилия |
геометрия |
Иванов |
отлично |
|
Иванов |
хорошо |
Петров |
хорошо |
|
Петров |
отлично |
Получим декартово произведение отношений ВЕДОМОСТЬ_1 и ВЕДОМОСТЬ_2. Результат представим в таблице 18.7.
Таблица 18. 7 – отношение ВЕДОМОСТЬ_1 * ВЕДОМОСТЬ_2
Фамилия |
алгебра |
Фамилия |
геометрия |
Иванов |
отлично |
Иванов |
хорошо |
Петров |
хорошо |
Иванов |
хорошо |
Иванов |
отлично |
Петров |
отлично |
Петров |
хорошо |
Петров |
отлично |
Следующий шаг – селекция. Выбираем строки, удовлетворяющие условию: ВЕДОМОСТЬ_1.фамилия= ВЕДОМОСТЬ_2.фамилия. Получим таблицу 18. 8.
Таблица 18. 8 – Результат селекции
ВЕДОМОСТЬ_1.фамилия= ВЕДОМОСТЬ_2.фамилия (ВЕДОМОСТЬ_1 * ВЕДОМОСТЬ_2)
Фамилия |
алгебра |
Фамилия |
геометрия |
Иванов |
отлично |
Иванов |
хорошо |
Петров |
хорошо |
Петров |
отлично |
Для получения окончательного результата в таблице 18.8 нужно устранить избыточность. Для этого выполним проекцию на все разные столбцы. Результат – в таблице 18. 9.
Таблица 18.9 – результат вычисления естественного соединения отношений ВЕДОМОСТЬ_1 и ВЕДОМОСТЬ_2
Фамилия |
алгебра |
геометрия |
Иванов |
отлично |
хорошо |
Петров |
хорошо |
отлично |
Для реализации соединения в языке SQL используется оператор JOIN. В СУБД Visual FoxPro также используется оператор JOIN. Для получения естественного соединения в Visual FoxPro используется оператор INNER JOIN.
Пример 18.3. Рассмотрим базу данных, содержащую две таблицы, представленные на рисунке 18.1. Таблица Table1 представляет собой ведомость по алгебре – Table1(Name, Algebra) и таблица Table.2 представляет собой ведомость БД – Table2(Name,Database). Условие применения естественного соединения выполняется, так как у таблиц имеется общий столбец – Name. Естественное соединение таблиц можно получить разными способами, показанными на рисунке 18.1. В командном окне представлены два различных запроса, выполнение которых дает одинаковый результат, представленный в окне Query. Один из запросов содержит оператор INNER JOIN:
Select Table1.name, Table1.Algebra, Table2.Database FROM Table1, Table2 WHERE Table1.name= Table2.name
Другой запрос:
Select Table1.name, Table1.Algebra, Table2.Database FROM Table1 INNER JOIN Table2 ON Table1.name= Table2.name
Рисунок 18.1 – Получение естественного соединения
Естественное соединение, полученное в результате выполнения любого из приведенных запросов, показано в окне Query на рисунке 18.1.
Пример 18.4. Левое соединение включает все строки левой таблицы (по отношению к оператору LEFT JOIN) и только те строки из правой таблицы, которые удовлетворяют условию соединения (Table1.name= Table2.name).
Запрос для получения левого соединения:
Select Table1.name, Table1.Algebra, Table2.Database FROM Table1 LEFT JOIN Table2 ON Table1.name= Table2.name
Результат выполнения этого запроса представлен на рисунке 18.2. В рассмотренном примере в правой таблице Table2 нет строчки, где поле Table2.name = «Кузнецов В.В.», поэтому в результате выполнения запроса появляется неопределенное значение NULL.
Рисунок 18.2 – Получение левого соединения
Пример18.5. Правое соединение включает все строки правой таблицы (по отношению к оператору RIGHT JOIN) и только те строки из левой таблицы, которые удовлетворяют условию соединения (Table1.name=Table2.name). Запрос для получения правого соединения
Select Table1.name, Table1.Algebra, Table2.Database FROM Table1 RIGHT JOIN Table2 ON Table1.name= Table2.name
Результат выполнения этого запроса представлен на рисунке 18.3.
Рисунок 18.2 – Получение правого соединения
