Содержание- Реляционное исчисление
- Типы реляционного исчисления
- Структура запроса
- Исчисление кортежей
- Реляционные переменные
- Условия
- Простые
- С кванторами
- Связь реляционной алгебры и реляционного исчисления
- Выражение алгебры через исчисление
- Выражение исчисления через алгебру
- Реляционная полнота
- Исчисление доменов
- Доменные переменные
- Условие принадлежности
- Язык Datalog
- Определение отношений
- Реляционная полнота
- Рекурсия
- Реляционное исчисление и SQL
- Структура запроса
- Подзапросы
- Существования
- Вхождения
- Условные
- Скалярные
- Рекурсия
Экзаменационные вопросы- Исчисление кортежей и его реляционная полнота
- Исчисление доменов и его реляционная полнота
- Datalog и рекурсия
Практические навыки- Построение запросов в терминах исчисления кортежей
- Построение запросов в терминах исчисления доменов
- Перевод запросов из терминов реляционного исчисления в SQL и обратно
- Построение запросов на SQL (с подзапросами)
Домашнее задание 6. Реляционное исчислениеРеляционное исчисление
Составьте запросы в терминах языков Datalog и SQL для базы данных «Университет»,
позволяющие получать:
-
Информацию о студентах
-
С заданным ФИО
(StudentId, StudentName, GroupId по :StudentName).
-
Учащихся в заданной группе
(StudentId, StudentName, GroupId по :GroupName).
-
C заданной оценкой по дисциплине, заданной идентификатором
(StudentId, StudentName, GroupId по :Mark, :CourseId).
-
C заданной оценкой по дисциплине, заданной названием
(StudentId, StudentName, GroupId по :Mark, :CourseName).
-
Полную информацию о студентах
-
Для всех студентов
(StudentId, StudentName, GroupName).
-
Студентов, не имеющих оценки по дисциплине, заданной идентификатором
(StudentId, StudentName, GroupName по :CourseId).
-
Студентов, не имеющих оценки по дисциплине, заданной названием
(StudentId, StudentName, GroupName по :CourseName).
-
Студентов, не имеющих оценки по дисциплине, у которых есть эта дисциплина
(StudentId, StudentName, GroupName по :CourseId).
-
Студентов, не имеющих оценки по дисциплине, у которых есть эта дисциплина
(StudentId, StudentName, GroupName по :CourseName).
-
Студенты и дисциплины, такие что у студента была дисциплина (по плану или есть оценка)
-
Идентификаторы
(StudentId, CourseId).
-
Имя и название
(StudentName, CourseName).
-
Студенты и дисциплины, такие что дисциплина есть в его плане и у студента долг по этой дисциплине
-
Долгом считается отсутствие оценки
(StudentName, CourseName).
-
Долгом считается оценка не выше 2
(StudentName, CourseName).
-
Долгом считается и отсутствие оценки и оценка не выше 2
(StudentName, CourseName).
-
Идентификаторы студентов по преподавателю
-
Имеющих хотя бы одну оценку у преподавателя
(StudentId по :LecturerName).
-
Не имеющих ни одной оценки у преподавателя
(StudentId по :LecturerName).
-
Имеющих оценки по всем дисциплинам преподавателя
(StudentId по :LecturerName).
-
Имеющих оценки по всем дисциплинам преподавателя, которые он вёл у этого студента
(StudentId по :LecturerName).
-
Группы и дисциплины, такие что все студенты группы сдали дисциплину
-
Идентификаторы
(GroupId, CourseId).
-
Названия
(GroupName, CourseName).
Примечания - В Datalog итоговым считается последнее объявленное отношение.
- Текущая реализация Datalog не поддерживает рекурсивные определения.
- В SQL-запросах нельзя использовать
* join .
В рамках проекта: -
Определите запросы (в том числе, агрегирующие),
необходимые для работы проекта.
- Реализуйте запросы на языке SQL.
|