Database design for job board based on neighbouring cities
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);