gpt4 book ai didi

mysql - 设计工作机会表格

转载 作者:行者123 更新时间:2023-11-29 10:39:57 24 4
gpt4 key购买 nike

假设我有 3 张 table :

employers : id | name | ...

workers: id | name | ...

jobs : id | description | employer_id | ...

我希望雇主能够向多名 worker 提供工作机会,以便第一个接受工作机会的 worker 得到工作。我正在努力设计一个表格来解决这个问题。

我想出了一个这样的表格:

 offers: id | job_id | worker_id | status

job_idworker_id将分别是jobsworkers的fk引用。状态是带有 "accepted", "pending" and "closed" as possible values. (the default value is "pending") 的 ENUM

这里的想法是,当工作人员接受要约时,要约中相应行的状态将设置为“已接受”,并且其他要约(关于同一工作)的状态为设置为“关闭”。

我认为这可行,但仍然想问一下你们是否认为这是一个好的且有效的解决方案。如果没有,什么是更好的解决方案。

谢谢

注意:这是我第一次尝试设计数据库。另外,这不是作业。我只是和一些 friend 一起做一个小项目。

最佳答案

这可以工作,是的。但您面临的一个问题是,您必须确保只有一名 worker 接受这项工作,而不是同时接受两名 worker 。

根据您的情况,您可以按以下方式进行操作:

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');

当然,也可以想象其他设计。但这实际上取决于您想要实现的目标。例如,当 pendingclose 之间的差异对您来说并不重要时,您可以完全删除状态字段。然后,您可以简单地将工作提供给哪些 worker 存储在 offers 中,并且在 jobs 表中您可以有一个列 accepted_by

关于mysql - 设计工作机会表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45673563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com