特定の制限を持つテーブルを作成しようとしていますが、トリガーを使用することはできません。FK関係に基づく制約テーブル
私はOracle SQLを使用しています。
制限は以下のとおりです。
- のみ1クラスコースのIDあたり
- 学生は4コースの最大を許可1 BE教えて25人の学生
- 各コースの最大許可
- コースインストラクター
- 各学生のみ1つのメジャー
太字 2と3は問題があります。
CREATE TABLE STUDENT(
STUDENT_ID NUMERIC(9),
STUDENT_NAME VARCHAR(32) NOT NULL,
STUDENT_ADDRESS VARCHAR(50),
MAJOR VARCHAR(4),
CONSTRAINT student_id_pk PRIMARY KEY(STUDENT_ID)
);
CREATE TABLE COURSE(
COURSE_ID VARCHAR(6),
COURSE_TITLE VARCHAR(32) NOT NULL,
INSTRUCTOR_ID NUMERIC(3) UNIQUE,
CONSTRAINT course_id_pk PRIMARY KEY(COURSE_ID),
CONSTRAINT instructor_id_fk FOREIGN KEY (INSTRUCTOR_ID) REFERENCES INSTRUCTOR(INSTRUCTOR_ID)
);
CREATE TABLE INSTRUCTOR(
INSTRUCTOR_ID NUMERIC(3),
INSTRUCTOR_NAME VARCHAR(50) NOT NULL,
INSTRUCTOR_OFFICE VARCHAR(4),
CONSTRAINT instructor_id_pk PRIMARY KEY(INSTRUCTOR_ID)
);
CREATE TABLE STU_CRSE(
STUDENT_ID NUMERIC (9),
COURSE_ID VARCHAR(6),
GRADE CHAR(1),
CONSTRAINT grade_range CHECK(GRADE IN ('A','B','C','D','F')),
CONSTRAINT stu_crs_pk PRIMARY KEY (STUDENT_ID,COURSE_ID),
CONSTRAINT crs_fk FOREIGN KEY (COURSE_ID) REFERENCES COURSE(COURSE_ID),
CONSTRAINT str_fk FOREIGN KEY (STUDENT_ID) REFERENCES STUDENT(STUDENT_ID),
--
--Below are the constraints I'm having trouble with.
--
CONSTRAINT stu_limit CHECK (COUNT(STU_CRSE.STUDENT_ID)<5),
CONSTRAINT stu_crse_limit CHECK (count(STU_CRSE.STUDENT_ID,STU_CRSE.COURSE_ID)<26)
);
ながら、 rdbmsの理論は一般的な答えを許すでしょう、実践はすべてが平等ではないということを私に任せました。通常、mysqlにはまだチェック制約はありません。あなたのエンジンをより良い解決策に指定してください。 – Sebas
私はOracle SQL – NonCreature0714
トリガを使用しているか、制約をチェックするカスタム挿入プロシージャを記述しています。 – Rocki