首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为就业机会设计表格

为就业机会设计表格
EN

Stack Overflow用户
提问于 2017-08-14 11:30:13
回答 1查看 102关注 0票数 0

假设我有三张桌子:

代码语言:javascript
复制
employers : id | name | ...

workers: id | name | ...

jobs : id | description | employer_id | ...

我希望雇主能够给几个工人提供工作机会,这样第一个接受工作的工人就能得到这份工作。我正在努力设计一张桌子来解决这个问题。

我想出了一张这样的桌子:

代码语言:javascript
复制
 offers: id | job_id | worker_id | status

job_id和worker_id将分别指作业和工人。状态是带有"accepted", "pending" and "closed" as possible values. (the default value is "pending")的ENUM

这里的想法是,当员工接受一个待遇时,待遇中相应行的状态设置为“已接受”,而其他待遇的状态(大约相同的工作)设置为“关闭”。

我认为这是可行的,但我还是想问问你们是否认为这是一个好的、有效的解决方案。如果没有,什么是更好的解决办法。

谢谢

注:这是我第一次尝试设计一个数据库。而且,这不是家庭作业。我只是和一些朋友一起做一个小项目。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-14 12:24:23

这个能行,是的。然而,你面临的一个问题是,你必须确保,只有一名工人接受这份工作,而不是同时接受两名。

在您的例子中,您可以这样做:

代码语言:javascript
复制
UPDATE offers o 
SET status = 'accepted' 
WHERE job_id = x 
AND worker_id = y
AND NOT EXISTS (SELECT 1 FROM offers WHERE job_id = o.job_id AND status = 'accepted');

当然,还有其他的设计,也可以想象。但这真的取决于你想要实现什么。例如,当pendingclosed之间的差异对您来说并不重要时,您可以完全消除status字段。然后,您可以简单地将该职务提供给哪些员工存储在offers中,而在作业表中,您可以有一个列accepted_by

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

https://stackoverflow.com/questions/45673563

复制
相关文章

相似问题

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