2

我正在尝试为我正在处理的计划应用程序设计数据库模式。我有办法做到这一点,但它似乎有点笨拙。由于涉及的变量,我很好奇这是否是野兽的本性。

该应用程序类似于工作板,但具有调度组件。您可以创建一个工作(或“项目”),然后设置工作日期,并说明该工作有哪些职位空缺。其他人可以报名参加这项工作,要么被雇用,要么被拒绝。

问题:

- 该工作不会同时运行日期,因此可能有 10 个工作日分布在两个月内。

-职位因工作而异。他们是从一个列表中挑选出来的,但一个工作可能有 10 个独特的空缺职位,而另一个可能有 5 个。

我的想法,绝对让人觉得笨拙的是,将“openPositions”作为一个带有 [jobId, positionName, date] 的表和另一个带有“jobApply”的表和 [jobId, positionName, date, acceptFlag]。所以每个日期对每个职位都有一个条目。显然,这会成倍增长(openPositions 将有 [#days * #positions] 行)。我可以通过强迫每天都有空缺职位的人来减少这种情况,但我想在日程安排上提供灵活性。

这个项目作为一个整体比我一直在工作的东西要大,但我很高兴能够解决它。我很想听听任何想法,如果需要澄清,请告诉我。

编辑:快速不那么抽象的例子:

项目一

项目日期: 3/1、3/5、3/6、3/9、4/2、4/5、4/8

所需职位:项目负责人、程序员 1、程序员 2、建模师、关卡设计师、实习生

所以我的(笨重的)版本将进入 openPositions 为:

(3/1,项目负责人),(3/5,项目负责人),(3/6,项目负责人),(3/1,程序员 1)等等。

同样,显然这有很多条目,这是我关心的(在这种情况下,7 个日期 x 6 个位置,所以数据库中有 42 行)。希望这个对你有帮助。

4

1 回答 1

0

我不是很清楚,但是您是否知道开始工作时所需的职位清单,每个工作日的职位都一样吗?

如果是这样,请制作一个包含两列(jobID,position)的表“positions_required”,并在其中输入job_id和所需的职位。

这样,您将在另一个表中输入每个项目的工作日期。

您将有 3 个表,但只有 1 + m + n 记录(关系 1:m (jobs:positions) 和 1:n (jobs:dates) ))而不是 1+m*n (如您的场景)

于 2013-03-15T19:10:09.277 回答