выберите ACCOUNT_NO, сумму, клиент от операций, где филиал = 'Pennywell'Как написать реляционную алгебру этих SQL запросов
выберите c.customer_name, c.cust_street, c.cust_city, б. branch_name, b.branch_city, a.account_no, a.баланс от клиента c, транзакции t, учетные записи a, ветвь b , где t.customer = c.customer_name и a.account_no = t.account_no и b.branch_name = a.branch_name
выберите customer_name, cust_city от клиента, где имя_пользователя отсутствует (выберите клиента из транзакции нс)
ответ
Первый из них только отбор на Pennywell с последующей проекцией на ACCOUNT_NO, количество, клиент:
\pi_{account_no, amount, customer} (\sigma_branch = 'Pennywell'(transactions))
Второй следует по тому же принципу:
- Список всех ваши столы:
клиентов, операции, счета, филиал
- Переименовать каждый из используя \ Rho:
\ rho_c (заказчик), \ rho_t (сделки), \ rho_a (счета) , \ rho_b (филиал)
- Вычислить декартово произведение
\ rho_c (клиент) х \ rho_t (сделки) х \ rho_a (счета) х \ rho_b (филиал)
- Выполните выбор ("где") на результат шаг 3 замены и конъюнкция, или с помощью дизъюнкции, а не отрицания:
\ sigma_ {t.customer = c.customer_name/\ a.account_no = t.account_no/\ b.branch_name = а .branch_name} (\ rho_c (с ustomer) х \ rho_t (сделки) х \ rho_a (счета) х \ rho_b (филиал))
- Наконец выполнить проекцию:
\ Pi_ {c.customer_name, с .cust_street, c.cust_city, b.branch_name, b.branch_city, a.account_no, a.balance} (\ sigma_ {t.customer = c.customer_name/\ a.account_no = t.account_no/\ b.branch_name = a ,branch_name} (\ rho_c (клиент) х \ rho_t (сделки) х \ rho_a (счета) х \ rho_b (филиал)))
Последний запрос является немного более сложным, и это включает в себя немного больше думать.
\ pi_ {customer_name} (сделки)
являются все клиенты, которые мы хотим игнорировать и
\ Pi_ {customer_name} (заказчик)
являются всех клиентов. Следовательно,
\ pi_ {customer_name} (заказчик) - \ pi_ {customer_name} (сделки)
все те, которые мы хотим сохранить. Наконец, мы должны найти свои города (для простоты я использую объединение оператора | х |):
\ Pi_ {CUSTOMER_NAME, cust_city} ((\ pi_ {customer_name} (заказчика) - \ pi_ {customer_name} (транзакции)) | x | клиент)
пожалуйста, что означает значение | x | cos Я не понимаю – chidoskychidosky
| x | является естественным оператором объединения. Из Википедии: «Результатом естественного объединения является совокупность всех комбинаций кортежей в R и S, которые равны по их общим именам атрибутов». –