0
使用MySQL Workbench中,我發現one_to_one表和one_to_many表的SQL是類似的。兩者都使用非唯一的外鍵來實現它們的關係。
CREATE TABLE IF NOT EXISTS `mydb`.`one_to_one` (
`id` INT NOT NULL,
`parent_id` INT NOT NULL,
PRIMARY KEY (`id`, `parent_id`),
INDEX `fk_one_to_one_parent1_idx` (`parent_id` ASC),
CONSTRAINT `fk_one_to_one_parent1`
FOREIGN KEY (`parent_id`)
REFERENCES `mydb`.`parent` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
因此,我可以插入在one_to_one錶行指向同一行中的父表就像one_to_many表。
這不是違反一對一關係嗎?還是應該使用唯一的外鍵定義一對一關係?
是的,如果你的目的是絕不允許在one_to_one表要輸入的PARENT_ID 1倍以上,也應該是唯一的約束,就像PK。我不確定爲什麼它會製作複合PK。你應該只需要這麼多。 – topshot