2017-04-10 6 views
0

私は学校でジム用のデータベースを作成していますが、インストラクターを持たない「オープンジム」がありますが、他のクラスと同じようにオープンジムに登録することもできます。それは親テーブルのPKであるという点でFKがNULLになることはできませんが、これを回避する方法があれば、どんな助けも素晴らしいでしょう。MySQL - FOREIGN KEYをNULLに設定する方法はありますか?

開いているジムセッションのためだけに余分なテーブルを作成する必要があるかどうかは不明ですが、これが最も理想的な方法かどうかはわかりません。あなたが他のすべてのクラスのために持っている「オープン・ジム」クラスの外部キーを持つのデータの一貫性の利点の種類をしたい場合は

CREATE TABLE `instructor` (
`InstructorID` VARCHAR(50) NOT NULL, 
`First Name` VARCHAR(50) DEFAULT NULL, 
`Last Name` VARCHAR(50) DEFAULT NULL, 
PRIMARY KEY (InstructorID) 
) ENGINE=INNODB DEFAULT CHARSET=latin1; 

CREATE TABLE `class` (
`ClassID` DECIMAL(10,0) NOT NULL, 
`Name` VARCHAR(50) DEFAULT NULL, 
`Type` VARCHAR(50) DEFAULT NULL, 
`Discount Price` DECIMAL(10,0) DEFAULT NULL, 
`Regular Price` DECIMAL(10,0) DEFAULT NULL, 
`InstructorID` VARCHAR(50) DEFAULT NULL, 
`UnitID` DECIMAL(10,0) DEFAULT NULL, 
`CourseID` DECIMAL(10,0) NOT NULL, 
PRIMARY KEY (ClassID), 
FOREIGN KEY (UnitID) REFERENCES subunit(UnitID), 
FOREIGN KEY (InstructorID) REFERENCES instructor(InstructorID), 
FOREIGN KEY (CourseID) REFERENCES course(CourseID) 
) ENGINE=INNODB DEFAULT CHARSET=latin1; 
+2

その列にallow nullを追加するだけです – Beginner

+0

私は 'class'テーブルでDEFAULT NULLに列を設定しますが、値を挿入すると エラー:1452子行を追加または更新できません:外部キー制約が失敗しました( 'groupprojectbtm382'.'class'、CONSTRAINT' class_ibfk_2' FOREIGN KEY( 'InstructorID')REFERENCES' instructor'( 'InstructorID')) –

+0

それにnullを許可する?あなたのテーブル 'class'の' InstructorID' – Beginner

答えて

0

に動作しますinstructor.InstructorId NULL可能を作る場合は、''代わりのヌル

INSERT INTO Class VALUES ('10067','Beach Volleyball','Recreational','0','0','','000010','0006'); 

null

に変更 ''ある空の値を置くので、私はあなたの問題の原因を参照してください
+0

これは働いている!私は助けに感謝します。ありがとう –

+0

@softshellturtleこれがあなたを満足させ、あなたの問題を解決すれば、答えとしてマークしてください – Beginner

1

は、あなたはインストラクターのテーブルにダミー行を追加することができます。それ以外の場合は

、あなたも

+0

助けてくれてありがとう!病気のテストそれは –

関連する問題