我正在为学校的健身房建立一个数据库,没有教练的“公开健身房”,但是你会注册开放健身房,就像其他课程一样。这是合理的,一个FK将不能是空的,因为它将是一个PK在父表,但如果有任何方法绕过这一点,任何帮助将是伟大的。
不确定我是否应该做一个额外的桌子,只是为了公开的健身房,不确定这是否是最理想的方式进行这方面。
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;
发布于 2017-04-11 00:56:22
我看到了问题的原因,因为您放置了一个空值,即''
,而不是null。
INSERT INTO Class VALUES ('10067','Beach Volleyball','Recreational','0','0','','000010','0006');
将''
更改为null
发布于 2017-04-10 03:22:44
如果您希望为"Open Gym“类拥有”Open Gym“类的外键的数据一致性好处,则可以在”讲师“表中添加一个虚拟行。
否则,如果您使instructor.InstructorId
为空,那么它也将工作。
https://stackoverflow.com/questions/43314480
复制相似问题