Changes between Version 3 and Version 4 of RelationalModel


Ignore:
Timestamp:
04/18/26 21:32:39 (2 weeks ago)
Author:
231109
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • RelationalModel

    v3 v4  
    44
    55[[Image(er.png, 1500px)]]
     6
     7
     8==Дополнителен опис
     9
     10Во овој модел, клучните ентитети се структурирани на начин што овозможува прецизно и систематско следење на инфраструктурата и возниот ред.
     11
     121. Специјализација на кориснички улоги
     13Ентитетот Person претставува основа на моделот и преку парцијална специјализација се разгранува на Passenger и Employee.
     14
     15Табелата Employee содржи дополнителни атрибути како position и salary. Особено важно е што надворешниот клуч во сите поврзани табели (како Train Trip или Employee_performs_Maintenance) е композитен и се состои од employee_id и PersonEMBG. На овој начин се обезбедува конзистентност на податоците и јасна поврзаност со конкретното физичко лице.
     16
     172. Хиерархија на инфраструктурата (Route, Segment и Platform)
     18Моделот нуди детализиран приказ на физичката патека по која се движат возовите.
     19
     20Route_Segment е спојна табела која дефинира кои физички делови (Segment) ја сочинуваат една линија (Route). Атрибутот sequence_number има клучна улога, бидејќи го утврдува редоследот на движење по сегментите.
     21
     22Постои и логичко ограничување поврзано со атрибутот is_station_stop во Route_Segment: доколку овој атрибут е поставен на „true“, задолжително мора да постои валидна вредност за Stationstation_id, што означува дека сегментот завршува на станица каде што возот застанува за прием на патници. Во спротивно, сегментот се третира како транзитен (junction) без патничка функција.
     23
     243. Реализација на возниот ред (Train Trip)
     25Табелата Train Trip ја претставува конкретната реализација на едно патување.
     26
     27Таа е поставена како централна точка во моделот, каде што се поврзуваат линиите (Route), возовите (Train) и вработените (Employee).
     28
     29Во однос на денормализацијата, атрибутот delay_minutes се ажурира во реално време. Иако доцнењето може да се пресмета преку споредба на departure_time со планираниот возен ред во Schedule, овој атрибут е експлицитно зачуван во Train Trip со цел да се оптимизираат аналитичките пребарувања, особено за корисници кои проверуваат тековни доцнења.
     30
     314. Одржување и безбедност
     32Системот опфаќа две клучни many-to-many (M:N) релации поврзани со одржувањето:
     33
     34Employee_performs_Maintenance — овозможува следење кои вработени (техничари) учествувале во одреден сервисен налог (Maintenance).
     35Train_undergoes_Maintenance — го поврзува секој налог за одржување со конкретен воз.
     36
     37Постои важно логичко правило: иако моделот дозволува еден налог за одржување да биде поврзан со повеќе возови, во пракса точно еден од клучевите (Traintrain_id или Segmentsegment_id) треба да биде non-null. Ова зависи од тоа дали одржувањето се врши врз воз (мобилен ресурс) или врз инфраструктура (сегмент/шина). Ова правило дополнително се гарантира преку CHECK ограничувања во DDL скриптата.
     38
     395. Резервации и плаќања
     40Табелата Reservation претставува привремен запис за намерата на патникот да резервира билет. Таа го содржи атрибутот expiry_time — доколку плаќањето не се изврши во зададениот временски рок (на пример, 15 минути), резервацијата автоматски се смета за невалидна.
     41
     42Само по успешно внесување запис во табелата Payment, се генерира финален Ticket. Овој билет е поврзан со конкретно седиште (seat_number) и вагон (carriage_number) во соодветниот воз за даденото патување.
     43