== Оптимизација на прашалници и погледи == [[html( Optimizacija i Prashalnici)]]
Напредни бази на податоци
Фаза 3 – Оптимизација на прашалници и погледи
Име на проект: BankPaymentService
View 1: Најава на корисник (Login view)
Филтри: Примарен филтер за погледот v_user_login ќе биде според username, а дополнително се филтрира само на корисници со статус ACTIVE.
Употреба: е процесот на логирање на клиент во системот. Погледот обезбедува брз пристап до корисничкото име, и статусот на сметката.
Иницијално време: Иницијалното време за извршување на погледот е 0.315ms. Ова е прифатливо време за апликацијата.

Најбавните операции се две Index Scan операции:
Index Scan на табела client_user преку индексот client_user_username_key
- Actual Total Time: 0.039ms
Index Scan на табела client преку индексот client_pkey - Actual Total
Time: 0.013ms
Вкупниот Nested Loop завршува за само 0.056ms. Бидејќи се работи за Index Scan (не Full Scan), операциите не можат значително да се подобрат со дополнителни индекси.

Времето изминато во извршување на операциите insert и update изнесува


View 2: Извештаи (Receipt view)
Филтри: Примарен филтер за погледот v_client_receipts ќе биде според client_id, а дополнително може да се користи и според transaction_date (по временски период - месец и година).
Употреба: Примарен случај на употреба е преглед на издадени сметки за клиент по одреден период. За овој поглед ни се важни перформансите, бидејќи без него се губи време при извршување.




Време на извршување на операциите insert и update останува исто.
View 3: Рати (Loan installments view)
Филтри: Примарен филтер за погледот v_loan_installments ќе биде според loan_id.
Употреба: Примарен случај на употреба е кога клиентот или банкарскиот персонал сака да ги прегледа ратите за конкретен кредит. За овој поглед ни се важни перформансите.



Нема потреба да се преуреди прашалникот.
View 4: Преглед на кредити
Филтри: Примарен филтер за погледот v_loan_details ќе биде според loan_id, а исто така и според client_id.
Употреба: Примарен случај на употреба е целосен преглед на кредитна апликација. За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.

Најбавните операции се JOIN-овите на Account и Collateral преку loan_id, кои немаат индекси на надворешниот клуч.






Времето изминато во извршување на операцијата update по
индексирање изнесува

View 5: Трансфери меѓу сметки, трансакции
Филтри: Примарен филтер за погледот v_client_transfers ќе биде според sender_client_id, а дополнително и според transaction_date.
Употреба: Примарен случај на употреба е кога клиентот сака да ги прегледа своите извршени трансфери. За овој поглед ни се важни перформансите.




Нема потреба да се преуредува прашалникот.
View 6: Сомнителни трансакции
Филтри: Примарен филтер за погледот v_suspicious_transactions е
amount > 9000 AND status IN ('PENDING', 'FAILED').
Употреба: Примарен случај на употреба е мониторинг на потенцијално сомнителна активност (AML). За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.








View 7: Вкупна состојба на клиент
Филтри: Примарен филтер за погледот v_account_balance ќе биде според client_id.
Употреба: Примарен случај на употреба е кога клиентот сака да го провери балансот на своите сметки. Овде се битни перформансите, затоа што сакаме апликацијата да функционира без застој.



Нема потреба да се преуреди прашалникот.
View 8: Следење на доцнења (Loan Default Monitoring)
Филтри: Примарен филтер за погледот v_loan_default_monitoring ќе биде според installment_status IN ('PENDING','LATE') и due_date, со услов paid_date IS NULL.
Употреба: Примарен случај на употреба е кога банкарскиот персонал сака да ги идентификува клиентите кои задоцниле со плаќање. За овој поглед ни се важни перформансите, бидејќи без него се губи многу време при извршување.
Иницијално време: Иницијалното време за извршување на погледот е 9s 289ms. Иницијалното време за извршување на погледот беше побавно поради full scan на табелата Loan_installment. Ова не е прифатливо време за апликацијата па затоа пристапуваме кон индексирање.







Времето изминато во извршување на операциите insert и update по
индексирање изнесува


View 9: Accounts (сметки)
Филтри: Примарен филтер за погледот v_accounts ќе биде според client_id.
Употреба: Примарен случај на употреба е преглед на сите сметки на клиент при услуги на шалтер. Овде се битни перформансите.



Нема потреба да се преуредува прашалникот.
View 10: Камати по штедни сметки
Филтри: Примарен филтер за погледот v_savings_interest_payments ќе биде според client_id.
Употреба: Примарен случај на употреба е кога клиентот сака да ги прегледа добиените камати по период. Овде се важни перформансите.



Нема потреба да се преуредува прашалникот.
View 11: Дневен извештај на филијала
Филтри: Примарен филтер за погледот v_daily_branch_report ќе биде според branch_id, а дополнително и според report_date.
Употреба: Примарен случај на употреба е кога раководството на филијалата или централниот менаџмент сака да ги следи дневните активности. Овде се битни перформансите.



Нема потреба да се преуредува прашалникот.
Членови на тим:
Михаела Ковчегарска 231068
Јована Мечева 231124
Емилија Костова 231107