Релационен модел
ЕР Дијаграм
Дополнителен Опис
- Предложениот модел претставува систем за посредување помеѓу клиенти и музички изведувачи, каде што корисниците можат да креираат барања за настани, а изведувачите да одговорат со понуди. Основниот тек на системот е организиран преку следната логика: 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) во кој изведувачот е достапен или недостапен.
- Овој дизајн овозможува: спречување на двојни резервации, проверка на достапност пред креирање на booking, полесно пребарување.
- Локацијата и местото на одржување се моделирани како независни ентитети:
Location– град, регион, државаVenue– конкретна локација (сала, клуб ...)VenueType– тип на место (indoor, outdoor…)
- Табелата
Requestги референцира овие ентитети преку foreign keys (location_id, venue_id, venue_type_id`), со што се избегнува дуплирање на податоци и се овозможува повторна употреба на истите.
- Табелата
Messageовозможува комуникација помеѓу корисниците (клиент и изведувач), при што пораките можат да бидат поврзани со конкретенRequestилиBooking. - Овој дизајн овозможува: следење на комуникацијата, контекстуална размена на информации, подобро корисничко искуство.
Paymentги чува сите информации за плаќања поврзани со booking.BookingStatusHistoryги чува сите промени на статусот на резервацијата.- Овој дизајн овозможува: следење на финансиски трансакции, историја на статуси (pending, confirmed, cancelled) и подобра контрола.
- Табелата
Reviewе поврзана директно со Booking, што значи дека рецензија може да постои само за завршена резервација. - Овој дизајн овозможува: валидност на оценките, спречување на злоупотреба, реални и релевантни рецензии.
Last modified
13 days ago
Last modified on 04/20/26 00:28:54
Attachments (2)
- RelationalModel.svg (498.0 KB ) - added by 13 days ago.
- logo.jpg (2.6 MB ) - added by 13 days ago.
Note:
See TracWiki
for help on using the wiki.
