我使用PostgreSQL数据库,其中包含学生,应用程序和工作提供数据。限制学生只能选择一个职位提供
是否有某种约束,这将意味着一个学生只能接受一个工作机会。因此,通过在“工作可接受”属性上选择“是”,他们就不能再为可能收到的其他工作做到这一点。
我使用PostgreSQL数据库,其中包含学生,应用程序和工作提供数据。限制学生只能选择一个职位提供
是否有某种约束,这将意味着一个学生只能接受一个工作机会。因此,通过在“工作可接受”属性上选择“是”,他们就不能再为可能收到的其他工作做到这一点。
这不完全是“约束”。它只是一个专栏。在Student
表中有一列名为AcceptedJobOffer
的列。这解决了直接的问题。另外,您要执行以下操作:
AcceptedJobOfferId int references JobOffers(JobOfferid)
而且,然后在Applications
创建唯一索引为StudentId, JobOfferId
,包括:
foreign key (StudentId, AcceptedJobOfferId) references Applications(StudentId, JobOfferId)
这确保了工作机会,是一个有效的工作,它引用一个应用程序(假设应用程序是一个需求 - 100%的时间 - 接受)。
感谢您的答复,我还是新来的!那么我把外键部分放在应用程序表中? – 2014-12-07 16:50:58
外键进入'Student'表。这是另一个参考,可确保接受的作业具有应用程序(如果这是数据结构的要求)。 – 2014-12-07 17:12:07
我想你已经某种职位申请表,其中有一个叫is_accepted
场或东西的顺序。您可以在其上添加一个exclude constraint。 Example here。
另一种方法是一个accepted_job_id
柱(理想的外键)添加到学生表,已被戈登建议。注意:如果这将涉及真实数据,而不是数据库课程中的理论数据,那么您可能根本不想强制执行约束。有时候,人们需要或需要多项工作,因此限制系统的方式使他们不能适用于多个工作,这引起了一种人为的限制,可能会回来,并且让你陷入困境。
谢谢,您的回复。这是一个数据库课程,它在简要中指出,只有一个工作机会可以被学生接受。 – 2014-12-07 16:51:56
@ elle_00:是的,这么想。 :-)如果相关的话,突出显示您的教授可能遇到的问题 - 您可能会获得奖励积分以预测可能出现的问题。 – 2014-12-07 17:00:17
加样品的输入和输出 – 2014-12-06 23:49:16