Составьте запросы в терминах языков 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
.