== ЕР дијаграм [[Image(TravelSageRevisedVersion.svg, align=center)]] === Ентитети и атрибути === * **DESTINATION** – претставува основен ентитет кој ги опишува сите туристички дестинации достапни во апликацијата. * idDest(нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за дестинацијата. * locationName(текстуален податок, задолжителен атрибут): Името на дестинацијата. * locationDesc(текстуален податок): Детален опис на дестинацијата. * typesOfPlaces(повеќевредносен атрибут, текстуален податок, задолжителен атрибут): Категоризација на дестинацијата (на пример, планина, плажа, град, село итн.). * recommendedSeason(повеќевредносен атрибут, текстуален податок, задолжителен атрибут): Сезони во кои е препорачливо да се посети дестинацијата. * averageTemp(децимален податок): Просечна температура за таа дестинација. * geoLocation(координати, географски тип податок): Географска позиција (координати). * country(текстуален податок): Држава каде што се наоѓа местото. * popularity(нумерички податок): Рангирање базирано на број на посетители или рецензии. * importantLocations(сложен атрибут, текстуален податок): Клучни места т.е. знаменитости што ја карактеризираат дестинацијата (на пример, музеи, паркови), кој има name и description за соодветната локација. * **USER** – ентитет кој ги претставува регистрираните корисници на апликацијата. * idUser (нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за секој корисник. * loginName(сложен атрибут, текстуален податок, задолжителен атрибут): name и lastName за најава. * eMail (текстуален податок, задолжителен атрибут): Електронска адреса на корисникот. * phoneNumber (текстуален податок, задолжителен атрибут): Листа на телефонски броеви на корисникот. * birthDate (датум): Датум на раѓање на корисникот. * **Стандард** – ентитет кој е дијункнтно разложување со тотално учество на ентитетот Корисници што значи дека корисникот мора да е еден од двата понудени ентитети. Овој ентитет се однесува на корисниците кои ја користат апликацијата вообичаено, без никакви дополнителни претплатувања. Ќе ги содржи само сите атрибути на наткласата, а за додатни нема да има, бидејќи самиот ентитет не вклучува други атрибути. * idUser(нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за секој корисник. * loginName(сложен атрибут, текстуален податок, задолжителен атрибут): Име и презиме за најава. * eMail(текстуален податок, задолжителен атрибут): Електронска адреса на корисникот. * phoneNumber (текстуален податок, задолжителен атрибут): Листа на телефонски броеви на корисникот. * birthDate(датум): Датум на раѓање на корисникот. * **Премиум** – ентитет кој е дијункнтно разложување со тотално учество на ентитетот Корисници што значи дека корисникот мора да е еден од двата понудени ентитети. Ќе ги содржи сите атрибути на наткласата, дополнително и сопствените. * idUser (нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за секој корисник. * loginName(сложен атрибут, текстуален податок, задолжителен атрибут): Име и презиме за најава. * 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 (датум, задолжителен атрибут): Датум на резервацијата. * premium DiscountApplied * discountАmount * totalPrice (нумерички податок, задолжителен атрибут): Финална цена. * **PREFERENCE** – ентитет кој ги прикажува деталните преференции на корисниците во апликацијата. Овозможува прилагодување на содржината според интересите на секој корисник. * idPreference (нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за секоја преференција. * typePreference (повеќевредносен атрибут, текстуален податок, задолжителен атрибут): Список на различни типови преференции, како активности, дестинации или временски услови. * priority (нумерички податок): Важност на секоја преференца. * **EVENT** - ентитет кој опфаќа информации за сите настани што се одржуваат во достапните дестинации. Ги збогатува податоците со динамични и временски специфични активности. * idEvent(нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за секој настан. * eventName(текстуален податок, задолжителен атрибут): Назив на настанот. * eventType(повеќевредносен атрибут, текстуален податок, задолжителен атрибут): Категории или видови на настани, како културни, спортски или музички. * startDate(датум): Датум кога настанот започнува. * endDate(датум): Датум кога настанот завршува. * deatils(текстуален податок): Детален опис на настанот. * **TAG** - ентитет кој овозможува категоризација на дестинациите за подобро пребарување и пронаоѓање според интересите на корисниците. * idTag(нумерички податок, примарен клуч, задолжителен атрибут): Уникатен идентификатор за секој таг. * tagTag(текстуален податок, задолжителен атрибут): Име на тагот што ја претставува категоријата. === Релации === * **Корисници ↔ Рецензии (пишува)** * Кардиналност: 1:N * Опис: Еден корисник може да остави повеќе рецензии, но секоја рецензија е поврзана со еден корисник. * **Корисници ↔ Резервации (направена)** * Кардиналност: 1:N * Опис: Еден корисник може да направи повеќе резервации, но секоја резервација е поврзана со еден корисник. * **Корисници ↔ Преференци (посочува)** * Кардиналност: 1:N * Опис: Еден корисник може да има повеќе преференции, а секоја преференца е поврзана со еден корисник. * **Дестинации ↔ Рецензии (располага)** * Кардиналност: 1:N * Опис: Една дестинација може да има повеќе рецензии од различни корисници и секоја рецензија се однесува на одредена дестинација. * **Дестинации ↔ Метеролошка Состојба (поседува)** * Кардиналност: 1:N** * Опис: Една дестинација може да има повеќе записи за временските услови во различни периоди. * **Дестинации ↔ Активности (содржи)** * Кардиналност: 1:N * Опис: Една дестинација може да содржи повеќе активности. * **Дестинации ↔ Настани (одржува)** * Кардиналност: 1:N * Опис: Една дестинација може да има повеќе настани. * **Тагови ↔ Дестинации (има)** * Кардиналност: N:M * Опис: Една дестинација може да има повеќе тагови, а секој таг може да биде поврзан со повеќе дестинации. * **Дестинации ↔ Пакети (вклучува)** * Кардиналност: 1:N * Опис: Една дестинација може да биде дел од повеќе пакети, додека секој пакет е поврзан со една дестинација. * **Пакети ↔ Активности (сеОднесува)** * Кардиналност: N:M * Опис: Еден пакет може да содржи повеќе активности, а една активност може да биде дел од повеќе пакети. * **Резервации ↔ Активности (опфаќа)** * Кардиналност: N:M * Опис: Една резервација може да вклучува повеќе активности, додека секоја активност е поврзана со повеќе резервации. * **Рецензии ↔ Резервации (може)** * Кардиналност: 1:1 * Опис: Една рецензија е поврзана со една резервација, истото и во спротивната насока. * **Метеролошка Состојба ↔ Резервации (важиЗа)** * Кардиналност: 1:N * Опис: Една временска состојба може да биде поврзана со повеќе резервации за една дестинација, но една резервација е поврзана со една временска состојба. * **Корисници ↔ Дестинации (препорака)** * Кардиналност: N:M * Опис: Корисник може да остави повеќе препораки за различни дестинации. Една дестинација може да има повеќе препораки од различни корисници. Препораките чуваат атрибути: оцена, коментар и датум.