Даны отношения, моделирующие работу банка и его филиалов. Клиент может иметь несколько счетов, при этом они могут быть размещены как в одном, так и в разных филиалах банка. В отношении R1 содержится информация обо всех клиентах и их счетах в филиалах нашего банка. Каждый клиент, в соответствии со своим счетом, может рассчитывать на некоторый кредит от нашего банка, сумма допустимого кредита также зафиксирована.
R1
ФИО клиента № филиала № счета Остаток Кредит
R2
№ филиала Район
С использованием языка реляционной алгебры составить запросы, позволяющие выбрать:
1. Филиалы, клиенты которых имеют счета с остатком, превышающим $1000.
2. Клиентов, которые имеют счета во всех филиалах данного банка.
3. Клиентов, которые имеют только по одному счету в разных филиалах банка. То есть в общем у этих клиентов может быть несколько счетов, но в одном филиале не более одного счета.
4. Клиенты, которые имеют счета в нескольких филиалах банка, расположенных только в одном районе.
5. Филиалы, которые не имеют ни одного клиента.
6. Филиалы, которые имеют клиентов с остатком на счету 0 (ноль).
7. Филиалы, у которых есть клиенты с кредитом, превышающим остаток на счету в 2 раза.
Составить запрос на sql у меня более-менее получилось, а вот с помощью реляционной алгебры нет.
Запрос реляционной алгебры должен выглядеть например так
"R4 = (R2[R3Номер группы = R2.НомерГруппы ^ R3.Дисциплина = «БД»] R3)[ФИО]"
Например вопрос 2 - Клиентов, которые имеют счета во всех филиалах данного банка
На sql -
SELECT ФИОклиента FROM r1 GROUP BY ФИОклиента HAVING COUNT(DISTINCT Nфилиала ) = (SELECT COUNT(DISTINCT Nфилиала) FROM r2)
А с помощью реляционной алгебры не знаю как выразить вопрос 2.