Changes between Initial Version and Version 1 of RelationalModel


Ignore:
Timestamp:
04/18/26 19:02:21 (2 weeks ago)
Author:
231138
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • RelationalModel

    v1 v1  
     1= Релационен Модел
     2
     3'''Релационен дијаграм'''
     4
     5[[Image(RelationalModel.jpg)]]
     6
     7Дијаграмот е изработен во Visual Paradigm (десктоп верзија) и прикажува целосен релационен модел на базата на податоци на !DriveNet со 29 табели.
     8
     9
     10'''Описна документација и аргументација'''
     11
     12'''users, drivers, passengers — одвоени ентитети со заедничка база'''
     13
     14Корисниците се моделирани преку централна табела `users` која ги содржи заедничките атрибути (име, е-пошта, телефон, аватар итн.). Возачите и патниците се одвоени табели (`drivers`, `passengers`) со специфични атрибути за секоја улога — на пример, `max_detour_percent` е атрибут само на возачот, бидејќи единствено возачот одлучува колкаво отстапување на рутата е прифатливо. Еден корисник може да биде и возач и патник истовремено.
     15
     16'''vehicles, manufacturers, vehicle_models — хиерархија на возила'''
     17
     18Возилата се поврзани со производителите (`manufacturers`) и моделите (`vehicle_models`) преку посебни табели. Ова овозможува нормализирано чување на информациите за возилата и спречува дупликати на имиња на производители и модели.
     19
     20'''vehicle_ownership — врска возач-возило'''
     21
     22Поврзувачката табела `vehicle_ownership` ја моделира врската помеѓу возачите и нивните возила, при што еден возач може да поседува повеќе возила.
     23
     24'''routes, route_stops — рути со меѓустаници'''
     25
     26Рутата (`routes`) ги дефинира почетната и крајната точка, датумот и часот, бројот на слободни места и цената по километар. Меѓустаниците се чуваат одделно во табелата `route_stops` со редоследен број, што овозможува флексибилно дефинирање на рути со произволен број на застанувања.
     27
     28'''bookings — резервации по сегмент'''
     29
     30Резервацијата (`bookings`) е поврзана со конкретен патник, рута и почетна/крајна меѓустаница. Ова овозможува патникот да резервира само дел од рутата. Табелата содржи временски марки за потврда на качување (`pickup_confirmed_at`) и слегување (`dropoff_confirmed_at`).
     31
     32'''fare_splits — алгоритам за поделба на трошоци'''
     33
     34Бидејќи апликацијата работи исклучиво со готовинско плаќање, не постои табела за трансакции. Наместо тоа, `fare_splits` ги чува пресметаните износи кои секој патник треба да ги плати на возачот, врз основа на поминатата дистанца.
     35
     36'''ratings — оценување меѓу корисници'''
     37
     38Табелата `ratings` овозможува оценување меѓу учесниците по завршено патување. Дефиниран е CHECK constraint кој обезбедува дека корисникот не може да се оцени самиот себеси (`reviewer_user_id != reviewee_user_id`).
     39
     40'''notifications — известувања'''
     41
     42Табелата `notifications` чува известувања за корисниците (нови резервации, потврди, откажувања итн.) со статус на прочитаност.