Changes between Initial Version and Version 1 of View1


Ignore:
Timestamp:
01/04/26 20:36:30 (3 days ago)
Author:
211101
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • View1

    v1 v1  
     1= Целосен преглед на трансакции
     2
     3==== Опис
     4Овој поглед обезбедува целосен преглед на трансакциите, комбинирајќи податоци од повеќе табели во еден приказ
     5
     6Погледот е наменет за:
     7- прикажување трансакции во кориснички интерфејс
     8- извештаи
     9- аналитички пребарувања
     10
     11==== Табели опфатени со view-от
     12- `transaction`
     13- `transaction_breakdown`
     14- `transaction_account`
     15- `tag`
     16- `tag_assigned_to_transaction`
     17
     18==== Тип
     19- **READ-ONLY VIEW
     20
     21==== SQL код
     22{{{#!sql
     23CREATE OR REPLACE VIEW vw_transaction_overview AS
     24SELECT
     25    t.transaction_id,
     26    t.transaction_name,
     27    t.date,
     28    t.net_amount,
     29
     30    ta.transaction_account_id,
     31    ta.account_name,
     32
     33    STRING_AGG(DISTINCT tg.tag_name, ', ') AS tags
     34
     35FROM transaction t
     36JOIN transaction_breakdown tb
     37    ON tb.transaction_id = t.transaction_id
     38JOIN transaction_account ta
     39    ON ta.transaction_account_id = tb.transaction_account_id
     40LEFT JOIN tag_assigned_to_transaction tat
     41    ON tat.transaction_id = t.transaction_id
     42LEFT JOIN tag tg
     43    ON tg.tag_id = tat.tag_id
     44
     45GROUP BY
     46    t.transaction_id,
     47    t.transaction_name,
     48    t.date,
     49    t.net_amount,
     50    ta.transaction_account_id,
     51    ta.account_name;
     52}}}
     53
     54==== Објаснување на логиката
     55- Се комбинираат основните податоци за трансакцијата
     56- Се прикажува сметката на која трансакцијата влијае
     57- Таговите се агрегираат во една текстуална колона со `STRING_AGG`
     58- `LEFT JOIN` се користи за тагови бидејќи тие се опционални
     59
     60==== Причина за користење
     61Овој поглед е неопходен бидејќи:
     62- ја централизира логиката за читање на трансакции
     63- ја намалува комплексноста во апликацијата
     64- обезбедува конзистентен формат за приказ на податоци
     65Без ваков поглед, секој извештај би морал повторно да ги имплементира истите `JOIN`-ови