Changes between Version 2 and Version 3 of AdvancedApplicationDesign_v2


Ignore:
Timestamp:
09/03/25 21:16:21 (6 days ago)
Author:
212012
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedApplicationDesign_v2

    v2 v3  
    1313    count(CASE when cc.c_status = 'Z' then 1 end) as closed_cases,
    1414    count(sc.c_id) as solved_cases
    15 from Police_station as ps
    16 left join Crime_case as cc on ps.p_id = cc.p_id
    17 left join Solved_case as sc on cc.c_id = sc.c_id
    18 left join Sector_of_interal_affairs as sia on ps.s_id = sia.s_id
     15from police_station as ps
     16left join crime_case as cc on ps.p_id = cc.p_id
     17left join solved_case as sc on cc.c_id = sc.c_id
     18left join sector_of_interal_affairs as sia on ps.s_id = sia.s_id
    1919group by ps.p_id, ps.p_address, sia.city;
    2020}}}
     
    3131    count(cbtc.c_id) as total_cases,
    3232    count(sc.c_id) as solved_cases,
    33         count(distinct af.accused_pe_id) as total_accused
    34 from Type_of_crime as tc
    35 left join Case_belongs_to_type_of_crime as cbtc on tc.t_id = cbtc.t_id
    36 left join Crime_case as cc on cbtc.c_id = cc.c_id
    37 left join Solved_case as sc on cc.c_id = sc.c_id
    38 left join Accused_for as af on cc.c_id = af.c_id
     33    count(distinct af.accused_pe_id) as total_accused
     34from type_of_crime as tc
     35left join case_belongs_to_type_of_crime as cbtc on tc.t_id = cbtc.t_id
     36left join crime_case as cc on cbtc.c_id = cc.c_id
     37left join solved_case as sc on cc.c_id = sc.c_id
     38left join accused_for as af on cc.c_id = af.c_id
    3939group by tc.t_id, tc.t_name;
    4040}}}
     
    5555    ps.p_address as station_address,
    5656    count(distinct cc.c_id) as cases_managed
    57 from Officer as o
    58 join People as p on o.pe_id = p.pe_id
    59 left join Police_station ps on o.pe_id = ps.pe_id
    60 left join Crime_case cc on ps.p_id = cc.p_id
     57from officer as o
     58join people as p on o.pe_id = p.pe_id
     59left join police_station ps on o.pe_id = ps.pe_id
     60left join crime_case cc on ps.p_id = cc.p_id
    6161group by o.pe_id, p.first_name, p.last_name, o.o_badge_no, o.o_date_of_employment, ps.p_address
    6262
     
    7272    ps.p_address as station_address,
    7373    count(distinct s.c_id) as cases_handled
    74 from Policeman as pm
    75 join People as p on pm.pe_id = p.pe_id
    76 left join Police_station as ps on pm.p_id = ps.p_id
    77 left join Statements as s on pm.pe_id = s.pe_id
     74from policeman as pm
     75join people as p on pm.pe_id = p.pe_id
     76left join police_station as ps on pm.p_id = ps.p_id
     77left join statements as s on pm.pe_id = s.pe_id
    7878group by pm.pe_id, p.first_name, p.last_name, pm.badge_no, pm.p_date_of_employment, ps.p_address;
    7979}}}
     
    9090    count(case when e.is_found = true then 1 end) as found_evidence,
    9191    count(case when e.is_found = false then 1 end) as missing_evidence
    92 from Evidence as e
     92from evidence as e
    9393group by e.e_type;
    9494}}}
     
    100100{{{#!div
    101101{{{#!sql
    102 create index idx_people_embg on People(embg);
    103 }}}
    104 }}}
    105 
    106 {{{#!div
    107 {{{#!sql
    108 create index idx_people_names on People(first_name, last_name);
    109 }}}
    110 }}}
    111 
    112 {{{#!div
    113 {{{#!sql
    114 create index idx_people_nationality on People(nationality);
     102create index idx_people_embg on people(embg);
     103}}}
     104}}}
     105
     106{{{#!div
     107{{{#!sql
     108create index idx_people_names on people(first_name, last_name);
     109}}}
     110}}}
     111
     112{{{#!div
     113{{{#!sql
     114create index idx_people_nationality on people(nationality);
    115115}}}
    116116}}}
     
    120120{{{#!div
    121121{{{#!sql
    122 create index idx_crime_case_status on Crime_case(c_status);
    123 }}}
    124 }}}
    125 
    126 {{{#!div
    127 {{{#!sql
    128 create index idx_crime_case_date on Crime_case(opening_date);
     122create index idx_crime_case_status on crime_case(c_status);
     123}}}
     124}}}
     125
     126{{{#!div
     127{{{#!sql
     128create index idx_crime_case_date on crime_case(opening_date);
    129129}}}
    130130}}}
     
    134134{{{#!div
    135135{{{#!sql
    136 create index idx_statements_date on Statements(statement_date);
    137 }}}
    138 }}}
    139 
    140 {{{#!div
    141 {{{#!sql
    142 create index idx_statements_incident on Statements(incident_timestamp);
     136create index idx_statements_date on statements(statement_date);
     137}}}
     138}}}
     139
     140{{{#!div
     141{{{#!sql
     142create index idx_statements_incident on statements(incident_timestamp);
    143143}}}
    144144}}}
     
    148148{{{#!div
    149149{{{#!sql
    150 create index idx_evidence_type on Evidence(e_type);
    151 }}}
    152 }}}
    153 
    154 {{{#!div
    155 {{{#!sql
    156 create index idx_evidence_found on Evidence(is_found);
     150create index idx_evidence_type on evidence(e_type);
     151}}}
     152}}}
     153
     154{{{#!div
     155{{{#!sql
     156create index idx_evidence_found on evidence(is_found);
    157157}}}
    158158}}}
     
    162162{{{#!div
    163163{{{#!sql
    164 create index idx_policeman_rank on Policeman(rank);
     164create index idx_policeman_rank on policeman(rank);
    165165}}}
    166166}}}
     
    178178begin
    179179    select cc.opening_date into opening_date
    180     from Crime_case as cc
     180    from crime_case as cc
    181181    where cc.c_id = case_id;
    182182   
    183183    select sc.date_of_closing into closing_date
    184     from Solved_case as sc
     184    from solved_case as sc
    185185    where sc.c_id = case_id;
    186186   
     
    204204returns trigger as $$
    205205begin
    206     update Crime_case
     206    update crime_case
    207207    set c_status = 'Z'
    208208    where c_id = NEW.c_id and c_status = 'A';
     
    213213
    214214create trigger trg_update_case_status
    215     after insert on Solved_case
     215    after insert on solved_case
    216216    for each row
    217217    execute function update_case_status_on_solve();
     
    240240    crime_type_id bigint;
    241241begin
    242     select coalesce(MAX(c_id), 0) + 1 into new_case_id from Crime_case;
    243    
    244     insert into Crime_case (c_id, c_name, opening_date, c_status, p_id)
     242    select coalesce(MAX(c_id), 0) + 1 into new_case_id from crime_case;
     243   
     244    insert into crime_case (c_id, c_name, opening_date, c_status, p_id)
    245245    values (new_case_id, p_case_name, CURRENT_DATE, 'A', p_police_station_id);
    246246   
     
    252252    foreach crime_type_id IN ARRAY p_crime_types
    253253    loop
    254         insert into Case_belongs_to_type_of_crime (c_id, t_id)
     254        insert into case_belongs_to_type_of_crime (c_id, t_id)
    255255        values (new_case_id, crime_type_id);
    256256    end loop;
     
    273273    v_new_officer bigint;
    274274begin
    275     -- Get current station
    276     select p_id into v_old_station from Crime_case where c_id = v_case_id;
    277    
    278     -- Get officer for new station
    279     select pe_id into v_new_officer from Police_station where p_id = v_new_station;
    280    
    281     -- Transfer case
    282     update Crime_case
     275    select p_id into v_old_station from crime_case where c_id = v_case_id;
     276   
     277    select pe_id into v_new_officer from police_station where p_id = v_new_station;
     278   
     279    update crime_case
    283280    set p_id = v_new_station
    284281    where c_id = v_case_id;
    285282   
    286     -- Add transfer statement
    287     insert into Statements (s_id, statement_date, description, incident_timestamp,
    288                           incident_place, c_id, pe_id, victim_pe_id, witness_pe_id)
    289     select coalesce(MAX(s_id), 0) + 1, CURRENT_DATE, 'Случајот е префрлен од станица ' || v_old_station || ' во станица ' || v_new_station, CURRENT_TIMESTAMP, 'Префрлување на случај', v_case_id, (select pe_id from Policeman where p_id = v_new_station limit 1), 2, 3
    290     from Statements;
     283    insert into statements (s_id, statement_date, description, incident_timestamp, incident_place, c_id, pe_id, victim_pe_id, witness_pe_id)
     284    select coalesce(MAX(s_id), 0) + 1, CURRENT_DATE, 'Случајот е префрлен од станица ' || v_old_station || ' во станица ' || v_new_station, CURRENT_TIMESTAMP, 'Префрлување на случај', v_case_id, (select pe_id from policeman where p_id = v_new_station limit 1), 2, 3
     285    from statements;
    291286   
    292287    raise notice 'Случајот со ID % е префрлен од полициска станица % во полициска станица %', v_case_id, v_old_station, v_new_station;