== ЕР дијаграм [[Image(TravelSageRevisedVersion.3.svg​, align=center)]] === Ентитети и атрибути === * **DESTINATION** – претставува основен ентитет кој ги опишува сите туристички дестинации достапни во апликацијата. * idDest(нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за дестинацијата. * locationName(текстуален податок, задолжителен атрибут): Името на дестинацијата. * locationDesc(текстуален податок): Детален опис на дестинацијата. * typesOfPlaces(повеќевредносен атрибут, текстуален податок): Категоризација на дестинацијата (на пример, планина, плажа, град, село итн.). * recommendedSeason(повеќевредносен атрибут, текстуален податок): Сезони во кои е препорачливо да се посети дестинацијата. * averageTemp(децимален податок): Просечна температура за таа дестинација. * geoLocation(координати, географски тип податок): Географска позиција (координати). * country(текстуален податок): Држава каде што се наоѓа местото. * popularity(нумерички податок): Рангирање базирано на број на посетители или рецензии. * importantLocations(сложен атрибут, текстуален податок): Клучни места т.е. знаменитости што ја карактеризираат дестинацијата (на пример, музеи, паркови), кој има name и description за соодветната локација. * **USER** – ентитет кој ги претставува регистрираните корисници на апликацијата. * idUser (нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за секој корисник. * loginName(сложен атрибут, текстуален податок, задолжителен атрибут): firstName и lastName за најава. * eMail (текстуален податок, задолжителен атрибут, уникатен): Електронска адреса на корисникот. * phoneNumber (текстуален податок): Листа на телефонски броеви на корисникот. * birthDate (датум): Датум на раѓање на корисникот. * **STANDARD** – ентитет кој е дијункнтно разложување со тотално учество на ентитетот Корисници што значи дека корисникот мора да е еден од двата понудени ентитети. Овој ентитет се однесува на корисниците кои ја користат апликацијата вообичаено, без никакви дополнителни претплатувања. Ќе ги содржи само сите атрибути на наткласата, а за додатни нема да има, бидејќи самиот ентитет не вклучува други атрибути. * idUser(нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за секој корисник. * loginName(сложен атрибут, текстуален податок, задолжителен атрибут): firstName и lastName за најава. * eMail(текстуален податок, задолжителен атрибут, уникатен): Електронска адреса на корисникот. * phoneNumber (текстуален податок): Листа на телефонски броеви на корисникот. * birthDate(датум): Датум на раѓање на корисникот. * **PREMIUM** – ентитет кој е дијункнтно разложување со тотално учество на ентитетот Корисници што значи дека корисникот мора да е еден од двата понудени ентитети. Ќе ги содржи сите атрибути на наткласата, дополнително и сопствените. * idUser (нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за секој корисник. * loginName(сложен атрибут, текстуален податок, задолжителен атрибут): firstName и lastName за најава. * eMail(текстуален податок, задолжителен атрибут, уникатен): Електронска адреса на корисникот. * phoneNumber(текстуален податок): Листа на телефонски броеви на корисникот. * birthDate(датум): Датум на раѓање на корисникот. * dateCreated(датум): Датум на креирање. * discount(нумерички податок): соодветен процентуален износ за попуст за премиум корисници. * **REVIEW** – ентитет кој ги опфаќа рецензиите што корисниците ги оставаат за дестинациите. * idReview (нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за рецензијата. * username(текстуален податок, задолжителен атрибут): Корисник што ја оставил рецензијата. * quality (нумерички податок, задолжителен атрибут): Оцена во форма на број или ѕвезди. * comment (текстуален податок): Текстуален коментар. * reviewDate (датум): Датум на објавување. * voteCount(нумерички податок): Број на корисници што оставиле рецензија. * **METEOROLOGICAL CONDITION** – ентитет што ги следи актуелните временски услови за секоја дестинација. * idMeteo (нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор. * currentTemp (децимален податок, задолжителен атрибут): Моментална температура. * weatherCondition (повеќевредносен атрибут, текстуален податок, задолжителен атрибут): Опис на временските услови (сончево, дождливо). * warnings (повеќевредносен атрибут, текстуален податок, задолжителен атрибут): Можни временски предупредувања (на пример, бура и сл.). * humidity (децимален податок): Процент на влажност. * wind (децимален податок): Брзина на ветерот. * month (нумерички податок): Месец за мерењето. * **PACKAGE** – ентитет за туристички пакети кои содржат повеќе активности или услуги. * idPackage (нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за пакетот. * packageName (текстуален податок, задолжителен атрибут, задолжителен атрибут): Име на пакетот. * price (нумерички податок, задолжителен атрибут): Вкупна цена на пакетот. * duration (сложен атрибут, датум, задолжителен атрибут): Временски период (start и end). * **ACTIVITY** – ентитет за индивидуалните активности достапни на дестинациите. * idActivity (нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор. * activityName(текстуален податок, задолжителен атрибут): Име на активноста. * information(текстуален податок): Детален опис. * category (повеќевредносен атрибут, текстуален податок, задолжителен атрибут): Категоризација (на пример, спортска, културна). * amount (нумерички податок): Цена за учество. * **RESERVATION** - ентитет за резервациите што ги прават корисниците. * idReservation (нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор. * timePoint(датум, задолжителен атрибут): Датум на резервацијата. * premiumDiscountApplied (boolean вредност true/false, задолжителен атрибут): Информација за употреба на попустот (во стил на flag). * discountАmount (нумерички податок, задолжителен атрибут): Износ на попустот. * totalPrice (нумерички податок, задолжителен атрибут): Финална цена. * **PREFERENCE** – ентитет кој ги прикажува деталните преференции на корисниците во апликацијата. Овозможува прилагодување на содржината според интересите на секој корисник. * idPreference (нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за секоја преференција. * typePreference (повеќевредносен атрибут, текстуален податок, задолжителен атрибут): Список на различни типови преференции, како активности, дестинации или временски услови. * priority (нумерички податок): Важност на секоја преференца. * **EVENT** - ентитет кој опфаќа информации за сите настани што се одржуваат во достапните дестинации. Ги збогатува податоците со динамични и временски специфични активности. * idEvent(нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за секој настан. * eventName(текстуален податок, задолжителен атрибут): Назив на настанот. * eventType(повеќевредносен атрибут, текстуален податок, задолжителен атрибут): Категории или видови на настани, како културни, спортски или музички. * startDate(датум): Датум кога настанот започнува. * endDate(датум): Датум кога настанот завршува. * deatils(текстуален податок): Детален опис на настанот. * **TAG** - ентитет кој овозможува категоризација на дестинациите за подобро пребарување и пронаоѓање според интересите на корисниците. * idTag(нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за секој таг. * tagTag(текстуален податок, задолжителен атрибут): Име на тагот што ја претставува категоријата. === Релации === * **USER ↔ RESERVATION (made)** * Кардиналност: 1:N * Опис: Еден корисник може да направи повеќе резервации, но секоја резервација е поврзана со еден корисник. * **USER ↔ PREFERENCE (pointsOut)** * Кардиналност: 1:N * Опис: Еден корисник може да има повеќе преференции, а секоја преференца е поврзана со еден корисник. * **DESTINATION ↔ REVIEW (disposes)** * Кардиналност: 1:N * Опис: Една дестинација може да има повеќе рецензии од различни корисници и секоја рецензија се однесува на одредена дестинација. * **DESTINATION ↔ METEOROLOGICAL CONDITION (owns)** * Кардиналност: 1:N * Опис: Една дестинација може да има повеќе записи за временските услови во различни периоди. * **DESTINATION ↔ ACTIVITY (contains)** * Кардиналност: 1:N * Опис: Една дестинација може да содржи повеќе активности. * **DESTINATION ↔ EVENT(maintains)** * Кардиналност: 1:N * Опис: Една дестинација може да има повеќе настани. * **TAG ↔ DESTINATION (destination_tag)** * Кардиналност: N:M * Опис: Една дестинација може да има повеќе тагови, а секој таг може да биде поврзан со повеќе дестинации. * **DESTINATION ↔ PACKAGE (includes)** * Кардиналност: 1:N * Опис: Една дестинација може да биде дел од повеќе пакети, додека секој пакет е поврзан со една дестинација. * **PACKAGE ↔ ACTIVITY (activitiy_package)** * Кардиналност: N:M * Опис: Еден пакет може да содржи повеќе активности, а една активност може да биде дел од повеќе пакети. * **PACKAGE ↔ RESERVATION (package_reservation)** * Кардиналност: N:M * Опис: Секојј пакет може да има повеќе резервации, а секоја резервација може да биде составена од повеќе пакети. * **RESERVATION ↔ ACTIVITY (activity_reservation)** * Кардиналност: N:M * Опис: Една резервација може да вклучува повеќе активности, додека секоја активност е поврзана со повеќе резервации. * **REVIEW ↔ RESERVATION (can)** * Кардиналност: 1:1 * Опис: Една рецензија е поврзана со една резервација, истото и во спротивната насока. * **USER ↔ DESTINATION (destination_user)** * Кардиналност: N:M * Опис: Корисник може да остави повеќе препораки за различни дестинации. Една дестинација може да има повеќе препораки од различни корисници. Препораките чуваат атрибути: оцена, коментар и датум.