Теория баз данных



         

Специальные операции реляционной алгебры - часть 6


Для того чтобы получить список студентов, нам надо соединить отношение R3 с отношением R2, в котором определен список студентов каждой группы.

R4 = (R2[R3Номер группы = R2.НомерГруппы ^ R3.Дисциплина = «БД»] R3)[ФИО];

  • Теперь получим список всех, кто сдавал экзамен по «БД» (нас пока не интересует результат сдачи, а интересует сам факт попытки сдачи, то есть присутствие в отношении R1):

    R5 = (R1 [Дисциплина = «БД»1)[ФИО];

    и, наконец, результат — все, кто есть в первом множестве, но не во втором:

    S = R4 \ R5;

    Список несчастных, имеющих несколько двоек:

    S = (R1[R1.ФИО = Rl.ФИО ^ R1Дисцинлина не равно R'1.Дисциплина ^

    R1Оценка <= 2^ R'1.Оценка < 2] Rэ1,)[ФИО]

    Этот пример весьма интересен: для поиска строк, удовлетворяющих в совокупности условию больше одною, применяется операция соединения отношения с самим собой. Поэтому мы как бы взяли копию отношения R1 и назвали ее R'1.

  • Список круглых отличников. Строим список всех пар <студеит—дисциплина>, которые в принципе должны быть сданы:

    R4 = (R2[R2Группа = R3Группa] R3)[ФИО, Дисциплина];

    Строим список пар <студент- дисциплина>, где получена оценка «отлично»:

    R5 = (R1|[Оценкa = 5])[ФИО, Дисциплина];

    Строим список студентов, что-либо не сдавших на отлично:

    R6=(R4\R5)[ФИО].

    Наконец, исключив последнее отношение из общего списка студентов, получаем результат:

    R2[ФИО] \ R6

    Обратите внимание, что для получения множества студентов, что-либо не сдавших на «отлично» (R6). мы осуществили «инверсию» множества всех отлично сданных пар <студент—дисциплина> (R5) путем вычитания его из предварительного построенного универсального множества (R4). Рекомендуем очень внимательно разобрать этот пример и вникнуть в смысл каждого действия — это очень пригодится для понимания реляционной алгебры.




    Содержание  Назад  Вперед