Skip to content

Latest commit

 

History

History

hw06-relational-calculus

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Домашнее задание 6. Реляционное исчисление

Составьте запросы в терминах языков Datalog и SQL для базы данных «Университет», позволяющие получать:

  1. Информацию о студентах
    1. С заданным ФИО (StudentId, StudentName, GroupId по :StudentName).
    2. Учащихся в заданной группе (StudentId, StudentName, GroupId по :GroupName).
    3. C заданной оценкой по дисциплине, заданной идентификатором (StudentId, StudentName, GroupId по :Mark, :CourseId).
    4. C заданной оценкой по дисциплине, заданной названием (StudentId, StudentName, GroupId по :Mark, :CourseName).
  2. Полную информацию о студентах
    1. Для всех студентов (StudentId, StudentName, GroupName).
    2. Студентов, не имеющих оценки по дисциплине, заданной идентификатором (StudentId, StudentName, GroupName по :CourseId).
    3. Студентов, не имеющих оценки по дисциплине, заданной названием (StudentId, StudentName, GroupName по :CourseName).
    4. Студентов, не имеющих оценки по дисциплине, у которых есть эта дисциплина (StudentId, StudentName, GroupName по :CourseId).
    5. Студентов, не имеющих оценки по дисциплине, у которых есть эта дисциплина (StudentId, StudentName, GroupName по :CourseName).
  3. Студенты и дисциплины, такие что у студента была дисциплина (по плану или есть оценка)
    1. Идентификаторы (StudentId, CourseId).
    2. Имя и название (StudentName, CourseName).
  4. Студенты и дисциплины, такие что дисциплина есть в его плане и у студента долг по этой дисциплине
    1. Долгом считается отсутствие оценки (StudentName, CourseName).
    2. Долгом считается оценка не выше 2 (StudentName, CourseName).
    3. Долгом считается и отсутствие оценки и оценка не выше 2 (StudentName, CourseName).
  5. Идентификаторы студентов по преподавателю
    1. Имеющих хотя бы одну оценку у преподавателя (StudentId по :LecturerName).
    2. Не имеющих ни одной оценки у преподавателя (StudentId по :LecturerName).
    3. Имеющих оценки по всем дисциплинам преподавателя (StudentId по :LecturerName).
    4. Имеющих оценки по всем дисциплинам преподавателя, которые он вёл у этого студента (StudentId по :LecturerName).
  6. Группы и дисциплины, такие что все студенты группы сдали дисциплину
    1. Идентификаторы (GroupId, CourseId).
    2. Названия (GroupName, CourseName).

Примечания

  1. В Datalog итоговым считается последнее объявленное отношение.
  2. Текущая реализация Datalog не поддерживает рекурсивные определения.
  3. В SQL-запросах нельзя использовать * join.