2014-12-06 20 views
0

我使用PostgreSQL数据库,其中包含学生,应用程序和工作提供数据。限制学生只能选择一个职位提供

是否有某种约束,这将意味着一个学生只能接受一个工作机会。因此,通过在“工作可接受”属性上选择“是”,他们就不能再为可能收到的其他工作做到这一点。

+0

加样品的输入和输出 – 2014-12-06 23:49:16

回答

0

这不完全是“约束”。它只是一个专栏。在Student表中有一列名为AcceptedJobOffer的列。这解决了直接的问题。另外,您要执行以下操作:

AcceptedJobOfferId int references JobOffers(JobOfferid) 

而且,然后在Applications创建唯一索引为StudentId, JobOfferId,包括:

foreign key (StudentId, AcceptedJobOfferId) references Applications(StudentId, JobOfferId) 

这确保了工作机会,是一个有效的工作,它引用一个应用程序(假设应用程序是一个需求 - 100%的时间 - 接受)。

+0

感谢您的答复,我还是新来的!那么我把外键部分放在应用程序表中? – 2014-12-07 16:50:58

+0

外键进入'Student'表。这是另一个参考,可确保接受的作业具有应用程序(如果这是数据结构的要求)。 – 2014-12-07 17:12:07

0

我想你已经某种职位申请表,其中有一个叫is_accepted场或东西的顺序。您可以在其上添加一个exclude constraintExample here

另一种方法是一个accepted_job_id柱(理想的外键)添加到学生表,已被戈登建议。注意:如果这将涉及真实数据,而不是数据库课程中的理论数据,那么您可能根本不想强制执行约束。有时候,人们需要或需要多项工作,因此限制系统的方式使他们不能适用于多个工作,这引起了一种人为的限制,可能会回来,并且让你陷入困境。

+0

谢谢,您的回复。这是一个数据库课程,它在简要中指出,只有一个工作机会可以被学生接受。 – 2014-12-07 16:51:56

+0

@ elle_00:是的,这么想。 :-)如果相关的话,突出显示您的教授可能遇到的问题 - 您可能会获得奖励积分以预测可能出现的问题。 – 2014-12-07 17:00:17