Changes between Version 10 and Version 11 of OtherTopics


Ignore:
Timestamp:
09/24/26 12:52:35 (2 days ago)
Author:
192063
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OtherTopics

    v10 v11  
    296296
    297297
    298 = Сценарио 1 - Плаќање преку metamusk =
    299 
    300 
    301 
    302 
    303 
    304 
    305 
    306 
    307 
    308 
    309 
    310 
    311 
     298= Сценарио 2 - Преглед на плаќањата од страна на родител =
     299За родителот да може да ги види своите плаќања за сите соопштенија, мора базата да филтрира според родител ид.
     300
     301Пример: Ги зимаме сите плаќања за родителот со ид 9c8a9a5c-d96f-47a6-9611-d6ad4233fa4f:
     302{{{
     303SELECT p.id, p.status, p.tx_hash, p.iznos, p.valuta, p.plateno_Na, p.platenoOdRoditel_id, p.soopstenie_za_plakjanje_id, p.created_at,
     304k.ime, k.prezime
     305FROM plakjanje p
     306JOIN Korisnik k ON k.id = p.platenoOdRoditel_id
     307WHERE p.platenoOdRoditel_id = '9c8a9a5c-d96f-47a6-9611-d6ad4233fa4f'
     308}}}
     309
     310
     311Доколку го анализираме овој Query:
     312
     313{{{
     314Nested Loop  (cost=4.58..23.57 rows=4 width=160) (actual time=0.049..0.053 rows=4 loops=1)
     315  ->  Index Scan using korisnik_pkey on korisnik k  (cost=0.28..8.29 rows=1 width=32) (actual time=0.023..0.024 rows=1 loops=1)
     316        Index Cond: (id = '9c8a9a5c-d96f-47a6-9611-d6ad4233fa4f'::uuid)
     317  ->  Bitmap Heap Scan on plakjanje p  (cost=4.31..15.24 rows=4 width=144) (actual time=0.020..0.020 rows=4 loops=1)
     318        Recheck Cond: (platenoodroditel_id = '9c8a9a5c-d96f-47a6-9611-d6ad4233fa4f'::uuid)
     319        Heap Blocks: exact=1
     320        ->  Bitmap Index Scan on plakjanje_platenoodroditel_id_soopstenie_za_plakjanje_id_key  (cost=0.00..4.31 rows=4 width=0) (actual time=0.009..0.009 rows=4 loops=1)
     321              Index Cond: (platenoodroditel_id = '9c8a9a5c-d96f-47a6-9611-d6ad4233fa4f'::uuid)
     322Planning Time: 0.177 ms
     323Execution Time: 0.092 ms
     324}}}
     325
     326Можеме да видиме дека
     327* Planning Time е:  0.177 ms
     328* Execution Time: 0.092 ms
     329* Начин на скенирање:
     330* * Index scan: Се користи korisnik_pkey
     331* * Bitmap heap scan: Преку platenoOdRoditelId
     332* * Bitmap index scan: Со користење на plakjanje_platenoodroditel_id_soopstenie_za_plakjanje_id_key
     333* Се користи index за наставникот кој го внел присуството: evidentiranood_id
     334* Се користи index за часот за кој е присуството.
     335
     336Но, за овој query не креиравме никаков индекс, но сепак се користи индекс.
     337Ова е композитен индекс кој доаѓа од користење на UNIQUE constraint-от.
     338
     339Односно овој DDL:
     340{{{
     341CREATE TABLE Plakjanje (
     342    id UUID PRIMARY KEY DEFAULT gen_random_uuid (),
     343    status payment_status NOT NULL,
     344    tx_hash VARCHAR(100) UNIQUE,
     345    valuta VARCHAR(10) NOT NULL,
     346    plateno_Na TIMESTAMP,
     347    iznos DECIMAL(38, 18) NOT NULL,
     348    platenoOdRoditel_Id UUID NOT NULL,
     349    soopstenie_za_plakjanje_id UUID NOT NULL,
     350    created_at TIMESTAMP DEFAULT now(),
     351    UNIQUE (
     352        platenoOdRoditel_Id,
     353        soopstenie_za_plakjanje_id
     354    ),
     355    CONSTRAINT chk_tx_hash_when_paid CHECK (
     356        (
     357            status = 'KREIRANO'
     358            AND tx_hash IS NULL
     359        )
     360        OR (
     361            status IN (
     362                'TX_SUBMITTED',
     363                'ODOBRENO',
     364                'ZAVRSENO',
     365                'FAILED'
     366            )
     367            AND tx_hash IS NOT NULL
     368        )
     369    ),
     370    FOREIGN KEY (soopstenie_za_plakjanje_id) REFERENCES SoopstenieZa_Plakjanje (id),
     371    FOREIGN KEY (platenoOdRoditel_Id) REFERENCES Roditel (id)
     372);
     373}}}
     374
     375
     376
     377
     378
     379
     380
     381
     382
     383