| 1 | == Дијаграм |
| 2 | |
| 3 | [[Image(SkyChase-diagram.png)]] |
| 4 | |
| 5 | == Податочни побарувања |
| 6 | |
| 7 | === Ентитети\\ |
| 8 | |
| 9 | **1. ApplicationUser** - Ентитет за корисникот и неговите информации.\\ |
| 10 | |
| 11 | - UserID - примарен клуч, int |
| 12 | - Name - varchar |
| 13 | - Surname - varchar |
| 14 | - Email - varchar |
| 15 | - Password - varchar |
| 16 | - Phone number - varchar |
| 17 | - Date Joined - datetime |
| 18 | |
| 19 | **2. Destination** - Ентитет за дестинација.\\ |
| 20 | |
| 21 | - DestinationID- примарен клуч, int |
| 22 | - Name - varchar |
| 23 | - Country - varchar |
| 24 | - Description - text |
| 25 | - Popular Attraction - text |
| 26 | - Best Time To Visit - varchar\\ |
| 27 | |
| 28 | **3. Airport** - Ентитет за аеродром.\\ |
| 29 | |
| 30 | - AirportID - примарен клуч, int, задолжителен |
| 31 | - Name - varchar |
| 32 | - CityID - int, foreign key |
| 33 | - Country - varchar |
| 34 | - Code - varchar |
| 35 | |
| 36 | |
| 37 | **4. Flight** - Ентитет за лет.\\ |
| 38 | |
| 39 | - FlightID - примарен клуч, int |
| 40 | - Flight Number - varchar |
| 41 | - Departure Airport - varchar |
| 42 | - Arrival Airport - int, foreign key |
| 43 | - Departure Time - int, foreign key |
| 44 | - Arrival Time - datetime |
| 45 | - Price - decimal(10,2) |
| 46 | - Available Seats - int \\ |
| 47 | |
| 48 | **5. Booking** - Ентитет за листата на резервирани летови за корисникот.\\ |
| 49 | |
| 50 | - BookingID - примарен клуч, int |
| 51 | - UserID - foreign key, int |
| 52 | - FlightID - foreign key, int |
| 53 | - Booking Date - datetime |
| 54 | - Payment Status - enum('Pending','Completed', 'Cancelled') |
| 55 | - Total Cost - decimal(10,2) |
| 56 | - Seat Number - int\\ |
| 57 | |
| 58 | |
| 59 | |
| 60 | **6. Review** - Ентитет за листата на рецензии.\\ |
| 61 | |
| 62 | - ReviewID- примарен клуч, int |
| 63 | - UserID - foreign key, int, |
| 64 | - TargetID - foreign key, int (може да биде FlightID или DestinationID) |
| 65 | - Review Comment - text |
| 66 | - Rating - int |
| 67 | - Date - datetime |
| 68 | |
| 69 | |
| 70 | **7. Payment** - Ентитет за трансакции.\\ |
| 71 | |
| 72 | - PaymentID - примарен клуч, int |
| 73 | - BookingID - foreign key, int |
| 74 | - UserID - foreign key, int |
| 75 | - Payment method - enum('Credit Card','Debit card', 'PayPal') |
| 76 | - Amount - decimal(10,2) |
| 77 | - Transaction Date - datetime |
| 78 | - Payment Status - enum('Success', 'Failed', 'Processing')\\ |
| 79 | |
| 80 | **8. Notification** - Ентитет за известувања.\\ |
| 81 | |
| 82 | - NotificationID- примарен клуч, int |
| 83 | - UserID - foreign key, int |
| 84 | - Message - text |
| 85 | - Type - enum('Booking Confirmation', 'Flight Delay', 'General Update') |
| 86 | - Date Sent - datetime\\ |
| 87 | |
| 88 | **9. Wishlist** - Ентитет за листа со посакувани дестинации.\\ |
| 89 | |
| 90 | - WishlistID - примарен клуч, int |
| 91 | - UserID - foreign key, int |
| 92 | - TargetID - foreign key, int (може да биде FlightID или DestinationID) |
| 93 | - Date Added - datetime \\ |
| 94 | |
| 95 | |
| 96 | **10. Administrator** - Ентитет за тикети за поддршка.\\ |
| 97 | - AdminID - примарен клуч, int |
| 98 | - Email - varchar\\ |
| 99 | |
| 100 | |
| 101 | **11. Support Ticket** - Ентитет за тикети за поддршка.\\ |
| 102 | |
| 103 | - TicketID- примарен клуч, int |
| 104 | - UserID - foreign key, int |
| 105 | - Subject - varchar |
| 106 | - Description - text |
| 107 | - Status - enum('Open', 'In Progress', 'Resolved') |
| 108 | - Date Created - datetime |
| 109 | - Date Resolved - datetime (nullable) |
| 110 | - Assigned To - foreign key, int\\ |
| 111 | |
| 112 | |
| 113 | === 1-1 Релации |
| 114 | |
| 115 | - ''pays for'' - релација помеѓу **Payment** и **Booking**. Секој Payment е за еден Booking, и секој Booking има само еден Payment. |
| 116 | - ''served by'' - релација помеѓу **Destination** и **Airport**. Секоја Destination се опслужува од еден Airport, и секој Airport опслужува само една Destination. |
| 117 | |
| 118 | === 1-M Релации |
| 119 | |
| 120 | - ''books'' - релација помеѓу **User** и **Booking**. Секој User може да има повеќе Bookings, и еден Booking може да има повеќе Users. |
| 121 | - ''leaves review for'' - релација помеѓу **User** и **Review**. Секој User може да остави повеќе Reviews, но едно Review може да припаѓа на еден User. |
| 122 | - ''adds item to'' - релација помеѓу **User** и **Wishlist**. Секој User може да има повеќе ставки во Wishlist, но една ставка од Wishlist може да припаѓа само на еден User. |
| 123 | - ''makes payment for'' - релација помеѓу **User** и **Payment**. Секој User може да има повеќе Payments, но еден Payment може да припаѓа на еден User. |
| 124 | - ''receives notification'' - релација помеѓу **User** и **Notification**. Секој User може да добие повеќе Notifications, но една нотификација е пратена до само еден User. |
| 125 | - ''submits'' - релација помеѓу **User** и **Support Ticket**. Секој User може да отвори повеќе Support Tickets, но еден тикет може да е отворен од само еден User. |
| 126 | - ''includes'' - релација помеѓу **Flight** и **Booking**. Секој Flight може да има повеќе Bookings, но еден Booking е линкуван со само еден Flight. |
| 127 | - ''operates on'' - релација помеѓу **Airport** и **Flight**. Секој Airport може да има повеќе departing or arriving Flights, но секој Flight departs or arrives на еден Airport. |
| 128 | - ''receives review for'' - релација помеѓу **Destination** и **Review**. Секој Destination може да има повеќе Reviews, но еден Review може да припаѓа на само една Destination. |
| 129 | - ''handles'' - релација помеѓу **Administrator** и **Support Ticket**. Секој Administrator може да работи на повеќе Support Tickets, но еден Support Ticket може да припаѓа само на еден Administrator. |
| 130 | |
| 131 | === M-N Релации |
| 132 | |
| 133 | - ''wishlist includes flight'' - релација помеѓу **Flight** и **Wishlist**. Wishlist може да содржи повеќе Flights, и секој Flight може да се содржи во повеќе Wishlists. |
| 134 | - ''wishlist includes destination'' - релација помеѓу **Destination** и **Wishlist**. Wishlist може да содржи повеќе Destinations, и секој Destination може да се содржи во повеќе Wishlists. |
| 135 | - ''review relates to flight'' - релација помеѓу **Flight** и **Review**. Review може да има за повеќе Flights, и зa секој Flight може да има повеќе Reviews. |
| 136 | |