1
如何模擬ISA類? 'Persoon'ISA'學生'或'Docent',你如何在MySQL中建模? 我試圖做一個Persoon類,有2個字段,然後你可以把學生/講解員的ID放在正確的字段中。另一個是零。使用外鍵在MySQL中建立一個ISA關係
CREATE TABLE IF NOT EXISTS `Docent` (
`docent_id` int(4) unsigned NOT NULL AUTO_INCREMENT,,
PRIMARY KEY (`docent_id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `Persoon` (
`naam` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
`wachtwoord` varchar(100) NOT NULL,
`student_id` int(4) unsigned DEFAULT NULL,
`docent_id` int(4) unsigned DEFAULT NULL,
PRIMARY KEY (`email`),
KEY `email` (`email`),
KEY `student_id` (`student_id`),
KEY `docent_id` (`docent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `Student` (
`student_id` int(4) unsigned NOT NULL AUTO_INCREMENT,
`studentnummer` int(20) NOT NULL,
`niveau` int(2) NOT NULL,
`notities` varchar(200) NOT NULL,
PRIMARY KEY (`student_id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
當添加外鍵時,如下所示,我得到#1452錯誤。我查了一下,但沒有找到解決辦法。
ALTER TABLE `Persoon` ADD CONSTRAINT `Persoons_student_id` FOREIGN KEY ( `student_id`) REFERENCES `software`.`Student` (`student_id`) ON DELETE CASCADE ON UPDATE CASCADE ;
ALTER TABLE `Persoon` ADD CONSTRAINT `Persoons_docent_id` FOREIGN KEY ( `docent_id`) REFERENCES `software`.`Docent` (`docent_id`) ON DELETE CASCADE ON UPDATE CASCADE ;
給出了這樣的錯誤:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`software`.<result 2 when explaining filename '#sql-c0_54eea'>, CONSTRAINT `Persoons_student_id` FOREIGN KEY (`student_id`) REFERENCES `Student` (`student_id`) ON DELETE CASCADE ON UPDATE CASC)