首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于邻近城市的工作板数据库设计

基于邻近城市的工作板数据库设计
EN

Database Administration用户
提问于 2019-12-06 15:04:59
回答 2查看 82关注 0票数 0

我试图为下面表示的数据实现这些关系。

我有一个微型求职板,用户可以在他们的城市和邻近的城市看到工作列表。

  • 用户1生活在city1中
  • 用户2住在city2,那个城市是city3和city4的邻居。
  • 用户3生活在city3中
  • 用户4生活在city5中

用户1发布需要在city3中完成的工作

在此之后;

  • 用户2在工作列表中看到这份工作,因为他住在city2,而那个城市是city3的邻居--可以提供帮助。
  • 用户3在工作列表中看到这份工作,因为他住在city3 -可以提供帮助
  • 用户4看不到这份工作,因为他既不是住在city3,也不是他所在城市的邻居。

如何使用关系来完成此数据库模式?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2019-12-09 04:09:18

应该有一个用户表。(user_id、用户名等)

应该有一张城市餐桌。(city_id、city_name等)

应该有一个ref_user_city表。(ref_id、user_id、city_id等)

应该有一个职务表。工作只能有一个可以完成工作的城市。(job_id,city_id)

用户可以在创建或更新配置文件时选择多个城市。将存储在ref_user_city中。这些城市是用户居住或用户可以提供工作服务的地方。

现在,您可以很容易地找到哪个用户可以在特定的城市中完成这项工作。

代码语言:javascript
复制
Select user_id from ref_user_city where city_id = 1;

现在,可以为city_id 1工作的用户可以从user表中获取这些用户的数据。

假设您想要为user_id = 1找到工作,用户1住在城市1&可以在城市2、3和4提供工作服务。

代码语言:javascript
复制
Select job_id from job where city_id in (1,2,3,4);
票数 1
EN

Database Administration用户

发布于 2019-12-09 05:48:31

@Kemal

您必须按照以下方式创建数据库结构。

  1. 创建包含列的城市表(city_id、city_name)
  2. 使用列(refer_id、main_city_id、neighbor_city_id)创建引用城市和邻居表
  3. 创建一个包含列的用户表(user_id、name、city_id)
  4. 创建一个带有列的作业表(job_id、title、city_id)

当user2登录并访问职务列表页面时,您可以通过以下查询获得作业

代码语言:javascript
复制
SELECT j.title,j.city_id FROM jobs as j LEFT JOIN ref_city_neighbor as rcn ON rcn.neighbor_city_id = j.city_id WHERE j.city_id = :user2_city_id Or rcn.main_city_id = :user2_city_id

通过上面的查询,您将得到user2生活在城市中的职位公告,以及user2所在的邻居城市作业。

希望我的回答对你有帮助。

谢谢。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/255037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档