Changes between Version 4 and Version 5 of AdvancedApplicationDesign_v2


Ignore:
Timestamp:
08/30/25 22:25:10 (7 days ago)
Author:
212028
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedApplicationDesign_v2

    v4 v5  
    189189{{{#!div
    190190{{{#!sql
    191 create index idx_instancanalinija_li_id on instancanalinija (li_id);
     191create index idx_instancanalinija_li_id on instancanalinija (li_id); - како резултат на join и li_id foreign key
    192192}}}
    193193}}}
     
    197197{{{#!div
    198198{{{#!sql
    199 create index idx_kontroli_inl_id on kontroli (inl_id);
     199create index idx_kontroli_inl_id on kontroli (inl_id); - како резултат на join и inl_id foreign key
    200200}}}
    201201}}}
     
    205205{{{#!div
    206206{{{#!sql
    207 create index idx_kazna_kontrola_id on kazna (kontrola_id);
    208 }}}
    209 }}}
    210 {{{#!div
    211 {{{#!sql
    212 create index idx_kazna_kz_datum_year on kazna (extract(year from kz_datum));
    213 }}}
     207create index idx_kazna_kontrola_id on kazna (kontrola_id); - како резултат на join и kontrola_id foreign key
     208}}}
     209}}}
     210{{{#!div
     211{{{#!sql
     212create index idx_kazna_kz_datum_year on kazna (extract(year from kz_datum)); - како резултат на честото групирање и сортирање по година изведено од датумот на казната
     213}}}
     214}}}
     215{{{#!div
     216{{{#!sql
     217create index idx_kazna_plateno on kazna (kz_datum, kz_datum_plateno) where kz_plateno = true; - како резултат на филтрирање на казните кои се платени
    214218}}}
    215219
     
    218222{{{#!div
    219223{{{#!sql
    220 create index idx_vozenje_inl_id on vozenje(inl_id);
    221 }}}
    222 }}}
    223 {{{#!div
    224 {{{#!sql
    225 create index idx_vozenje_pnl_id on vozenje(pnl_id);
    226 }}}
    227 }}}
    228 {{{#!div
    229 {{{#!sql
    230 create index idx_vozenje_patnik_k_id on vozenje(patnik_k_id);
    231 }}}
    232 }}}
    233 {{{#!div
    234 {{{#!sql
    235 create index idx_vozenje_hour on vozenje(extract(year from vozenje_start));
     224create index idx_vozenje_inl_id on vozenje(inl_id); - како резултат на join и inl_id foreign key
     225}}}
     226}}}
     227{{{#!div
     228{{{#!sql
     229create index idx_vozenje_pnl_id on vozenje(pnl_id); - како резултат на join и pnl_id foreign key
     230}}}
     231}}}
     232{{{#!div
     233{{{#!sql
     234create index idx_vozenje_patnik_k_id on vozenje(patnik_k_id); - како резултат на join и patnik_k_id foreign key
     235}}}
     236}}}
     237{{{#!div
     238{{{#!sql
     239create index idx_vozenje_hour on vozenje(extract(year from vozenje_start)); - како резултат на честото групирање и сортирање по година изведено од датумот на започнато возење
    236240}}}
    237241}}}
     
    241245{{{#!div
    242246{{{#!sql
    243 create index idx_pnl_p_id on postojka_na_linija(p_id);
    244 }}}
    245 }}}
    246 {{{#!div
    247 {{{#!sql
    248 create index idx_pnl_li_id on postojka_na_linija(li_id);
     247create index idx_pnl_p_id on postojka_na_linija(p_id); - како резултат на join и p_id foreign key
     248}}}
     249}}}
     250{{{#!div
     251{{{#!sql
     252create index idx_pnl_li_id on postojka_na_linija(li_id); - како резултат на join и li_id foreign key
    249253}}}
    250254}}}
     
    254258{{{#!div
    255259{{{#!sql
    256 create index idx_bilet_tb_id on bilet(tb_id);
    257 }}}
    258 }}}
    259 {{{#!div
    260 {{{#!sql
    261 create index idx_bilet_year on bilet(extract(year from b_datum_na_kupuvanje));
     260create index idx_bilet_tb_id on bilet(tb_id); - како резултат на join и tb_id foreign key
     261}}}
     262}}}
     263{{{#!div
     264{{{#!sql
     265create index idx_bilet_year on bilet(extract(year from b_datum_na_kupuvanje)); - како резултат на честото групирање и сортирање по година изведено од датумот на купениот булет
    262266}}}
    263267}}}
     
    519523}}}
    520524}}}
     525
     526= Релациона алгебра =
     527
     528=== 1. Број казнети според линија секоја година ===
     529
     530{{{#!div
     531{{{#!sql
     532τ_{godina, linija.li_ime} (
     533  π_{godina, linija.li_ime, broj_kazni} (
     534    γ_{EXTRACT_YEAR(kazna.kz_datum) → godina, linija.li_ime; COUNT(*) → broj_kazni} (
     535      linija ⨝ istanca_na_linija ⨝ kontroli ⨝ kazna
     536    )
     537  )
     538)
     539}}}
     540}}}
     541
     542=== 2. Најголем број возења по интервал од 1 час според линија за секоја година ===
     543
     544{{{#!div
     545{{{#!sql
     546τ_godina (
     547  π_godina, li_ime, interval_1h, broj_vozenja (
     548
     549    σ_(godina, li_ime, broj_vozenja) ∈ (
     550      π_godina, li_ime, max_broj_vozenja (
     551        γ_godina, li_ime; MAX(broj_vozenja) → max_broj_vozenja (
     552          γ_EXTRACT_YEAR(v.vozenje_start)::int → godina,
     553            li.li_ime,
     554            TO_CHAR(EXTRACT(HOUR FROM v.vozenje_start), '00') || ':00 - ' ||
     555            TO_CHAR(EXTRACT(HOUR FROM (v.vozenje_start + INTERVAL '1 hour')), '00') || ':00'
     556              → interval_1h;
     557            COUNT(*) → broj_vozenja (
     558              Linija ⨝ InstancaNaLinija ⨝ Vozenje
     559            )
     560          )
     561        )
     562      )
     563    ) (
     564      γ_EXTRACT_YEAR(v.vozenje_start)::int → godina,
     565        li.li_ime,
     566        TO_CHAR(EXTRACT(HOUR FROM v.vozenje_start), '00') || ':00 - ' ||
     567        TO_CHAR(EXTRACT(HOUR FROM (v.vozenje_start + INTERVAL '1 hour')), '00') || ':00'
     568          → interval_1h;
     569        COUNT(*) → broj_vozenja (
     570          Linija ⨝ InstancaNaLinija ⨝ Vozenje
     571        )
     572    )
     573  )
     574)
     575}}}
     576}}}
     577
     578=== 3. Профит од казни и билети за секоја година ===
     579
     580{{{#!div
     581{{{#!sql
     582τ_godina (
     583  γ_godina; SUM(COALESCE(kz_iznos,0)) + SUM(COALESCE(tb_cena,0)) → vkupen_promet (
     584    (
     585      π_EXTRACT_YEAR(kz.kz_datum)::int → godina,
     586        kz.kz_iznos,
     587        NULL → tb_cena (
     588        σ_kz.kz_plateno = true ∧ kz.kz_datum IS NOT NULL ∧ kz.kz_datum_plateno IS NOT NULL ∧
     589          EXTRACT(YEAR FROM kz.kz_datum) = EXTRACT(YEAR FROM kz.kz_datum_plateno) (Kazna)
     590      )
     591    )
     592    ∪
     593    (
     594      π_EXTRACT_YEAR(b.b_datum_na_kupuvanje)::int → godina,
     595        NULL → kz_iznos,
     596        tb.tb_cena (
     597        (Bilet ⨝ TipBilet)
     598      )
     599    )
     600   
     601  )
     602)
     603}}}
     604}}}