wiki:RelationalModel

Version 12 (modified by 231088, 13 days ago) ( diff )

--

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

ЕР Дијаграм

Дополнителен Опис

  • Предложениот модел претставува систем за посредување помеѓу клиенти и музички изведувачи, каде што корисниците можат да креираат барања за настани, а изведувачите да одговорат со понуди. Основниот тек на системот е организиран преку следната логика: Request → Offer → Booking → Payment → Review
  • Табелите Request, Offer и Booking го претставуваат основниот процес на резервација.
    • Request ги содржи сите информации за настанот (датум, време, буџет, локација, тип на настан).
    • Offer претставува одговор од изведувач на конкретен request и содржи предложена цена, траење и дополнителни трошоци.
    • Booking се креира само кога една понуда е прифатена.
  • Важно е што Booking содржи само offer_id како foreign key, наместо директно да ги содржи request_id, client_id и bookable_id. Ова е направено со цел да се избегне редундантност, бидејќи сите овие информации можат индиректно да се добијат преку Offer.
  • Ентитетот Bookable е воведен како апстракција за сите типови изведувачи.
    • ArtistProfile содржи податоци за индивидуален изведувач
    • BandProfile содржи податоци за бенд
    • BandMember овозможува поврзување помеѓу бенд и поединечни артисти

  • Цените се моделирани преку табелата PricingRule, која дефинира основна цена, дополнителни трошоци и услови (тип на настан, траење...)
    • Дополнително, табелата PriceHistory се користи за чување на сите промени на цените со текот на времето.
  • Табелата AvailabilitySlot служи за дефинирање на достапноста на изведувачите.
    • Секој запис претставува временски интервал (start_datetime – end_datetime) во кој изведувачот е достапен или недостапен.
  • Локацијата и местото на одржување се моделирани како независни ентитети:
    • Location – град, регион, држава
    • Venue – конкретна локација (сала, клуб ...)
    • VenueType – тип на место (indoor, outdoor…)
  • Табелата Request ги референцира овие ентитети преку foreign keys (location_id, venue_id, venue_type_id), со што се избегнува дуплирање на податоци и се овозможува повторна употреба на истите.
  • Табелата Message овозможува комуникација помеѓу корисниците (клиент и изведувач), при што пораките можат да бидат поврзани со конкретен Request или Booking.
  • Payment ги чува сите информации за плаќања поврзани со booking.
  • BookingStatusHistory ги чува сите промени на статусот на резервацијата.
  • Табелата Review е поврзана директно со Booking, што значи дека рецензија може да постои само за завршена резервација.

Attachments (2)

Note: See TracWiki for help on using the wiki.