Sample Header Ad - 728x90

Modelling route data in MySQL

1 vote
1 answer
655 views
I need to create a data model for routing data between points. For example, path between two cities which will include the two start and destination cities, way points (like smaller towns along the way), total distance between the two cities (distances between routing points do not need to be modelled though it would be good if that can be done too). My current idea is like below. - Create one table containing the cities: city. Columns: city_id (primary key), city_name, etc. - Create a many-to-many table path with 4 columns: from_city (references city.city_id, to_city (references city.city_id), calculated column path = MD5(CONCAT(from_city, to_city)), distance to store the total distance for the route. - Create a table to store route points called town similar to the city table. - Create a man-to-many table route between path and town which will have three columns: town_id (references town.town_id), path_id (references path.path) and route_position which will be a value 1-n which will indicate the position of the route point in the actual path. For example, first route point will have number 1, second 2 and so on. Questions: 1. Do you guys think this is a feasible model? Is there a better approach to this? 2. In the path table, is it better to use a MD5 hash or create a multiple-column index on from_city and to_city? EDIT: To give some context, I'm currently using a graph database to store this data and have a user-defined function that uses A* search to find the shortest path between points. Problem is as the graph gets denser, this computation becomes too slow. So, I think a lookup-based approach would be faster.
Asked by kovac (167 rep)
May 23, 2018, 02:12 AM
Last activity: Aug 8, 2018, 06:01 AM