== Дијаграм [[Image(SkyChase-diagram.png)]] == Податочни побарувања === Ентитети\\ **1. ApplicationUser** - Ентитет за корисникот и неговите информации.\\ - UserID - примарен клуч, int - Name - varchar - Surname - varchar - Email - varchar - Password - varchar - Phone number - varchar - Date Joined - datetime **2. Destination** - Ентитет за дестинација.\\ - DestinationID- примарен клуч, int - Name - varchar - Country - varchar - Description - text - Popular Attraction - text - Best Time To Visit - varchar\\ **3. Airport** - Ентитет за аеродром.\\ - AirportID - примарен клуч, int, задолжителен - Name - varchar - CityID - int, foreign key - Country - varchar - Code - varchar - Destination - int, foreign key **4. Flight** - Ентитет за лет.\\ - FlightID - примарен клуч, int - Flight Number - varchar - Departure Airport - varchar - Arrival Airport - int, foreign key - Departure Time - int, foreign key - Arrival Time - datetime - Price - decimal(10,2) - Available Seats - int \\ **5. Booking** - Ентитет за летови.\\ - BookingID - примарен клуч, int - UserID - foreign key, int - Booking Date - datetime - Payment Status - enum('Pending','Completed', 'Cancelled') - Total Cost - decimal(10,2)\\ **6. BookingFlight - Ентитет за резервирани летови на корисникот.\\ - BookingID - foreign key - FlightID - foreign key - SeatNumber - int **6. Review** - Ентитет за листата на рецензии.\\ - ReviewID- примарен клуч, int - UserID - foreign key, int, - BookingID - int, foreign key - TargetID - foreign key, int (може да биде FlightID или DestinationID) - Review Comment - text - Rating - int - Date - datetime **7. Payment** - Ентитет за трансакции.\\ - PaymentID - примарен клуч, int - BookingID - foreign key, int - UserID - foreign key, int - Payment method - enum('Credit Card','Debit card', 'PayPal') - Amount - decimal(10,2) - Transaction Date - datetime - Payment Status - enum('Success', 'Failed', 'Processing')\\ **8. Notification** - Ентитет за известувања.\\ - NotificationID- примарен клуч, int - UserID - foreign key, int - Message - text - Type - enum('Booking Confirmation', 'Flight Delay', 'General Update') - Date Sent - datetime\\ **9. Wishlist** - Ентитет за листа со посакувани дестинации.\\ - WishlistID - примарен клуч, int - UserID - foreign key, int - TargetID - foreign key, int (може да биде FlightID или DestinationID) - Date Added - datetime \\ **10. Administrator** - Ентитет за тикети за поддршка.\\ - AdminID - примарен клуч, int - Email - varchar\\ **11. Support Ticket** - Ентитет за тикети за поддршка.\\ - TicketID- примарен клуч, int - UserID - foreign key, int - Subject - varchar - Description - text - Status - enum('Open', 'In Progress', 'Resolved') - Date Created - datetime - Date Resolved - datetime (nullable) - Assigned To - foreign key, int\\ === 1-1 Релации - ''pays for'' - релација помеѓу **Payment** и **Booking**. Секој Payment е за еден Booking, и секој Booking има само еден Payment. === 1-M Релации - ''books'' – релација помеѓу User и Booking. Секој User може да има повеќе Bookings, но секој Booking припаѓа на само еден User. - ''leaves review for'' – релација помеѓу User и Review. Секој User може да остави повеќе Reviews, но секој Review може да припаѓа на само еден User. - ''review based on booking'' – релација помеѓу Booking и Review. Секој Booking може да има повеќе Reviews, но секој Review е поврзан со само еден Booking, за да се осигура дека рецензијата е од вистински патник. - ''adds item to'' – релација помеѓу User и Wishlist. Секој User може да има повеќе ставки во Wishlist, но секоја ставка припаѓа само на еден User. - ''makes payment for'' – релација помеѓу User и Payment. Секој User може да има повеќе Payments, но секој Payment припаѓа само на еден User. - ''receives notification'' – релација помеѓу User и Notification. Секој User може да добие повеќе Notifications, но секоја Notification е испратена само до еден User. - ''submits'' – релација помеѓу User и Support Ticket. Секој User може да отвори повеќе Support Tickets, но секој Ticket е отворен од само еден User. - ''ticket for booking'' – релација помеѓу Support Ticket и Booking. Секој Ticket е поврзан со еден Booking, за да може поддршката да се однесува на конкретна резервација. - ''operates from''– релација помеѓу Airport и Flight. Еден Airport може да биде почетна точка (departure) за повеќе Flights. Секој Flight има точно еден Departure Airport. - ''operates to''– релација помеѓу Airport и Flight. Еден Airport може да биде крајна точка (arrival) за повеќе Flights. Секој Flight има точно еден Arrival Airport. - ''handles'' – релација помеѓу Administrator и Support Ticket. Секој Administrator може да обработува повеќе Tickets, но секој Ticket е доделен на еден Administrator. - ''served by'' – релација помеѓу Destination и Airport. Еден Destination може да има повеќе Airports, но секој Airport припаѓа на само еден Destination. === M-N Релации - ''booking includes flight'' – релација помеѓу Booking и Flight. Еден Booking може да содржи повеќе Flights (multi-leg trip), и еден Flight може да биде дел од повеќе Bookings. - ''wishlist includes flight'' – релација помеѓу Flight и Wishlist. Wishlist може да содржи повеќе Flights, и секој Flight може да се содржи во повеќе Wishlists. - ''wishlist includes destination'' – релација помеѓу Destination и Wishlist. Wishlist може да содржи повеќе Destinations, и секој Destination може да се содржи во повеќе Wishlists. - ''review relates to flight'' – релација помеѓу Flight и Review. Еден Flight може да има повеќе Reviews, и секој Review може да се однесува на повеќе Flights (ако е комплексно патување). - ''review relates to airport'' – релација помеѓу Airport и Review. Еден Airport може да има повеќе Reviews, и секој Review може да се однесува на повеќе Airports (пример, layover искуство).