我正在尝试为我正在处理的计划应用程序设计数据库模式。我有办法做到这一点,但它似乎有点笨拙。由于涉及的变量,我很好奇这是否是野兽的本性。
该应用程序类似于工作板,但具有调度组件。您可以创建一个工作(或“项目”),然后设置工作日期,并说明该工作有哪些职位空缺。其他人可以报名参加这项工作,要么被雇用,要么被拒绝。
问题:
- 该工作不会同时运行日期,因此可能有 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 行)。希望这个对你有帮助。