| | 1 | = Relational Model = |
| | 2 | |
| | 3 | == Relational diagram == |
| | 4 | |
| | 5 | [[Image(geoturism1.7.jpeg)]] |
| | 6 | |
| | 7 | == Description == |
| | 8 | |
| | 9 | The relational model represents the structured implementation of the geospatial tourism system described in the project. The model is designed to support efficient storage, querying, and management of tourism-related data, with a particular focus on geospatial relationships and travel planning. |
| | 10 | |
| | 11 | The schema includes several core components: |
| | 12 | |
| | 13 | * User management (users, roles, permissions) |
| | 14 | * Trip organization and execution (trips, trip_executions, trip_participants) |
| | 15 | * Geographical hierarchy (countries, regions, cities, locations, coordinates) |
| | 16 | * Tourism services (hotels, rooms, attractions, facilities) |
| | 17 | * Transportation systems (flight routes, transport routes, stations, bookings) |
| | 18 | * User-generated content (reviews, photos) |
| | 19 | |
| | 20 | Relationships between entities are implemented using foreign keys, ensuring referential integrity. Many-to-many relationships are resolved using associative tables such as user_role_map, attraction_type_map, and trip_locations. |
| | 21 | |
| | 22 | == Modeling decisions and explanation == |
| | 23 | |
| | 24 | '''Geographical hierarchy''' |
| | 25 | |
| | 26 | The geographical data is modeled using multiple normalized tables (countries, regions, cities, locations, coordinates). This allows flexible querying and avoids redundancy. Coordinates are separated into their own table to support potential spatial extensions and indexing. |
| | 27 | |
| | 28 | '''Trip structure''' |
| | 29 | |
| | 30 | Trips are separated into trips, trip_executions, and trip_participants. This design allows a single trip definition to have multiple executions over time, with different participants for each execution. |
| | 31 | |
| | 32 | '''Bookings and transportation''' |
| | 33 | |
| | 34 | Transportation is modeled using separate entities for flight routes, transport routes, and bookings (flight_bookings, bus_bookings). This separation allows flexibility in handling different transport types and supports realistic travel scenarios. |
| | 35 | |
| | 36 | '''Accommodation system''' |
| | 37 | |
| | 38 | Hotels and rooms are modeled separately, with an additional linking table (trip_participants_hotel_rooms) to associate participants with specific accommodations during trips. |
| | 39 | |
| | 40 | '''User roles and permissions''' |
| | 41 | |
| | 42 | User roles are implemented using a separate roles table and a mapping table (user_role_map). This allows flexible assignment of multiple roles to users and supports role-based access control. |
| | 43 | |
| | 44 | == Notes == |
| | 45 | |
| | 46 | The model is normalized to reduce redundancy and ensure consistency. It is designed to support efficient querying, especially for complex operations such as route planning and location-based searches. |
| | 47 | |
| | 48 | Future improvements may include additional indexing strategies and further optimization of spatial queries using PostGIS. |
| | 49 | |
| | 50 | == Approval and development process == |
| | 51 | |
| | 52 | The model was developed iteratively during laboratory sessions and refined through consultations with teaching assistants and professors. Feedback was incorporated into multiple revisions of the model, leading to the final version presented here. |