Реляционная алгебра (проверка работоспособности): филиалы, в число клиентов которых входят все клиенты Талсы.

Учитывая эти схемы:

Счет: bname, acct_no, balance
Депонент: cname, acct_no
Клиент: cname, street, city ‹-(все клиентов / как клиентов кредита, так и клиентов счета)
Кредит: номер_кредита, сумма, b_name
Заемщик: cname, номер_кредита
Отделение: bname, b_city, активы

Вопрос. Найдите филиалы, клиентами которых являются все клиенты, проживающие в Талсе.

Мой профессор дал это решение:

Π cname, bname(счет ⋈ вкладчик) / Πcnamecity == ‘Tulsa’ (клиенты))

Я не думаю, что часть Π cname, bname(счет ⋈ вкладчик) верна, потому что она включает ТОЛЬКО cname и bname клиентов со счетами и не включает ВСЕХ клиентов (исключая тех, у кого есть кредиты) . В вопросе конкретно не говорится: «Найти филиалы, клиенты которых со счетами включают всех клиентов, проживающих в Талсе».

Что мне не хватает?


person csguy    schedule 19.01.2020    source источник
comment
@philipxy я не понимал, что нужно было предполагать больше информации. Я имею в виду, что это вопросы, которые будут заданы на экзамене, учитывая именно то, что я предоставил. мб   -  person csguy    schedule 19.01.2020
comment
Надеюсь, вы сообщите нам, что ваш профессор сказал в ответ.   -  person philipxy    schedule 20.01.2020
comment
@philipxy поднял это в классе и сказал, что был неправ. надеюсь больше ошибок не будет   -  person csguy    schedule 22.01.2020


Ответы (1)


Мы можем догадаться — по именам, симметрии и вашему упоминанию «клиентов кредитов и счетов» — что существует правильный запрос, включающий (объединение проекций) (Account join Depositor) и (Loan join Borrower). Так что кажется, что ваш подход к вопросу разумен. Но вы не даете предикаты базовой таблицы (критерии, по которым появляются строки); вы полагаетесь на нас, чтобы угадать.

При наличии ограничений некоторые запросы возвращают те же результаты, что и другие, которые в противном случае не возвращались бы. Может быть, ваш профессор считает, что (очевидно, что) у заемщика должен быть счет. При этом ограничении, если ваша точка зрения верна, то и их тоже. Без определенных ограничений, подобных этим, вы правы в том, что они неправы. Но вы также не даете ограничений.

Однако вы, по-видимому, оба ошибаетесь: если у определенного филиала и Талсы нет клиентов, результат должен содержать этот филиал. Но частного не будет. Спецификация аналогична только той, которая соответствует подразделению. Ваше подразделение возвращает «филиалы, клиентами которых являются все клиенты, проживающие в Талсе» и у которых есть хотя бы один клиент. Это случай классических ошибок и неясностей в спецификации и реализации, включающих и почти включающих деление. С другой стороны, возможно, есть ограничение, что ни у одного банка нет клиентов. Тогда ваш вопрос верен, но не ваши рассуждения.

Реляционный запрос. (который вы можете использовать для точного и обоснованного обоснования вашего запроса и аргументов.)

person philipxy    schedule 19.01.2020