0

私は SQL が初めてで、2 つのテーブル (プロジェクト、タスク) を持つデータベースを開発したいと考えています。一対多の関係。SQL (javaDB、Apache Derby) で制約を作成して、各プロジェクトに少なくとも 1 つ以上のタスクが必要であり、各タスクを最大 1 つのプロジェクトに割り当てる必要があることを確認するにはどうすればよいですか。これは一例ですが、主に1:サイトの強制参加に興味があります。SQL Anywhere では、次のような Check Exist 制約を使用できます: CHECK(EXIST(SELECT * FROM task WHERE project.project_pk = task.task_pk)。問題は、CHECK EXIST 制約が Apache Derby にないことです。

4

1 に答える 1

0

これらの制約の両方を同時に有効にすることはできません。

これらがどのように作成されるかを検討してください。最初に作成したものは、制約に失敗します。

通常、プロジェクトの例では親オブジェクトには、子に関する制約はないと思います。ただし、あなたの例ではタスクの子には、親への外部キーである NOT NULL 列が含まれます。

于 2013-07-06T12:38:13.583 に答える