gpt4 book ai didi

mysql - 一对一和一对多关系

转载 作者:行者123 更新时间:2023-11-29 11:21:47 25 4
gpt4 key购买 nike

MySQL Workbench

使用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列的值是否存在于父表中。您可以通过在one_to_one表中为parent_id添加唯一索引来解决该问题。

ALTER TABLE `mydb`.`one_to_one` 
ADD UNIQUE INDEX `parent_id_UNIQUE` (`parent_id` ASC);

关于mysql - 一对一和一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38791962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com