与1:site强制参与的一对多关系

时间:2013-07-06 12:30:05

标签: sql javadb

我是SQL的新手,我想开发一个包含两个表(项目,任务)的数据库。一对多关系。如何在SQL(javaDB,Apache Derby)中创建约束,以检查每个项目是否必须至少有一个或多个任务,并且每个任务必须分配给最多一个项目。这只是一个例子,但我主要对1:site的强制参与感兴趣。 在SQL Anywhere中,我可以使用如下所示的Check Exist约束:CHECK(EXIST(SELECT * FROM task WHERE project.project_pk = task.task_pk)。问题是CHECK EXIST约束不在Apache Derby中。

1 个答案:

答案 0 :(得分:0)

你不能同时使这两个约束生效。

考虑如何创建它们 - 无论你先创建哪一个都会使约束失败。

我认为通常,在您的示例项目中,父对象不会对子项有约束。但是,在您的示例中,子项将包含NOT NULL列,该列是父项的外键。