Database design for job board based on neighbouring cities I'm trying to implement the relationships for the data represented below.

I have a microjob board, users sees job listings in their city and neighbouring cities


user 1 lives in city1
user 2 lives in city2 and that city is neighbour of city3 and city4
user 3 lives in city3
user 4 lives in city5


user 1 posts a job that needs to be done in city3

After that;


user 2 sees this job at job listings as he lives in city2 and that
city is neighbour of city3 - can offer help
user 3 sees this job at job listings as he lives in city3 - can offer help 
user 4 can't see this job as he neither lives in city3 nor is his city a    neighbour of it


How can I accomplish this database schema with relationships?
There should be one user table. (user_id, username, etc)

There should be one city table. (city_id, city_name, etc)

There should be one ref_user_city table. (ref_id, user_id, city_id, etc)

There should be one Job table. Job can have only one city where job can be done. (job_id, city_id)

Users can select multiple cities at the time of profile creation or update. Which will be stored in ref_user_city. These cities are where the user lives or user can provide job service.

Now you can easily find which user can do the job in a specific city.

Select user_id from ref_user_city where city_id = 1;


now users who can do a job for city_id 1 you can get data of those users from user table.

Let's say if you want to get jobs for user_id = 1, user 1 lives in city 1 &amp; can provide job service in city 2,3 &amp; 4.

Select job_id from job where city_id in (1,2,3,4);