wiki:RelationalModel

Version 1 (modified by 231138, 2 weeks ago) ( diff )

--

Релационен Модел

Релационен дијаграм

Дијаграмот е изработен во Visual Paradigm (десктоп верзија) и прикажува целосен релационен модел на базата на податоци на DriveNet со 29 табели.

Описна документација и аргументација

users, drivers, passengers — одвоени ентитети со заедничка база

Корисниците се моделирани преку централна табела users која ги содржи заедничките атрибути (име, е-пошта, телефон, аватар итн.). Возачите и патниците се одвоени табели (drivers, passengers) со специфични атрибути за секоја улога — на пример, max_detour_percent е атрибут само на возачот, бидејќи единствено возачот одлучува колкаво отстапување на рутата е прифатливо. Еден корисник може да биде и возач и патник истовремено.

vehicles, manufacturers, vehicle_models — хиерархија на возила

Возилата се поврзани со производителите (manufacturers) и моделите (vehicle_models) преку посебни табели. Ова овозможува нормализирано чување на информациите за возилата и спречува дупликати на имиња на производители и модели.

vehicle_ownership — врска возач-возило

Поврзувачката табела vehicle_ownership ја моделира врската помеѓу возачите и нивните возила, при што еден возач може да поседува повеќе возила.

routes, route_stops — рути со меѓустаници

Рутата (routes) ги дефинира почетната и крајната точка, датумот и часот, бројот на слободни места и цената по километар. Меѓустаниците се чуваат одделно во табелата route_stops со редоследен број, што овозможува флексибилно дефинирање на рути со произволен број на застанувања.

bookings — резервации по сегмент

Резервацијата (bookings) е поврзана со конкретен патник, рута и почетна/крајна меѓустаница. Ова овозможува патникот да резервира само дел од рутата. Табелата содржи временски марки за потврда на качување (pickup_confirmed_at) и слегување (dropoff_confirmed_at).

fare_splits — алгоритам за поделба на трошоци

Бидејќи апликацијата работи исклучиво со готовинско плаќање, не постои табела за трансакции. Наместо тоа, fare_splits ги чува пресметаните износи кои секој патник треба да ги плати на возачот, врз основа на поминатата дистанца.

ratings — оценување меѓу корисници

Табелата ratings овозможува оценување меѓу учесниците по завршено патување. Дефиниран е CHECK constraint кој обезбедува дека корисникот не може да се оцени самиот себеси (reviewer_user_id != reviewee_user_id).

notifications — известувања

Табелата notifications чува известувања за корисниците (нови резервации, потврди, откажувања итн.) со статус на прочитаност.

Attachments (3)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.