我正在尝试为我正在处理的计划应用程序设计数据库架构。我有办法做到这一点,但看起来有点笨重。我很好奇这是否是野兽的本性,因为涉及变量。
该应用程序类似于作业板,但具有调度组件。您可以创建一个工作(或“项目”),然后设置工作日期,并说明哪些职位对工作是开放的。其他人可以报名参加工作,或者被录用或被拒绝。
问题:
- 工作不会同时进行,因此可能会在两个月内分配10个工作日。
- 职位因工作而异。他们是从列表中挑选出来的,但是一份工作可能有10个独特的未平仓头寸,而另一份可能有5个。
我的想法,肯定是笨拙的是将“openPositions”作为一个表与[jobId,positionName,date]和第二个表与“jobApply”与[jobId,positionName,date,acceptFlag]。因此每个日期都有一个每个职位的条目。显然这会成倍增长(openPositions会有[#days * #positions]行)。我可以通过强迫每天注册一个职位的人来减少这一点,但我希望允许灵活安排。
这个项目整体上比我工作过的东西要大,但我很高兴能够解决这个问题。我很想听到任何想法,如果有必要澄清,请告诉我。
编辑:快速抽象的示例:
项目1
项目日期: 3 / 1,3 / 5,3 / 6,3 / 9,4 / 2,4 / 5,4 / 8
需要的职位:项目主管,程序员1,程序员2,Modeler,关卡设计师,实习生
所以我的(笨重的)版本会在openPositions中输入:
(3/1,项目负责人),(3/5,项目负责人),(3/6,项目负责人),(3/1,程序员1),然后继续。
同样,显然这有很多条目,这是我关心的(在这种情况下7个日期x 6个位置,因此数据库中有42行)。希望这有点帮助。
答案 0 :(得分:0)
对我来说不是很清楚,但是你知道工作开始时工作所需的职位列表,并且每个工作日的职位是否相同?
如果是这样,请制作一张桌子" positions_required"在其中有两列(jobID,position)并输入job_id和所需的位置。
这样您就可以将每个项目的工作日期输入到另一个表格中。
您将有3个表但只有1 + m + n个记录(关系1:m(作业:职位)和1:n(作业:日期)))而不是1 + m * n(如您的方案中所示)