いくつかの整合性制約によって管理される Oracle でテーブルを作成しようとしています。このテーブルは、架空の学生データベースで構成されています。データベースの規則の 1 つは、学生がジュニアとして分類されるためには、55 から 84 単位時間 (両端を含む) を修了している必要があるということです。
このルールを強制するために整合性制約を作成する必要がありますが、それを行う方法が完全にはわかりません。このような状況では、CHECK 制約が役立つと思います。
これまでのところ...
CONSTRAINT IC4 CHECK (hours >=55 AND hours <= 84),
このコードは有効ですが、学生の記録が 3 年生かどうかは判断できません。
私のテーブルセッティングは…
CREATE TABLE Students ( id INTEGER,
name CHAR(10) NOT NULL,
classification CHAR(10) NOT NULL,
hours INTEGER,
gpa NUMBER(3,2) NOT NULL,
mentor INTEGER);
挿入しようとすると...
INSERT INTO Students VALUES (50, 'Kim', 'junior', 34, 3.5, 40);
...レコードは「ジュニア」として保存しようとしているが、学生は 34 時間しか完了していないため、整合性制約に違反します。
これらのルールを強制する制約を作成するにはどうすればよいでしょうか?