私はしなければならないSQL Serverの:制約と外部キー
- は、特定の状況のエンティティ関係図を作成し、
- は図
私はSQL Serverを初めて使用していますが、プライマリキーCRN varchar(10)(UNN)
と2つの外部キーを持つテーブルclass
があります。emp_id varchar(20) (NN)
にはインストラクタとの1つの必須の関係があり、room_number varchar(5) (UNN)
にも1と義務的な関係はClassroom
です。
テーブルClass
のための私のコードは:私は取得しています
CREATE TABLE class
(
CRN varchar(10) UNSIGNED NOT NULL,
emp_id varchar(20),
room_number varchar(5),
enrollment smallint UNSIGNED NOT NULL,
CONSTRAINT pk_class PRIMARY KEY (CRN),
CONSTRAINT fk_class
FOREIGN KEY (emp_id) REFERENCES instructor (emp_id),
CONSTRAINT fk_class
FOREIGN KEY (room_number) REFERENCES classroom (room_number)
);
エラーは次のとおりです。
制約 "FK_CLASS" は既に存在します。 SQL文:
TABLEクラスを作成
(CRNのはvarchar(10)UNSIGNED NOT NULL、
EMP_IDのVARCHAR(20)、
room_numberのVARCHAR(5)、
登録SMALLINT UNSIGNED NOT NULLと、
CONSTRAINT pk_class PRIMARY KEY (CRN)、
CONSTRAINT fk_class FOREIGN KEY(EMP_ID)REFERENCESインストラクター(EMP_ID)、FOREIGN KEY(room_number)REFERENCES教室(room_number)fk_class
CONSTRAINT)[90045から193]
私はテーブルに2つの外部キーがあるようにする方法について多くの異なる例を見てきましたが、運がありませんでした。私は間違って何をしていますか?
各制約は、すべてのテーブルには、一意の名前を持つ必要があります同じように、固有の名前を持たなければなりません。たぶんfk_class_emp_idとfk_class_room_numberのようなものでしょうか? –
各主キーと外部キーの制約には一意の名前が必要です。両方の外部キー制約に同じことを指定しました。したがって、エラー。あなたの名前は一般的にはあまりにも曖昧で一般的です。しかし具体的には、あなたのFKの名前は、FK関係が何であるかを示すべきです... FK_class_instructor、およびFK_class_classroomは考えられる提案です。 – pmbAustin